基于Python实现的一个电影知识库QA系统
1. 实现效果
1. 图形展示
这是使用echarts.js 来实现的自定义页面的图谱展示,当然还有其他的库也能实现类似的效果,这里看各位的选择。
这里我在每个实体之间都实现了双层关系的绑定,这对于后面实现检索会有点帮助
2. 实体搜索展示
这里我做了一个搜索的功能,动态显示这个关系图谱。这个搜索会搜索所有实体,并展示出它对应的关系节点展示。
3. 节点全貌展示
这个节点全貌看起来就有点夸张了。数据太多了,然后也会有点卡。
3. 问答模块展示
2. 实现流程
1. 数据爬取
这里的数据爬取可以自己去任意找相关网站,只要能获取到电影、导演、演员这些信息就足够了。
这里我采集了一部分数据,自己写了爬虫,并将数据存储到了json文件中
2. 数据导入
数据爬取到了已经存放到了pre_data目录中,就只需要读取这个目录下的所有json文件并导入neo4j数据库即可。
这里我创建了双向的关系。
# 关系创建
# 电影和导演的关系
for i in director_nodes:
# 电影 --导演作品 > 导演
# 导演 --拍摄 > 电影
self.create_relation(movie_node, i, "导演作品")
self.create_relation(i, movie_node, "拍摄")
# 电影和演员的关系
for i in actor_nodes:
# 电影 --演绎作品 > 演员
# 演员 --主演 > 电影
self.create_relation(movie_node, i, "演绎作品")
self.create_relation(i, movie_node, "主演")
3. 实现问答脚本
先本地实现好一个问答脚本,方便之后给web进行调用
4. 构造web,整合接口
这一步就是自己去构建web了,可以自己使用如django、flask、tornoda等框架进行构建。