├── Clawer250.py
├── IntelligentCommunicationSystem.py
├── KnowledgeGraph.py
├── README.md
├── __init__.py
├── movieInfo.csv
├── selfDefiningFile.py
└── selfDefiningTxt.txt
/Clawer250.py:
--------------------------------------------------------------------------------
1 | # -*-coding = utf-8-*-
2 |
3 | # Author:qyan.li
4 | # Date:2022.3.11
5 | # Topic:借助于python爬取豆瓣前250电影的相关信息
6 |
7 |
8 | # 模块引入
9 | from bs4 import BeautifulSoup
10 | import urllib.request,urllib.error
11 | import re
12 | import time
13 | import csv
14 | import jieba
15 |
16 | # 全局变量
17 | titleList = []
18 | rateLst = []
19 | numLst = []
20 | infoLst = []
21 | directorLst = []
22 | actorLst = []
23 | timeLst = []
24 | countryLst = []
25 | typeLst = []
26 |
27 | # jieba中文分词
28 | def jiebaCut(text):
29 | '''
30 | :param text:待分词的字符串
31 | :return: 分词后的字符结果
32 | '''
33 | textCut = ' '.join(jieba.cut(text)).split(' ')
34 | ## 此处字符串处理必须保证'中国大陆'在原有列表中的位置(使用insert函数,而不是append函数)
35 | if '中国大陆' in text:
36 | index = textCut.index('中国')
37 | textCut.remove('中国')
38 | textCut.remove('大陆')
39 | textCut.insert(index,'中国大陆')
40 | return textCut[0]
41 |
42 | # 处理演员信息,获得主演中的第一个,否则赋值'演职人员不详'
43 | def ActorDealing(ActorInfo):
44 | '''
45 | :param ActorInfo:待处理的演职人员信息
46 | :return: 演职人员名称或'演职人员不详'
47 | '''
48 | if '主演:' in ActorInfo:
49 | ActorInfo = ActorInfo.strip('主演:')
50 | if ActorInfo == "":
51 | ActorInfo = '演职人员不详'
52 | else:
53 | ActorInfo = ActorInfo.split('/')[0] # 获得演职员表中的第一个
54 | if ActorInfo == '主' or ActorInfo == '主演':
55 | ActorInfo = '演职人员不详'
56 | return ActorInfo
57 |
58 |
59 | # 正则表达式匹配
60 | findTitle = re.compile(r'(.*?)') # 获取标题title
61 | '''
62 | 1. 注意从网页源码复制,而不是手敲 2. 内容匹配时注意忽略其中的换行符
63 | '''
64 | findContent = re.compile(r'
(.*?)
',re.S) # 获取电影主要内容
65 | findRate = re.compile(r'(.*?)') # 获取评分
66 | findNum = re.compile(r'(.*?)') # 获取评价人数
67 | findInfo = re.compile(r'(.*?)') # 获取电影简介
68 |
69 |
70 | # 请求获取网页信息
71 | def askURL(url):
72 | '''模拟浏览器进行网页请求,返回网页信息
73 | :param url:待爬取的网页链接
74 | :return: 获取到html网页信息
75 | '''
76 | head = {
77 | 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39'
78 | }
79 | request = urllib.request.Request(url,headers = head)
80 | html = ''
81 | try:
82 | responseInfo = urllib.request.urlopen(request)
83 | html = responseInfo.read().decode('utf-8')
84 | except urllib.error.URLError as e: # 异常处理机制
85 | if hasattr(e,'code'):
86 | print(e.code)
87 | if hasattr(e,'reason'):
88 | print(e.reason)
89 |
90 | return html
91 |
92 | # 解析网页获得目标信息
93 | def getData(html):
94 | '''网页内容解析,获取目标字段
95 | :param html: 获取到的html网页对象
96 | :return: None
97 | '''
98 |
99 | soup = BeautifulSoup(html,'lxml') # 网页解析
100 |
101 | ObjectPart = soup.find_all('ol',class_ = "grid_view")[0]
102 | for item in ObjectPart.find_all('li'):
103 | flag = 0
104 |
105 | item = str(item)
106 |
107 | movieDict = {}
108 |
109 | # title匹配,仅提取中文名称
110 | title = re.findall(findTitle,item)[0]
111 | titleList.append(title)
112 |
113 | # 电影内容内容匹配
114 | content = re.findall(findContent,item)[0]
115 | # 电影内容解析
116 | contentLst = content.split('\n')
117 | Time_Country_type = contentLst[2].replace(' ','').strip('/') # 去除所有的空格借助于replace(' ','')函数
118 | # 导演信息
119 | director = contentLst[1].replace(' ','').split('\xa0\xa0\xa0')[0].strip('导演:').split('/')[0]
120 | directorLst.append(director)
121 |
122 | # 演员信息(解决演员信息获取不到的问题)
123 | if len(contentLst[1].replace(' ','').split('\xa0\xa0\xa0')) == 1:
124 | actor = '演职人员不详'
125 | else:
126 | actor = contentLst[1].replace(' ','').split('\xa0\xa0\xa0')[1].strip('...
') # 多人之间以'/'区分
127 | actor = ActorDealing(actor)
128 | actorLst.append(actor)
129 |
130 | # 上映时间信息
131 | time = Time_Country_type.split('/')[0].strip('\xa0')
132 | ## 添加数据筛选代码:后续报错->[py2neo]TypeError: Neo4j does not support JSON parameters of type int64尚未解决
133 | # if '(中国大陆)' in time:
134 | # time = time.strip('(中国大陆)')
135 | timeLst.append(str(time))
136 |
137 | # 国家信息获取
138 | # country = Time_Country_type.split('/')[1].strip('\xa0')
139 | country = Time_Country_type.split('/')[1].replace('\xa0','')
140 | countryCut = jiebaCut(country)
141 | countryLst.append(countryCut)
142 |
143 | # 类型信息获取
144 | type = contentLst[2].strip('/').split('/')[-1].strip('\xa0').split(' ')[0] # 多类型之间以' '区分
145 | typeLst.append(type)
146 |
147 | # 电影评分内容匹配
148 | rate = re.findall(findRate,item)[0]
149 | rateLst.append(str(rate))
150 | # 电影评价人数匹配
151 | num = re.findall(findNum,item)[0].strip('评价')
152 | numLst.append(num)
153 | # 电影简介获取
154 | info = re.findall(findInfo,item)
155 | # 解决信息可能获取不到
156 | if len(info) != 0:
157 | info = info[0]
158 | else:
159 | info = '电影详细信息不详'
160 | infoLst.append(info)
161 |
162 |
163 |
164 | # python内容写入excel表格
165 | # csv文件写入-参考文献:https://blog.csdn.net/lbj1260200629/article/details/89600055
166 | def writeIntoCSVFile(fileName):
167 | '''
168 | :param fileName:待保存csv文件路径
169 | :return: None
170 | '''
171 | # newline = ''解决csv写入内容自动换行的问题
172 | # 参考文献:https://blog.csdn.net/weixin_44064937/article/details/105745398
173 | f = open(fileName,'w',newline = '',encoding = 'utf-8')
174 | csv_writer = csv.writer(f)
175 | # 构建列表头
176 | csv_writer.writerow(['title','rate','num','info','director','actor','time','country','type'])
177 | for i in range(len(titleList)):
178 | csv_writer.writerow([titleList[i],rateLst[i],numLst[i],infoLst[i],directorLst[i],actorLst[i],timeLst[i],countryLst[i],typeLst[i]])
179 | f.close()
180 |
181 |
182 |
183 | def ClawerCode():
184 | '''网络爬虫主体程序:获取电影各部分信息,写入csv文件
185 | :return: None
186 | '''
187 | # 比较网页url区别,多界面爬取
188 | for i in range(10):
189 | LoopUrl = 'https://movie.douban.com/top250?start=' + str(i*25) + '&filter=' # 网页切换
190 | time.sleep(2) # 爬虫速率控制(自己添加,不知道有没有用)
191 | html = askURL(LoopUrl)
192 | getData(html)
193 | print(i)
194 | writeIntoCSVFile(fileName='./movieInfo.csv')
195 |
196 | def main():
197 | ClawerCode()
198 |
199 | if __name__ == '__main__':
200 | main()
201 |
--------------------------------------------------------------------------------
/IntelligentCommunicationSystem.py:
--------------------------------------------------------------------------------
1 | # -*-coding = utf-8-*-
2 |
3 | # Author:qyan.li
4 | # Date:2022/5/19 17:46
5 | # Topic:借助于python语言构建基于知识图谱的电影智能问答系统
6 |
7 | '''
8 | 智能问答系统构建:
9 | 1. 网络爬虫 + 数据集构建
10 | 2. 电影知识图谱构建
11 | 3. 问句处理 + 查询返回
12 | '''
13 |
14 | # 相关模块导入
15 | import jieba.posseg as pseg
16 | import jieba
17 | from fuzzywuzzy import fuzz
18 | from py2neo import Graph
19 |
20 | ## 建立neo4j对象,便于后续执行cyphere语句
21 | graph = Graph("http://localhost:7474//browser/",auth = ('neo4j','999272@123xy'))
22 |
23 | ## 用户意图的判断
24 | #设计八类问题的匹配模板
25 | info = ['这部电影主要讲的是什么?','这部电影的主要内容是什么?','这部电影主要说的什么问题?','这部电影主要讲述的什么内容?']
26 | director = ['这部电影的导演是谁?','这部电影是谁拍的?']
27 | actor = ['这部电影是谁主演的?','这部电影的主演都有谁?','这部电影的主演是谁?','这部电影的主角是谁?']
28 | time = ['这部电影是什么时候播出的?','这部电影是什么时候上映的?']
29 | country = ['这部电影是那个国家的?','这部电影是哪个地区的?']
30 | type = ['这部电影的类型是什么?','这是什么类型的电影']
31 | rate = ['这部电影的评分是多少?','这部电影的评分怎么样?','这部电影的得分是多少分?']
32 | num = ['这部电影的评价人数是多少?','这部有多少人评价过?']
33 | # 设计八类问题的回答模板
34 | infoResponse = '{}这部电影主要讲述{}'
35 | directorResponse = '{}这部电影的导演为{}'
36 | actorResponse = '{}这部电影的主演为{}'
37 | timeResponse = '{}这部电影的上映时间为{}'
38 | countryResponse = '{}这部电影是{}的'
39 | typeResponse = '{}这部电影的类型是{}'
40 | rateResponse = '{}这部电影的评分为{}'
41 | numResponse = '{}这部电影评价的人数为{}人'
42 | # 用户意图模板字典
43 | stencil = {'info':info,'director':director,'actor':actor,'time':time,'country':country,'type':type,'rate':rate,'num':num}
44 | # 图谱回答模板字典
45 | responseDict = {'infoResponse':infoResponse,'directorResponse':directorResponse,'actorResponse':actorResponse,'timeResponse':timeResponse,'countryResponse':countryResponse,'typeResponse':typeResponse,'rateResponse':rateResponse,'numResponse':numResponse}
46 |
47 | # 由模板匹配程度猜测用户意图
48 | ## 模糊匹配参考文献:https://blog.csdn.net/Lynqwest/article/details/109806055
49 | def AssignIntension(text):
50 | '''
51 | :param text: 用户输入的待匹配文本
52 | :return: dict:各种意图的匹配值
53 | '''
54 | stencilDegree = {}
55 | for key,value in stencil.items():
56 | score = 0
57 | for item in value:
58 | degree = fuzz.partial_ratio(text,item)
59 | score += degree
60 | stencilDegree[key] = score/len(value)
61 |
62 | return stencilDegree
63 |
64 |
65 | ## 问句实体的提取
66 | ## 结巴分词参考文献:https://blog.csdn.net/smilejiasmile/article/details/80958010
67 | def getMovieName(text):
68 | '''
69 | :param text:用户输入内容
70 | :return: 输入内容中的电影名称
71 | '''
72 | movieName = ''
73 | jieba.load_userdict('./selfDefiningTxt.txt')
74 | words =pseg.cut(text)
75 | for w in words:
76 | ## 提取对话中的电影名称
77 | if w.flag == 'lqy':
78 | movieName = w.word
79 | return movieName
80 |
81 |
82 | ## cyphere语句生成,知识图谱查询,返回问句结果
83 | ## py2neo执行cyphere参考文献:https://blog.csdn.net/qq_38486203/article/details/79826028
84 | def SearchGraph(movieName,stencilDcit = {}):
85 | '''
86 | :param movieName:待查询的电影名称
87 | :param stencilDcit: 用户意图匹配程度字典
88 | :return: 用户意图分类,知识图谱查询结果
89 | '''
90 | classification = [k for k,v in stencilDcit.items() if v == max(stencilDcit.values())][0]
91 | ## python中执行cyphere语句实现查询操作
92 | cyphere = 'match (n:movie) where n.title = "' + str(movieName) + '" return n.' + str(classification)
93 | object = graph.run(cyphere)
94 | for item in object:
95 | result = item
96 | return classification,result
97 |
98 | ## 根据问题模板回答问题
99 | def respondQuery(movieName,classification,item):
100 | '''
101 | :param movieName: 电影名称
102 | :param classification: 用户意图类别
103 | :param item:知识图谱查询结果
104 | :return:none
105 | '''
106 | query = classification + 'Response'
107 | response = [v for k,v in responseDict.items() if k == query][0]
108 | print(response.format(movieName,item))
109 |
110 | def main():
111 | queryText = '肖申克的救赎这部电影的导演是谁?'
112 | movieName = getMovieName(queryText)
113 | dict = AssignIntension(queryText)
114 | classification,result = SearchGraph(movieName,dict)
115 | respondQuery(movieName,classification,result)
116 |
117 | if __name__ == '__main__':
118 | main()
119 |
120 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/KnowledgeGraph.py:
--------------------------------------------------------------------------------
1 | # -*-coding = utf-8-*-
2 |
3 | # Author:qyan.li
4 | # Date:2022/5/19 14:49
5 | # Topic:豆瓣电影数据解析,处理形成电影知识图谱
6 | # Reference:https://blog.csdn.net/black_lightning/article/details/114499690
7 |
8 |
9 | ## 相关模块导入
10 | import pandas as pd
11 | from py2neo import Graph,Node,Relationship
12 |
13 | ## 连接图形库,配置neo4j
14 | graph = Graph("http://localhost:7474//browser/",auth = ('neo4j','********'))
15 | # 清空全部数据
16 | graph.delete_all()
17 | # 开启一个新的事务
18 | graph.begin()
19 |
20 | ## 此处使用utf-8编码会报编码错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 56: invalid continuation byte
21 | ## 将此处编解码方式修改为gbk
22 | ## 修改文件的录入内容后,gbk编码报错,utf-8编码可以正常使用
23 |
24 | ## csv源数据读取
25 | storageData = pd.read_csv('./movieInfo.csv',encoding = 'utf-8')
26 | # 获取所有列标签
27 | columnLst = storageData.columns.tolist()
28 | # 获取数据数量
29 | num = len(storageData['title'])
30 |
31 | # KnowledgeGraph知识图谱构建(以电影为主体构建的知识图谱)
32 | for i in range(num):
33 |
34 | '''
35 | py2neo.errors.ClientError: [Request.InvalidFormat] Unable to deserialize request: Non-standard token 'NaN': enable JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS to allow
36 | at [Source: (org.eclipse.jetty.server.HttpInputOverHTTP); line: 1, column: 588]
37 | 问题在于‘黑客帝国’电影的演员表为nan,且在某种程度上无法通过重新写入,修改csv文件实现修改,解决办法:直接在程序运行时剔除
38 | '''
39 | if storageData['title'][i] == '黑客帝国2:重装上阵' or storageData['title'][i] == '黑客帝国3:矩阵革命':
40 | continue
41 |
42 | # 为每部电影构建属性字典
43 | dict = {}
44 | for column in columnLst:
45 | dict[column] = storageData[column][i]
46 | # print(dict)
47 | node1 = Node('movie',name = storageData['title'][i],**dict)
48 | graph.merge(node1,'movie','name')
49 |
50 | ## 上述代码已经成功构建所有电影的主节点,下面构建所有的分结点以及他们之间的联系
51 | # 去除所有的title结点
52 | dict.pop('title')
53 | ## 分界点以及关系
54 | for key,value in dict.items():
55 | ## 建立分结点
56 | node2 = Node(key,name = value)
57 | graph.merge(node2,key,'name')
58 | ## 创建关系
59 | rel = Relationship(node1,key,node2)
60 | graph.merge(rel)
61 |
62 |
63 | ## 到此为止,知识图谱基本已经构建完成,下面进行知识图谱结构的微调
64 |
65 | '''
66 | 小Tips:
67 | 1. 所有的node的相同relationship的对象只能有一个
68 | 2. 为增加电影之间的关联性,对于内容具有多个标签的,仅选取其中第一个
69 | '''
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Movie-Knowledge-QS-system-using-KnowledgeGraph
2 |
3 | ### 一、简介
4 | 利用python语言借助于知识图谱搭建电影知识问答系统
5 | ### 二、文件结构
6 | + Clawer250.py 爬虫代码爬取豆瓣250网页电影知识
7 | + movieInfo.csv 爬取数据构建电影知识数据集文件
8 | + IntelligentCommunicationSystem.py 基于电影数据和知识图谱搭建知识问答系统
9 | + KnowledgeGraph.py 知识图谱搭建
10 | + selfDefiningFile.py 生成结巴分词自定义词典
11 | + selfDefiningTxt.txt jieba分词自定义词典
12 | ### 三、调用方式:
13 | + 修改KnowledgeGraph.py中的用户名和密码,运行代码,生成知识图谱
14 | + 运行IntelligentCommunicationSystem.py完成电影知识问答
15 | ### 四、博文链接:
16 | https://blog.csdn.net/DALEONE/article/details/125116858?spm=1001.2014.3001.5501
17 |
--------------------------------------------------------------------------------
/__init__.py:
--------------------------------------------------------------------------------
1 | # -*-coding = utf-8-*-
2 |
3 | # Author:qyan.li
4 | # Date:2022/5/19 10:11
5 | # Topic:
6 | # Reference:
7 |
8 |
9 |
10 |
11 |
12 |
13 | def main():
14 | pass
15 |
16 |
17 | if __name__ == '__main__':
18 | main()
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/movieInfo.csv:
--------------------------------------------------------------------------------
1 | title,rate,num,info,director,actor,time,country,type
2 | 肖申克的救赎,9.7,2620022人,希望让人自由。,弗兰克·德拉邦特FrankDarabont,蒂姆·罗宾斯TimRobbins,1994,美国,犯罪
3 | 霸王别姬,9.6,1945391人,风华绝代。,陈凯歌KaigeChen,张国荣LeslieCheung,1993,中国大陆,剧情
4 | 阿甘正传,9.5,1969789人,一部美国近现代史。,罗伯特·泽米吉斯RobertZemeckis,汤姆·汉克斯TomHanks,1994,美国,剧情
5 | 泰坦尼克号,9.4,1930036人,失去的才是永恒的。 ,詹姆斯·卡梅隆JamesCameron,莱昂纳多·迪卡普里奥Leonardo,1997,美国,剧情
6 | 这个杀手不太冷,9.4,2121141人,怪蜀黍和小萝莉不得不说的故事。,吕克·贝松LucBesson,让·雷诺JeanReno,1994,法国,剧情
7 | 美丽人生,9.6,1210487人,最美的谎言。,罗伯托·贝尼尼RobertoBenigni,罗伯托·贝尼尼RobertoBeni,1997,意大利,剧情
8 | 千与千寻,9.4,2046309人,最好的宫崎骏,最好的久石让。 ,宫崎骏HayaoMiyazaki,柊瑠美RumiHîragi,2001,日本,剧情
9 | 辛德勒的名单,9.6,1009807人,拯救一个人,就是拯救整个世界。,史蒂文·斯皮尔伯格StevenSpielberg,连姆·尼森LiamNeeson,1993,美国,剧情
10 | 盗梦空间,9.4,1887666人,诺兰给了我们一场无法盗取的梦。,克里斯托弗·诺兰ChristopherNolan,莱昂纳多·迪卡普里奥Le,2010,美国,剧情
11 | 忠犬八公的故事,9.4,1291529人,永远都不能忘记你所爱的人。,莱塞·霍尔斯道姆LasseHallström,理查·基尔RichardGe,2009,美国,剧情
12 | 星际穿越,9.4,1578424人,爱是一种力量,让我们超越时空感知它的存在。,克里斯托弗·诺兰ChristopherNolan,马修·麦康纳MatthewMc,2014,美国,剧情
13 | 楚门的世界,9.3,1500971人,如果再也不能见到你,祝你早安,午安,晚安。,彼得·威尔PeterWeir,金·凯瑞JimCarrey,1998,美国,剧情
14 | 海上钢琴师,9.3,1535462人,每个人都要走一条自己坚定了的路,就算是粉身碎骨。 ,朱塞佩·托纳多雷GiuseppeTornatore,蒂姆·罗斯TimRoth,1998,意大利,剧情
15 | 三傻大闹宝莱坞,9.2,1712805人,英俊版憨豆,高情商版谢耳朵。,拉库马·希拉尼RajkumarHirani,阿米尔·汗AamirKhan,2009,印度,剧情
16 | 机器人总动员,9.3,1209003人,小瓦力,大人生。,安德鲁·斯坦顿AndrewStanton,本·贝尔特BenBurtt,2008,美国,科幻
17 | 放牛班的春天,9.3,1194724人,天籁一般的童声,是最接近上帝的存在。 ,克里斯托夫·巴拉蒂ChristopheBarratier,让-巴蒂斯特·莫尼,2004,法国,剧情
18 | 无间道,9.3,1212240人,香港电影史上永不过时的杰作。,刘伟强,刘德华,2002,中国香港,剧情
19 | 疯狂动物城,9.2,1725584人,迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。,拜伦·霍华德ByronHoward,金妮弗·,2016,美国,喜剧
20 | 大话西游之大圣娶亲,9.2,1401871人,一生所爱。,刘镇伟JeffreyLau,周星驰StephenChow,1995,中国香港,喜剧
21 | 熔炉,9.3,853689人,我们一路奋战不是为了改变世界,而是为了不让世界改变我们。,黄东赫Dong-hyukHwang,孔侑YooGong,2011,韩国,剧情
22 | 控方证人,9.6,460700人,比利·怀德满分作品。,比利·怀尔德BillyWilder,泰隆·鲍华TyronePower,1957,美国,剧情
23 | 教父,9.3,869491人,千万不要记恨你的对手,这样会让你失去理智。,弗朗西斯·福特·科波拉FrancisFordCoppola,马龙·白兰度M,1972,美国,剧情
24 | 当幸福来敲门,9.2,1391712人,平民励志片。 ,加布里尔·穆奇诺GabrieleMuccino,威尔·史密斯WillSmith,2006,美国,剧情
25 | 触不可及,9.3,973290人,满满温情的高雅喜剧。,奥利维·那卡什OlivierNakache,演职人员不详,2011,法国,剧情
26 | 怦然心动,9.1,1667798人,真正的幸福是来自内心深处。,罗伯·莱纳RobReiner,玛德琳·卡罗尔MadelineCarroll,2010,美国,剧情
27 | 龙猫,9.2,1156211人,人人心中都有个龙猫,童年就永远不会消失。,宫崎骏HayaoMiyazaki,日高法子NorikoHidaka,1988,日本,动画
28 | 末代皇帝,9.3,777968人,“不要跟我比惨,我比你更惨”再适合这部电影不过了。,贝纳尔多·贝托鲁奇BernardoBertolucci,尊龙JohnLone,1987,英国,剧情
29 | 寻梦环游记,9.1,1487987人,死亡不是真的逝去,遗忘才是永恒的消亡。,李·昂克里奇LeeUnkrich,演职人员不详,2017,美国,喜剧
30 | 蝙蝠侠:黑暗骑士,9.2,963526人,无尽的黑暗。,克里斯托弗·诺兰ChristopherNolan,克里斯蒂安·贝尔Christ,2008,美国,剧情
31 | 活着,9.3,750231人,张艺谋最好的电影。,张艺谋YimouZhang,葛优YouGe,1994,中国大陆,剧情
32 | 哈利·波特与魔法石,9.1,1045912人,童话世界的开端。,ChrisColumbus,DanielRadcliffe,2001,美国,奇幻
33 | 指环王3:王者无敌,9.3,729133人,史诗的终章。,彼得·杰克逊PeterJackson,伊利亚·伍德ElijahWood,2003,美国,剧情
34 | 乱世佳人,9.3,629646人,Tomorrow is another day.,维克多·弗莱明VictorFleming,费,1939,美国,剧情
35 | 素媛,9.3,617921人,受过伤害的人总是笑得最开心,因为他们不愿意让身边的人承受一样的痛苦。,李濬益Jun-ikLee,薛景求Kyung-guSol,2013,韩国,剧情
36 | 飞屋环游记,9.1,1209803人,最后那些最无聊的事情,才是最值得怀念的。 ,彼特·道格特PeteDocter,爱德,2009,美国,剧情
37 | 摔跤吧!爸爸,9.0,1437555人,你不是在为你一个人战斗,你要让千千万万的女性看到女生并不是只能相夫教子。,涅提·蒂瓦里NiteshTiwari,阿米尔·汗AamirKhan,2016,印度,剧情
38 | 我不是药神,9.0,1916881人,对我们国家而言,这样的电影多一部是一部。,文牧野MuyeWen,徐峥ZhengXu,2018,中国大陆,剧情
39 | 何以为家,9.1,942846人,凝视卑弱生命,用电影改变命运。,娜丁·拉巴基NadineLabaki,扎因·拉费阿Zainal-Rafeea,2018,黎巴嫩,剧情
40 | 十二怒汉,9.4,433610人,1957年的理想主义。 ,SidneyLumet,亨利·方达HenryFonda,1957,美国,剧情
41 | 哈尔的移动城堡,9.1,916081人,带着心爱的人在天空飞翔。,宫崎骏HayaoMiyazaki,倍赏千惠子ChiekoBaishô,2004,日本,动画
42 | 少年派的奇幻漂流,9.1,1244721人,瑰丽壮观、无人能及的冒险之旅。,李安AngLee,苏拉·沙玛SurajSharma,2012,美国,剧情
43 | 鬼子来了,9.3,563959人,对敌人的仁慈,就是对自己残忍。,姜文WenJiang,姜文WenJiang,2000,中国大陆,剧情
44 | 大话西游之月光宝盒,9.0,1117834人,旷古烁今。,刘镇伟JeffreyLau,周星驰StephenChow,1995,中国香港,喜剧
45 | 猫鼠游戏,9.1,885306人,骗子大师和执著警探的你追我跑故事。 ,史蒂文·斯皮尔伯格StevenSpielberg,莱昂纳多·迪卡普里奥L,2002,美国,传记
46 | 天空之城,9.1,751073人,对天空的追逐,永不停止。 ,宫崎骏HayaoMiyazaki,田中真弓MayumiTanaka,1986,日本,动画
47 | 天堂电影院,9.2,629468人,那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰。,朱塞佩·托纳多雷GiuseppeTornatore,菲利普·努瓦雷Philipp,1988,意大利,剧情
48 | 闻香识女人,9.1,793708人,史上最美的探戈。,马丁·布莱斯MartinBrest,阿尔·帕西诺AlPacino,1992,美国,剧情
49 | 指环王2:双塔奇兵,9.2,680784人,承前启后的史诗篇章。,彼得·杰克逊PeterJackson,伊利亚·伍德ElijahWood,2002,美国,剧情
50 | 钢琴家,9.3,547596人,音乐能化解仇恨。,罗曼·波兰斯基RomanPolanski,艾德里安·布洛迪AdrienBrod,2002,英国,剧情
51 | 让子弹飞,8.9,1519877人,你给我翻译翻译,神马叫做TMD的惊喜。,姜文WenJiang,姜文WenJiang,2010,中国大陆,剧情
52 | 罗马假日,9.1,877043人,爱情哪怕只有一天。,威廉·惠勒WilliamWyler,奥黛丽·赫本AudreyHepburn,1953,美国,喜剧
53 | 海蒂和爷爷,9.3,491449人,如果生活中有什么使你感到快乐,那就去做吧!不要管别人说什么。,阿兰·葛斯彭纳AlainGsponer,阿努克·斯特芬AnukSteffen,2015,德国,剧情
54 | 指环王1:护戒使者,9.1,769365人,传说的开始。,彼得·杰克逊PeterJackson,伊利亚·伍德ElijahWood,2001,新西兰,剧情
55 | 黑客帝国,9.1,766080人,视觉革命。,安迪·沃卓斯基AndyWachowski,演职人员不详,1999,美国,动作
56 | 大闹天宫,9.4,386217人,经典之作,历久弥新。,万籁鸣LaimingWan,邱岳峰YuefengQiu,1961(中国大陆),1964,剧情
57 | 教父2,9.2,492563人,优雅的孤独。,弗朗西斯·福特·科波拉FrancisFordCoppola,阿尔·帕西诺A,1974,美国,剧情
58 | 死亡诗社,9.1,641075人,当一个死水般的体制内出现一个活跃的变数时,所有的腐臭都站在了光明的对面。,彼得·威尔PeterWeir,罗宾·威廉姆斯RobinWilliams,1989,美国,剧情
59 | 辩护人,9.2,542483人,电影的现实意义大过电影本身。,杨宇硕Woo-seokYang,宋康昊Kang-hoSong,2013,韩国,剧情
60 | 狮子王,9.1,758213人,动物版《哈姆雷特》。,RogerAllers,乔纳森·泰勒·托马,1994,美国,动画
61 | 绿皮书,8.9,1464239人,去除成见,需要勇气。,彼得·法雷里PeterFarrelly,维果·莫腾森ViggoMortensen,2018,美国,剧情
62 | 搏击俱乐部,9.0,774012人,邪恶与平庸蛰伏于同一个母体,在特定的时间互相对峙。,大卫·芬奇DavidFincher,爱德华·诺顿EdwardNorton,1999,美国,剧情
63 | 饮食男女,9.2,553946人,人生不能像做菜,把所有的料都准备好了才下锅。,李安AngLee,郎雄SihungLung,1994,中国台湾,剧情
64 | 美丽心灵,9.1,699871人,爱是一切逻辑和原由。,朗·霍华德RonHoward,罗素·克劳RussellCrowe,2001,美国,传记
65 | 本杰明·巴顿奇事,9.0,898892人,在时间之河里感受溺水之苦。,大卫·芬奇DavidFincher,凯特·布兰切特CateBlanchett,2008,美国,剧情
66 | 窃听风暴,9.2,513186人,别样人生。,弗洛里安·亨克尔·冯·多纳斯马尔克FlorianHenckelvonDonnersmarck &n...