Showing
1 changed file
with
137 additions
and
85 deletions
... | @@ -7,13 +7,13 @@ MOVIE = db.movie | ... | @@ -7,13 +7,13 @@ MOVIE = db.movie |
7 | cur = MOVIE.find() | 7 | cur = MOVIE.find() |
8 | audience = {} | 8 | audience = {} |
9 | for c in cur: | 9 | for c in cur: |
10 | - audience[c["name"]] = c["audience"] | 10 | + audience[c["name"]] = c["audience"] |
11 | 11 | ||
12 | data = { | 12 | data = { |
13 | "명량": "최민식,류승룡,조진웅,김명곤,진구,이정현,권율,노민우,이승준,박보검,김원해,이해영,장준녕,김길동,김강일,강태영,김민석,박노식,최덕문,조복래,문영동,이주실,주석태,고경표,김태훈,한이진,신유람", | 13 | "명량": "최민식,류승룡,조진웅,김명곤,진구,이정현,권율,노민우,이승준,박보검,김원해,이해영,장준녕,김길동,김강일,강태영,김민석,박노식,최덕문,조복래,문영동,이주실,주석태,고경표,김태훈,한이진,신유람", |
14 | "극한직업": "류승룡,이하늬,이동휘,공명,진선규,홍은진,양현민,장진희,오정세,이중옥,송영규,신하균,김의성,김종수,허준석", | 14 | "극한직업": "류승룡,이하늬,이동휘,공명,진선규,홍은진,양현민,장진희,오정세,이중옥,송영규,신하균,김의성,김종수,허준석", |
15 | "신과함께-죄와 벌": "하정우,차태현,주지훈,김향기,마동석,김동욱,도경수,오달수,임원희,장광,정해균,김수안,정지훈,예수정,이준혁", | 15 | "신과함께-죄와 벌": "하정우,차태현,주지훈,김향기,마동석,김동욱,도경수,오달수,임원희,장광,정해균,김수안,정지훈,예수정,이준혁", |
16 | - "국제시장": " 황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,정영기,맹세창,박재우,김재철", | 16 | + "국제시장": "황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,정영기,맹세창,박재우,김재철", |
17 | "베테랑": "황정민,유아인,유해진,오달수,장윤주,김시후,오대환,정웅인,정만식,송영창,진경,유인영,박소담,이동휘,배성우,천호진", | 17 | "베테랑": "황정민,유아인,유해진,오달수,장윤주,김시후,오대환,정웅인,정만식,송영창,진경,유인영,박소담,이동휘,배성우,천호진", |
18 | "도둑들": "김윤석,김혜수,이정재,전지현,김해숙,오달수,김수현,최덕문,최진호,예수정", | 18 | "도둑들": "김윤석,김혜수,이정재,전지현,김해숙,오달수,김수현,최덕문,최진호,예수정", |
19 | "7번방의 선물": "류승룡,박신혜,갈소원,오달수,박원상,김정태,정만식,김기천,조덕현,조재윤,박길수", | 19 | "7번방의 선물": "류승룡,박신혜,갈소원,오달수,박원상,김정태,정만식,김기천,조덕현,조재윤,박길수", |
... | @@ -73,70 +73,70 @@ data = { | ... | @@ -73,70 +73,70 @@ data = { |
73 | "더 킹": "조인성,정우성,배성우,류준열,김의성,이석호,김민재,정성모,정은채,김소진,황승언,이주연,박정민,김규선,남명렬,오대환,정원중,정인기,이열음", | 73 | "더 킹": "조인성,정우성,배성우,류준열,김의성,이석호,김민재,정성모,정은채,김소진,황승언,이주연,박정민,김규선,남명렬,오대환,정원중,정인기,이열음", |
74 | "완득이": "김윤석,유아인,조병찬,조세현,강별,박효주,김영재,김상호,박수영,김동영", | 74 | "완득이": "김윤석,유아인,조병찬,조세현,강별,박효주,김영재,김상호,박수영,김동영", |
75 | "완벽한 타인": "유해진,조진웅,이서진,염정아,김지수,송하윤,윤경호,지우", | 75 | "완벽한 타인": "유해진,조진웅,이서진,염정아,김지수,송하윤,윤경호,지우", |
76 | - # "타워": "", | 76 | + "타워": "설경구,손예진,김상경,차인표,조민아,김인권,도지한,안성기,이한위,김성오,송재호,박철민,권현상,전배수,이창용,이주실,김수진,권태원,전국향,정인기", |
77 | - # "투사부일체": "", | 77 | + "투사부일체": "정준호,정웅인,김상중,박용식,최윤영,박은비,나현주,김동성,고은영,이배훈,박기연,김성근,유인나,이희석,일호,최선영,박민애,정다은,최영미,이송,최영진,김지헌,이혁수,이기열,강성필,한효주", |
78 | - # "독전": "", | 78 | + "독전": "조진웅,류준열,김주혁,김성령,박해준,차승원,진서연,이주영,서현우,강승현,정가람,김동영,금새록,정준원", |
79 | - # "추격자": "", | 79 | + "추격자": "김윤석,엄중호,하정우,서영희,박효주,김유정,최정우,정인기", |
80 | - # "공작": "", | 80 | + "공작": "황정민,이성민,조진웅,주지훈,박혜영,김지나,김소진,양현민,정기섭,김응수,최병모,정소리,최정인,곽자형,권범택,김인우,엄지만", |
81 | - # "바람과 함께 사라지다": "", | 81 | + "바람과 함께 사라지다": "차태현,오지호,민효린,성동일,고창석,송종호,이채영,김길동,김향기,신정근,천보근", |
82 | - # "님아, 그 강을 건너지 마오": "", | 82 | +# "님아, 그 강을 건너지 마오": "", #영화배우가 아님 |
83 | - # "봉오동 전투": "", | 83 | + "봉오동 전투": "유해진,류준열,조우진,강민재,오승호,박지환,최유화,성유빈,이재인,홍상표,원풍연", |
84 | - # "조선명탐정 : 각시투구꽃의 비밀": "", | 84 | + "조선명탐정 : 각시투구꽃의 비밀": "김명민,한지민,오달수,김호연,최무성,우현,이재용,예수정,정인기", |
85 | - # "군도: 민란의 시대": "", | 85 | + "군도: 민란의 시대": "하정우,강동원,조진웅,마동석,정만식,김성균,주진모,이경영,이성민,윤지혜,김재영,노남석,송영창,김병옥,임현성", |
86 | - # "남산의 부장들": "", | 86 | + "남산의 부장들": "이병헌,이성민,곽도원,이희준,김소진,김승훈,박성근,서현우,지현준,박지일,이태형,주석태,이도국,김민상", |
87 | - # "범죄와의 전쟁: 나쁜놈들 전성시대": "", | 87 | + "범죄와의 전쟁: 나쁜놈들 전성시대": "최민식,하정우,신수정,조진웅,마동석,곽도원,김성균,송영창,김종수,권태원,김종구", |
88 | - # "신세계": "", | 88 | + "신세계": "이정재,최민식,황정민,박성웅,송지효,정영기,김홍파,장광,김윤성,최일화,권태원", |
89 | - # "도가니": "", | 89 | + "도가니": "정유미,공유,허재호,임현성,최진호,이예나,김현수,장광,전국환,엄효섭,남명렬,이장유,박혜진,김민상", |
90 | - # "내 아내의 모든 것": "", | 90 | + "내 아내의 모든 것": "임수정,이선균,류승룡", |
91 | - # "판도라": "", | 91 | + "판도라": "김남길,김영애,문정희,정진영,이경영,강신일,김대명,유승목,김주현,김명민,박선희,공정환,주석태,송철호,김영웅,김태훈", |
92 | - # "나쁜 녀석들: 더 무비": "", | 92 | + "나쁜 녀석들: 더 무비": "마동석,김상중,김아중,장기용,박형수,박상욱,김인우,지승현", |
93 | - # "가문의 위기(가문의 영광2)": "", | 93 | +# "가문의 위기(가문의 영광2)": "신현준,김수미,김원희,정준하,임형준,공형진,탁재훈,정호빈,김해곤", # 겹치는 배우가 100위까지 아직 없음 |
94 | - # "연가시": "", | 94 | + "연가시": "김명민,문정희,김동완,이하늬,강신일,송영창,조덕현,최정우,전국환,정인기", |
95 | - # "강철비": "", | 95 | + "강철비": "정우성,곽도원,김갑수,김의성,이경영,조우진,정원중,김명곤,박은혜,김지호,안미나,원진아", |
96 | - # "강철중: 공공의 적 1-1": "", | 96 | + "강철중: 공공의 적 1-1": "설경구,정재영,김영필,강신일,유해진,탁트인,이상현,이재원,조한영,박창용,박태훈,김건호,김재득,임장현,정원중", |
97 | - # "아가씨": "", | 97 | + "아가씨": "김민희,김태리,하정우,조진웅,김해숙,문소리,김인우,이용녀", |
98 | - # "말아톤": "", | 98 | + "말아톤": "조승우,김미숙,이기영,백성현,안내상", |
99 | - # "용의자": "", | 99 | + "용의자": "공유,박희순,조성하,유다인,김성균,조재윤,김민재,김의성,송재림,최종률,남보라,기주봉,박지일", |
100 | - # "건축학개론": "", | 100 | + "건축학개론": "엄태웅,한가인,이제훈,배수지,고준희,조정석,신예진,유연석,조현철,김의성,이승호,박수영", |
101 | "댄싱퀸": "황정민,엄정화,정성화,오나라,박정민,박사랑,안은정,라미란,이대연,이한위,최우리,권병길,서동원", | 101 | "댄싱퀸": "황정민,엄정화,정성화,오나라,박정민,박사랑,안은정,라미란,이대연,이한위,최우리,권병길,서동원", |
102 | - # "7급 공무원": "", | 102 | + "7급 공무원": "김하늘,강지환,임성현,유승목,강규영,강신일,장남열,김형범,장영남", |
103 | - # "우리 생애 최고의 순간": "", | 103 | + "우리 생애 최고의 순간": "문소리,김정은,엄태웅,김지영,조은지,강재원,이미도,조영진,이봉규,정석용,하정우,정세형,김종언,김혜진,강선희,이수정,최욱,남궁은숙", |
104 | - # "꾼": "", | 104 | + "꾼": "현빈,유지태,배성우,박성웅,나나,안세하,최덕문,허성태", |
105 | - # "타짜-신의 손": "", | 105 | + "타짜-신의 손": "최승현,신세경,곽도원,유해진,김윤석,이하늬,김인권,이경영,고수희,오정세,박효주,이준혁,이동휘,김원해,고준,조경현,박수영,김민상", |
106 | - # "박수건달": "", | 106 | + "박수건달": "박신양,김정태,엄지원,정혜영,김성균,최일화,최지호,김형범,장원종", |
107 | - # "조선명탐정 : 사라진 놉의 딸": "", | 107 | + "조선명탐정 : 사라진 놉의 딸": "김명민,오달수,이연희,조관우,정원중,최무성,우현,황정민", |
108 | - # "역린": "", | 108 | + "역린": "현빈,정재영,조정석,한지민,조재현,박성웅,김성령,정은채,강민지,석현,송영창,김대명,천보근,서이숙,성유빈,전국향", |
109 | - # "남한산성": "", | 109 | + "남한산성": "이병헌,김윤석,박해일,고수,박희순,조우진,허성태,곽자형,박지일", |
110 | - # "암수살인": "", | 110 | + "암수살인": "김윤석,주지훈,문정희,진선규,이유준,김종수,권회수,허진,배해선,이봉련,정기섭,원현준,정종준", |
111 | - # "국가부도의 날": "", #100위 | 111 | + "국가부도의 날": "김혜수,유아인,허준호,조우진,김기현,염혜란,조한철,엄효섭,장성범,동하,박진주,전배수,김민상", #100위 |
112 | - # "쌍화점": "", | 112 | + "쌍화점": "조인성,주진모,송지효,임주환,여욱환,심지호,송중기,노민우,조강현,김태수,최승희,이승구,권태원", |
113 | - # "신기전": "", | 113 | + "신기전": "정재영,한은정,허준호,안성기,김명수,신정근,조원희,이광희,박윤희,조주현,최만수,박보람,박성배,이승근,이연우,김진규,이기오,주부진,이정인,김용재,김서현", |
114 | - # "82년생 김지영": "", | 114 | + "82년생 김지영": "정유미,공유,김미경,공민정,박성연,이봉련,김성철,이얼,손성찬,강애심,김정영", |
115 | - # "귀향": "", | 115 | + "귀향": "손숙,강하나,최리,임성철,정무성,류신,서미지,정인기,오지혜,김시은,이민영,이수현,이승현", |
116 | - # "신의 한 수": "", | 116 | + "신의 한 수": "정우성,안성기,이범수,김인권,이시영,안길강,최진혁,강다혜,유재상,유순철,김명수,안서현,이용녀,김소진", |
117 | - # "태풍": "", | 117 | + "태풍": "이정재,이미연,장동건,김혜정,김원진,추현경,허욱,신성일,김형찬,홍의정,김이호,나수원,박태호,김경환,김상용,민성주,민지환,박광설,유승권,박병렬,김철준,이주헌,박찬영", |
118 | - # "부러진 화살": "", | 118 | + "부러진 화살": "안성기,박원상,나영희,김지호,신종훈,김준배,김응수", |
119 | - # "끝까지 간다": "", | 119 | + "끝까지 간다": "이선균,조진웅,신정근,정만식,신동미,김동영,박보검,주석태,허정은", |
120 | - # "스파이": "", | 120 | + "스파이": "설경구,문소리,고창석,한예리,오대환,라미란,서승인,이대수,이성제,최승현,정인기", |
121 | - # "그것만이 내 세상": "", | 121 | + "그것만이 내 세상": "이병헌,윤여정,박정민,김성령,최리,백현진,김서원", |
122 | - # "돈": "", | 122 | + "돈": "류준열,유지태,조우진,손종학,신재민,원진아,정만식,임세미,김민재,김재영,김종수,진선규", |
123 | - # "악인전": "", | 123 | + "악인전": "마동석,김무열,김성규,강문봉,문동혁,오희준,유승목,최민철,김승현,우상전,김윤성,허동원", |
124 | - # "이끼": "", | 124 | + "이끼": "정재영,박해일,유준상,유선,허준호,유해진,김상호,김준배,강신일,이철민,박정재,최근현,윤아름,오순태,김철현", |
125 | - # "한반도": "", | 125 | + "한반도": "조재현,안성기,차인표,문성근,강신일,이윤주,최종원,최연식,이승철,백일섭,이한위,박길수,최일화", |
126 | - # "포화속으로": "", | 126 | + "포화속으로": "차승원,권상우,최승현,김승우,문재원,김혜성,신현탁,신경선,추종범,김윤성,김한준,윤승훈,김호원", |
127 | - # "시동": "", | 127 | + "시동": "마동석,박정민,정해인,염정아,최성은,김종수,윤경호,김경덕", |
128 | - # "아이 캔 스피크": "", | 128 | + "아이 캔 스피크": "나문희,이제훈,박철민,염혜란,성유빈,김소진,이상희,정연주,이지훈,손숙,이재인,최수인", |
129 | - # "마녀": "", | 129 | + "마녀": "김다미,조민수,박희순,최우식,김하나,정다은,김기훈,최정우,고민시,오미희,김병옥,이주원", |
130 | - # "탐정: 리턴즈": "", | 130 | + "탐정: 리턴즈": "권상우,성동일,김수영,김승필,이광수,서영희,이일화,남명렬,손담비,최성원,박성일,오희준,정연주,김성규", |
131 | - # "공공의 적 2": "", | 131 | + "공공의 적 2": "설경구,정준호,유해진,강경덕,박웅,강신일,홍지연,전미애,박태수,남성훈,한재준,서영민,박상욱,최수경,변희봉", |
132 | - # "퀵": "", | 132 | + "퀵": "고창석,강예원,이민기,김인권,이건우,이새별,김병철,김재화,오정세,전국환,유승목,윤제문", |
133 | - # "친절한 금자씨": "", | 133 | + "친절한 금자씨": "이영애,최민식,권예영,김시후,남일우,김병옥,오달수,이승신,김부선,라미란,최정우,김유정", |
134 | - # "감기": "", | 134 | + "감기": "장혁,수애,박민하,남문철,유해진,이희준,김기현,이상엽,박효주,박정민,최병모,차인표,박예슬", |
135 | - # "스물": "", | 135 | + "스물": "김우빈,이준호,강하늘,오현경,정소민,이유비,정주연", |
136 | - # "거북이 달린다": "", | 136 | + "거북이 달린다": "김윤석,정경호,견미리,선우선,최수현,최권,신정근,이무생,유하복,차은재,김희원", |
137 | - # "헬로우 고스트": "", | 137 | + "헬로우 고스트": "차태현,강예원,이문수,고창석,장영남,천보근", |
138 | - # "하모니": "", | 138 | + "하모니": "김윤진,나문희,강예원,이다희,장영남,박준면,정수영,임채연,이선주,김호연,정혜원,신정원,박선희,지성원,박혜진", |
139 | - # "오싹한 연애": "", | 139 | + "오싹한 연애": "손예진,이민기,신동훈,조아라,이현진,이미도,황승언,김현숙", |
140 | # "방자전": "", | 140 | # "방자전": "", |
141 | # "형": "", | 141 | # "형": "", |
142 | # "마더": "", | 142 | # "마더": "", |
... | @@ -211,16 +211,41 @@ data = { | ... | @@ -211,16 +211,41 @@ data = { |
211 | # "명당": "", | 211 | # "명당": "", |
212 | } | 212 | } |
213 | 213 | ||
214 | -names = [] | 214 | +def named_union(graph1, graph2): #두 그래프 합성 |
215 | + A = graph1.copy() | ||
216 | + B = graph2.copy() | ||
217 | + Aname = A.vs["name"][:] | ||
218 | + Bname = B.vs["name"][:] | ||
219 | + Aes = A.es[:] | ||
220 | + Bes = B.es[:] | ||
221 | + Anams = set(Aname) | ||
222 | + Bnams = set(Bname) | ||
223 | + A.add_vertices(list(Bnams - Anams)) | ||
224 | + B.add_vertices(list(Anams - Bnams)) | ||
225 | + nams = sorted(Anams | Bnams) | ||
226 | + Aind = [nams.index(nm) for nm in A.vs['name']] | ||
227 | + Bind = [nams.index(nm) for nm in B.vs['name']] | ||
228 | + A = A.permute_vertices(Aind) | ||
229 | + B = B.permute_vertices(Bind) | ||
230 | + Z = A | B | ||
231 | + Z.vs['name'] = nams | ||
232 | + Z.vs["label"] = Z.vs["name"][:] | ||
233 | + return Z | ||
234 | + | ||
215 | weight = {} | 235 | weight = {} |
216 | keys = [] | 236 | keys = [] |
237 | +n = 0 | ||
238 | +top = data["명량"].split(",") | ||
239 | +G = Graph.Full(len(top)) | ||
240 | +G.vs["name"] = top[:] | ||
241 | +G.vs["label"] = G.vs["name"][:] | ||
242 | +del data["명량"] | ||
217 | for movie in data: | 243 | for movie in data: |
218 | actors = data[movie].split(",") | 244 | actors = data[movie].split(",") |
219 | - newActors = [] | 245 | + g = Graph.Full(len(actors)) |
220 | - for actor in actors: | 246 | + g.vs["name"] = actors[:] |
221 | - if(actor not in names): | 247 | + g.vs["label"] = g.vs["name"][:] |
222 | - newActors.append(actor) | 248 | + G = named_union(G, g) |
223 | - names += newActors | ||
224 | 249 | ||
225 | for i in range(0, len(actors)-1): | 250 | for i in range(0, len(actors)-1): |
226 | for j in range(i+1, len(actors)): | 251 | for j in range(i+1, len(actors)): |
... | @@ -235,21 +260,48 @@ for movie in data: | ... | @@ -235,21 +260,48 @@ for movie in data: |
235 | else: | 260 | else: |
236 | weight[join]["audience"] += audience[movie] | 261 | weight[join]["audience"] += audience[movie] |
237 | weight[join]["count"] += 1 | 262 | weight[join]["count"] += 1 |
238 | -#G = Graph.Full(len(names)) | 263 | + # n += 1 |
239 | -#G.vs["name"] = names | 264 | + # if(n > 1): |
240 | -#G.vs["label"] = G.vs["name"] | 265 | + # break |
241 | 266 | ||
242 | -topten = sorted(keys, key=lambda n: weight[n]["audience"] / weight[n]["count"], reverse=True)[:10] | 267 | +topten = sorted(keys, key=lambda n: weight[n]["count"], reverse=True)[:10] |
243 | for t in topten: | 268 | for t in topten: |
244 | print(t, weight[t]) | 269 | print(t, weight[t]) |
245 | 270 | ||
246 | -# out = plot(G, | 271 | +names = G.vs["name"][:] |
247 | -# bbox = (2000, 2000), | 272 | +edge_weight = [1] * len(G.es) |
248 | -# vertex_size = 20, | 273 | +for k in keys: |
249 | -# vertex_label_size = 12, | 274 | + if(weight[k]["count"] == 1): |
250 | -# vertex_label_dist = 1, | 275 | + continue |
251 | -# vertex_label_angle = 2, | 276 | + [s, e] = k.split(",") |
252 | -# autocurve = True, | 277 | + sIdx, eIdx = names.index(s), names.index(e) |
253 | -# layout = G.layout("fr") | 278 | + edges = G.es.select(_between = ([sIdx], [eIdx])) |
254 | -# ) | 279 | + for e in edges: |
255 | -# out.save("test.png") | 280 | + edge_weight[e.index] = weight[k]["count"] |
281 | + | ||
282 | +names1, names2 = G.vs["name"][:], G.vs["name"][:] | ||
283 | + | ||
284 | +bn = G.betweenness(weights=edge_weight) | ||
285 | +print(sorted(bn, reverse=True)[:10]) | ||
286 | +print(sorted(names1, key=lambda n: bn[names2.index(n)], reverse=True)[:10]) | ||
287 | + | ||
288 | +degree = G.degree() | ||
289 | +print(sorted(degree, reverse=True)[:10]) | ||
290 | +print(sorted(names1, key=lambda n: degree[names2.index(n)], reverse=True)[:10]) | ||
291 | + | ||
292 | +cn = G.closeness(weights=edge_weight) | ||
293 | +print(sorted(cn, reverse=True)[:10]) | ||
294 | +print(sorted(names1, key=lambda n: cn[names2.index(n)], reverse=True)[:10]) | ||
295 | + | ||
296 | +out = plot(G, | ||
297 | + bbox = (2500, 2500), | ||
298 | + vertex_size = 15, | ||
299 | + vertex_label_size = 9, | ||
300 | + vertex_label_dist = 1, | ||
301 | + vertex_label_angle = 2, | ||
302 | + #autocurve = True, | ||
303 | + #layout = G.layout("fr") | ||
304 | + ) | ||
305 | +out.save("test.png") | ||
306 | + | ||
307 | +#C:\Users\ghdms\2014104137\소스코드\movie_full.py | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment