🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
还是参考徐阿衡的博客[项目实战--知识图谱初探](http://www.shuang0420.com/2017/09/05/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98-%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1%E5%88%9D%E6%8E%A2/)。 [TOC] 这篇比较全面的介绍了知识图谱的构建过程。这里并没有从头构建知识图谱。如果要从头做的话,得构建分布式爬虫,作者用的分布式爬虫是`scrapy-redis`,我还没有研究`scrapy-redis`怎么安装部署。作者提供了爬取、清理之后的数据,所以暂时先不部署。这些数据是从[中财网数据引擎](http://data.cfi.cn/cfidata.aspx)和[巨潮资讯](http://www.cninfo.com.cn/cninfo-new/index)爬取的上市公司高管信息(所属公司、学历、性别、出生年)。 [TOC] 作者提供了两种知识图谱的存储方式:图数据库`neo4j`和关系型数据库`MySQL`。我在本地部署,就使用了关系型数据库`MySQL`。 克隆下作者在`Github`上的项目: `git clone https://github.com/Shuang0420/knowledge_graph_demo.git` 作者提供了在`MySQL`的建库表的脚本: ``` CREATE DATABASE IF NOT EXISTS `knowledge_graph` /*!40100 DEFAULT CHARACTER SET latin1 */; USE knowledge_graph; CREATE TABLE IF NOT EXISTS company ( id varchar(20) PRIMARY KEY, label varchar(20), create_time datetime, update_time datetime, industry varchar(20), first_register_addr varchar(100), security_short_name varchar(20), legal_entity varchar(20), manager varchar(20), code int NOT NULL UNIQUE KEY, company_address varchar(100), register_number varchar(50), zipcode varchar(20), company_name varchar(100)) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS management ( company_id varchar(20) NOT NULL, title varchar(50), person_id varchar(20) NOT NULL, type varchar(20) NOT NULL, create_time datetime, update_time datetime, UNIQUE KEY (person_id, company_id)) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS spo ( subj varchar(100), pred varchar(100), obj varchar(500), type varchar(20), create_time datetime, update_time datetime, UNIQUE KEY (subj, pred, obj)) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS person ( id varchar(20) PRIMARY KEY, label varchar(20), create_time datetime, update_time datetime, education varchar(50), birth varchar(20), name varchar(20), sex varchar(20), UNIQUE KEY (birth, sex, name)) DEFAULT CHARSET=utf8; LOAD DATA LOCAL INFILE 'company_node.txt' INTO TABLE company CHARACTER SET utf8 FIELDS TERMINATED BY '\t' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'person_node.txt' INTO TABLE person CHARACTER SET utf8 FIELDS TERMINATED BY '\t' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'management_edge.txt' INTO TABLE management CHARACTER SET utf8 FIELDS TERMINATED BY '\t' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'spo.txt' INTO TABLE spo CHARACTER SET utf8 FIELDS TERMINATED BY '\t' IGNORE 1 LINES; ``` 这里涉及将四个文本文件 'company_node.txt'、 'person_node.txt'、'management_edge.txt'、'spo.txt'导入到数据库中。 这个`sql`的执行脚本`dump.sh`如下: `mysql -uroot -p密码 < dump.sql` 部署好数据库后,就可以建立知识图谱的应用了。 [TOC] 作者使用`python`的`flask`、`d3`作为可视化web应用的开发工具。作者已经提供了web应用,所以只要更改数据库配置文件`./visualization/server/config.py`、安装`./visualization/server/models.py`上的工具就可以了。启动服务`python run_server.py` 如果想知道公司(例如公司代码为600276)的高管信息,在浏览器输入: `http://localhost:8080/api/v1?company=600276`,可看到下图, ![](https://box.kancloud.cn/b74d9f369bdcb4c4470fac2beb538714_916x604.png) 如果想知道某一位高管的信息,输入: ![](https://box.kancloud.cn/bc03cee4ac062c16e6e989100152faac_265x375.png) 如果想做完整的知识图谱,得从爬虫做起。例如,先部署一个分布式爬虫。