Code Monkey home page Code Monkey logo

moviegraph's Introduction

MovieGraph

基于Neo4j的电影知识图谱的设计与实现

项目简介

本项目使用了Neo4j作为知识图谱的存储引擎,使用Python实现对电影及演员信息的知识图谱展示及查询与回答。主要使用了flask作为后端框架,sk-learn作为作为训练模型,jieba库作为中文分词模块,BeautifulSoup4库作为网页爬取模块,py2neo库作为Neo4j的Python接口.

项目结构

  • flaskr: 项目源码
    • data:

      • Neo4j_import: 爬取的数据和字典和问题模板,使用前请将Neo4j_import中的数据放到Neo4j的import目录下
      • question: 用于存放问题模板
      • cypher.txt: 用于存放Cypher查询语句,请在将Neo4j_import中的数据放到Neo4j的import目录下后在Neo4j中逐一运行导入命令
      • vocabulary: 用于存放训练词典
      • user_dict.txt: 由generate_dict.py生成的用户字典
    • spider: 爬虫模块,用于爬取电影信息,保存到Neo4j数据库中

      • data_crawler.py: 爬虫主程序
      • proxy_pool.py: 用于获取代理
      • start.bat: 用于启动爬虫
      • data_deal.py: 数据处理模块,用于将爬取的数据处理成Neo4j数据库所需格式
      • generate_dict.py: 用于生成用户字典

      注意:

      • 使用前提:使用spider时,前提需要克隆proxy_pool 库,同时安装redis数据库,并修改proxy_pool中的settings.py 中的数据库连接信息,proxy_pool库需要安装在项目的同级目录下
      • 使用方法:先打开redis服务器,再运行start.bat ,最后运行data_crawler.py,注意:根据需要修改data_crawler.py中的url地址
      • 爬虫由于设置了等待时间防止封IP,需要大量的时间才能爬取到足量的数据,所以该爬虫仅供学习参考,不建议自行爬取数据
      • 爬虫完成后如果导入报错可以根据需要运行data_deal.py文件,注意修改data_deal.py中的路径
      • 爬虫导入成功后需要运行generate_dict.py生成用户字典
      • 爬虫爬取的数据仅用于学习,请勿用于商业用途
    • static: 用于存放静态文件,如html,css,js等,其中使用了bootstrap和jquery和neovis.js

      • kg.js: 知识图谱的js文件,使用了neovis.js,主要实现了知识图谱可视化
      • qa.js: 问答系统的js文件,使用了xmlhttp进行ajax请求,主要实现了数据交换
    • templates: 用于存放html模板,其中index.html为欢迎界面,search.html为知识图谱页面,QA.html为问答系统界面

    • utils: 用于存放一些工具函数,如Neo4j数据库连接和查询工具,数据处理,问题分类和问题模板等

      • preprocess_data.py: 用于数据的处理,读取问题模板,对接受的问题进行词性划分等,主要使用了jieba库
      • question_classification.py: 使用了sk-learn朴素贝叶斯进行训练并使用TF-IDF进行特征提取和jieba库进行切割以完成对问题的分类
      • question_template.py: 定义了问题模板,用于对问题进行匹配,返回对应问题模板
      • query.py: 用于连接数据库并执行查询,返回查询结果
    • __init__.py: 应用工厂文件,用于创建应用

    • app.py: 应用文件,运行可启动本项目,注意:运行前确保Neo4j数据库已连接且地址端口localhost:5000未被占用

    • test: 测试用文件夹,用于测试

    • README.md: 项目说明文件

    • requirements.txt: 项目依赖文件 注意:请使用pip install -r requirements.txt安装相关依赖库

重要提醒: 由于jieba分词模块的词性标注功能不稳定,将会导致外国人名无法被正确识别,所以本项目中使用了自定义的词典,请将jieba库的__init__.py 中的

re_han_internal = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&\._]+)")

改成

re_han_internal = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&\._·]+)")

参考

simple_movie_qa_with_KG

moviegraph's People

Contributors

regan-law avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.