首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >手把手教学构建证券知识图谱/知识库(含码源):网页获取信息、设计图谱、Cypher查询、Neo4j关系可视化展示

手把手教学构建证券知识图谱/知识库(含码源):网页获取信息、设计图谱、Cypher查询、Neo4j关系可视化展示

原创
作者头像
汀丶人工智能
发布于 2023-07-06 16:29:00
发布于 2023-07-06 16:29:00
66400
代码可运行
举报
文章被收录于专栏:NLP/KGNLP/KG
运行总次数:0
代码可运行

手把手教学构建证券知识图谱/知识库(含码源):网页获取信息、设计图谱、Cypher查询、Neo4j关系可视化展示

demo展示:

  • 代码结构
代码语言:txt
AI代码解释
复制
stock-knowledge-graph/
├── __init__.py
├── extract.py  # extract html pages for executives information
├── stock.py  # get stock industry and concept information
├── build_csv.py  # build csv files that can import neo4j
├── import.sh
├── data
│   ├── stockpage.zip
│   ├── executive_prep.csv
│   ├── stock_industry_prep.csv
│   ├── stock_concept_prep.csv
│   └── import  # import directory
│       ├── concept.csv
│       ├── executive.csv
│       ├── executive_stock.csv
│       ├── industry.csv
│       ├── stock.csv
│       ├── stock_concept.csv
│       └── stock_industry.csv
├── design.png
├── result.txt
├── img
│   ├── executive.png
│   └── executive_detail.png
├── import.report
├── README.md
└── requirements.txt

码源下载见文末跳转

码源下载见文末跳转

1.数据源

本项目需要用到两种数据源:一种是公司董事信息,另一种是股票的行业以及概念信息。

  • 公司董事信息

这部分数据包含在data目录下的stockpage压缩文件中,⾥面的每一个文件是以XXXXXX.html命名,其中XXXXXX是股票代码。这部分数据是由同花顺个股的⽹页爬取而来的,执行解压缩命令unzip stockpage.zip即可获取。比如对于600007.html,这部分内容来自于http://stockpage.10jqka.com.cn/600007/company/#manager

  • 股票行业以及概念信息

这部分信息也可以通过⽹上公开的信息得到。在这里,我们使用Tushare工具来获得,详细细节见之后具体的任务部分。

2.从⽹页中抽取董事会的信息

在我们给定的html文件中,需要对每一个股票/公司抽取董事会成员的信息,这部分信息包括董事会成员“姓名”、“职务”、“性别”、“年龄”共四个字段。首先,姓名和职务的字段来自于:

在这里总共有12位董事成员的信息,都需要抽取出来。另外,性别和年龄字段也可以从下附图里抽取出来:

最后,生成一个 executive_prep.csv文件,格式如下:

高管姓名

性别

年龄

股票代码

职位

朴明志

51

600007

董事⻓/董事

高燕

60

600007

执⾏董事

刘永政

50

600008

董事⻓/董事

···

···

···

···

···

注:建议表头最好用相应的英文表示。

3.获取股票行业和概念的信息

分类数据_提供股票的分类信息数据,从股票类型的不同角度进行数据分类,在一些统计套利方法的应用中,时常会以股票的分类来做切入,比如对某些行业或概念进行阶段统计来决定近期的交易策略等。TuShare 提供的分类数据主要包括以下类别:

  • 行业分类
  • 概念分类
  • 地域分类
  • 中小板分类
  • 创业板分类
  • 风险警示板分类
  • 沪深 300 成份股及权重
  • 上证 50 成份股
  • 中证 500 成份股
  • 终止上市股票列表
  • 暂停上市股票列表
  • 行业分类

在现实交易中,经常会按行业统计股票的涨跌幅或资金进出,本接口按照 sina 财经对沪深股票进行的行业分类,返回所有股票所属行业的信息。考虑到是一次性在线获取数据,调用接口时会有一定的延时,请在数据返回后自行将数据进行及时存储。sina 财经提供的行业分类信息大致如下图所示:

返回值说明:

  • code:股票代码
  • name:股票名称
  • c_name:行业名称

对于这部分信息,我们可以利⽤工具Tushare来获取,官网为http://tushare.org/ ,使用pip命令进行安装即可。下载完之后,在python里即可调用股票行业和概念信息。参考链接:http://tushare.org/classifying.html#id2

通过以下的代码即可获得股票行业信息,并把返回的信息直接存储在stock_industry_prep.csv文件里。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import tushare as ts
df = ts.get_industry_classified()
# TODO 保存到"stock_industry_prep.csv"

类似的,可以通过以下代码即可获得股票概念信息,并把它们存储在stock_concept_prep.csv文件里。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
df = ts.get_concept_classified()
# TODO 保存到“stock_concept_prep.csv”

4.设计知识图谱

设计一个这样的图谱:

  • 创建“人”实体,这个人拥有姓名、性别、年龄
  • 创建“公司”实体,除了股票代码,还有股票名称
  • 创建“概念”实体,每个概念都有概念名
  • 创建“行业”实体,每个行业都有⾏业名
  • 给“公司”实体添加“ST”的标记,这个由LABEL来实现
  • 创建“人”和“公司”的关系,这个关系有董事长、执行董事等等
  • 创建“公司”和“概念”的关系
  • 创建“公司”和“行业”的关系

设计结果如下:

注:实体名字和关系名字需要易懂,对于上述的要求,并不一定存在唯一的设计,只要能够覆盖上面这些要求即可。“ST”标记是⽤用来刻画⼀个股票严重亏损的状态,这个可以从给定的股票名字前缀来判断,背景知识可参考百科ST股票,“ST”股票对应列表为'*ST', 'ST', 'S*ST', 'SST'。

ST 股票,意即“特别处理”的股票。该政策针对的对象是出现财务状况或其他状况异常的。1998年4月22日,沪深交易所宣布,将对财务状况或其它状况出现异常的上市公司股票交易进行特别处理(Special Treatment),由于“特别处理”,在简称前冠以 ST,因此这类股票称为 ST 股。

5.创建可以导⼊Neo4j的csv文件

在前两个任务里,我们已经分别生成了 executive_prep.csv, stock_industry_prep.csv, stock_concept_prep.csv,但这些文件不能直接导入到Neo4j数据库。所以需要做⼀些处理,并生成能够直接导入Neo4j的csv格式。

我们需要生成这⼏个文件:executive.csv, stock.csv, concept.csv, industry.csv, executive_stock.csv,

stock_industry.csv, stock_concept.csv。对于格式的要求,请参考:https://neo4j.com/docs/operations-manual/current/tutorial/import-tool/

6.利用上面的csv文件生成数据库

代码语言:shell
AI代码解释
复制
neo4j_home$ bin/neo4j-admin import --id-type=STRING --nodes executive.csv --nodes stock.csv --nodes concept.csv --nodes industry.csv --relationships executive_stock.csv --relationships stock_industry.csv --relationships stock_concept.csv

这个命令会把所有的数据导入到Neo4j中,数据默认存放在 graph.db 文件夹里。如果graph.db文件夹之前已经有数据存在,则可以选择先删除再执行命令。

把Neo4j服务重启之后,就可以通过localhost:7474观察到知识图谱了。

注意:这些csv要放到~/.config/Neo4j Desktop/Application/neo4jDatabases/database-xxxx/installation-4.0.4下,即与bin文件夹同级,否则需要绝对路径

简单查询命令

代码语言:shell
AI代码解释
复制
# 查询node
MATCH (n:Concept) RETURN n LIMIT 25
# 查询relationship
MATCH p=()-[r:industry_of]->() RETURN p LIMIT 100

7.基于构建好的知识图谱,通过编写Cypher语句回答如下问题

(1) 有多少个公司目前是属于 “ST”类型的?

match (n:ST) return count(distinct(n)) 104

(2) “600519”公司的所有独立董事人员中,有多少人同时也担任别的公司的独立董事职位?

MATCH (m:Company{code:'600519'})<-:employ_of{jobs:'独立董事'}-(n:Person)-:employ_of{jobs:'独立董事'}->(q:Company) RETURN count(distinct(n))

3

(3) 有多少公司既属于环保行业,又有外资背景?

MATCH (:Concept{name:'外资背景'})<-:concept_of-(m:Company)-:industry_of-(:Industry{name:'环保行业'}) RETURN count(distinct(m))

0

(4) 对于有锂电池概念的所有公司,独立董事中女性人员比例是多少?

MATCH (m:Concept{name:'锂电池'})<-:concept_of-(n:Company)<-:employ_of{jobs:'独立董事'}-(p:Person{gender:'女'}) MATCH (m:Concept{name:'锂电池'})<-:concept_of-(n:Company)<-:employ_of{jobs:'独立董事'}-(p2:Person)

RETURN count(distinct(p))*1.0/count(distinct(p2))

0.3541666666666667

8.构建人的实体时,重名问题具体怎么解决?

(1) 最好的方式是用身份证或者其他唯一能确定人的方式去关联。

(2) 在本例中,我用 姓名、年龄、性别3个字段做唯一的,将这3个字段做md5。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
知识图谱 | Neo4j初相识
为什么要了解知识图谱、neo4j呢?前几天在会议上,领导说接下来我们部分将重点发力知识图谱的工作,解决业务域的问题,让每位同事都去了解下,等过段时间要做汇报工作,每位讲讲自己的学习心得,算是输出。
努力在北京混出人样
2020/02/19
1.6K0
知识图谱 | Neo4j初相识
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
知识图谱存储方式主要包含资源描述框架(Resource Description Framework,RDF)和图数据库(Graph Database)。
汀丶人工智能
2023/07/08
1.9K0
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
如何使用 Neo4J 和 Transformer 构建知识图谱
在这篇文章中,我将展示如何使用经过优化的、基于转换器的命名实体识别(NER)以及 spaCy 的关系提取模型,基于职位描述创建一个知识图谱。这里介绍的方法可以应用于其他任何领域,如生物医学、金融、医疗保健等。
深度学习与Python
2022/04/19
2.6K0
如何使用 Neo4J 和 Transformer 构建知识图谱
知识图谱(2)——neo4j的用法
先了解各个命令的用法 创建一个节点 CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 }) 创建一个节点,三个属性 MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee; 用于连接节点和关系 创造更多节点
DC童生
2018/08/27
6070
知识图谱(2)——neo4j的用法
InteractiveGraph 实现酷炫关系图谱之前瞻
本文代码和数据等,会等下一篇实战文章更新后一起放在 github/DesertsX 上,敬请期待!
古柳_DesertsX
2019/05/06
1.4K0
InteractiveGraph 实现酷炫关系图谱之前瞻
​知识图谱里的知识存储:neo4j的介绍和使用
一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联)。当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能。
磐创AI
2019/08/06
11K1
​知识图谱里的知识存储:neo4j的介绍和使用
知识图谱系列之Neo4J
上次写了一篇文章提到了一个有关知识图谱的概念,在本公众号中,并未写有关这方面的文章,那么这一节从python与neo4j方向来共同学习知识图谱的一些实战操作,后续会补充理论方面的知识!
公众号guangcity
2019/09/20
1.8K0
知识图谱系列之Neo4J
【教程】Neo4j知识图谱安装与使用教程
Neo4j是一个最流行且高性能的NOSQL图形数据库,它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。
用户10984773
2025/07/03
6060
【教程】Neo4j知识图谱安装与使用教程
NLP和知识图谱-neo4j安装和使用
参考链接:https://www.cnblogs.com/ljhdo/p/5521577.html
opencode
2022/12/26
8740
NLP和知识图谱-neo4j安装和使用
[python案例]金融知识图谱构建流程
查询与“平安银行”相关信息(所属概念板块、发布公告、属于深股通/沪股通、股东信息)
机器学习AI算法工程
2020/04/26
2.3K0
通用知识图谱导入Neo4j——以ownthink为例
这个网站里有很多通用知识图谱。尤其是网站整合的ownthikhttps://kg.ownthink.com/还可以进行可视化检索。
轻吻晴雯
2019/06/27
5.8K0
使用GraphRAG+LangChain+Ollama:LLaMa 3.1跑通知识图谱与向量数据库集成(Neo4j)
我将向你展示如何使用 LLama 3.1(一个本地运行的模型)来执行GraphRAG操作,总共就50号代码。。。
AI进修生
2024/12/02
1.7K0
使用GraphRAG+LangChain+Ollama:LLaMa 3.1跑通知识图谱与向量数据库集成(Neo4j)
知识图谱之《海贼王-ONEPICE》领域图谱项目实战(含码源):数据采集、知识存储、知识抽取、知识计算、知识应用、图谱可视化、问答系统(KBQA)等
《海贼王》(英文名ONE PIECE) 是由日本漫画家尾田荣一郎创作的热血少年漫画,因为其宏大的世界观、丰富的人物设定、精彩的故事情节、草蛇灰线的伏笔,受到世界各地的读者欢迎,截止2019年11月7日,全球销量突破4亿6000万本^1,并被吉尼斯世界纪录官方认证为“世界上发行量最高的单一作者创作的系列漫画”^2。
汀丶人工智能
2023/07/07
1.1K0
知识图谱之《海贼王-ONEPICE》领域图谱项目实战(含码源):数据采集、知识存储、知识抽取、知识计算、知识应用、图谱可视化、问答系统(KBQA)等
知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)
存储大规模知识图谱,且便于对知识进行更新,但当知识图谱查询的选择性较大时,查询性能明显下降
汀丶人工智能
2024/01/20
8.3K0
知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)
项目实战:如何构建知识图谱
作者丨徐阿衡 学校丨卡耐基梅隆大学硕士 研究方向丨QA系统 实践了下怎么建一个简单的知识图谱,两个版本,一个从 0 开始(start from scratch),一个在 CN-DBpedia 基础上补充,把 MySQL,PostgreSQL,Neo4j 数据库都尝试了下。自己跌跌撞撞摸索可能踩坑了都不知道,欢迎讨论。 1. CN-DBpedia 构建流程 知识库可以分为两种类型,一种是以 Freebase,Yago2 为代表的 Curated KBs,主要从维基百科和 WordNet 等知识库中抽取大量的实
小莹莹
2018/04/18
3.1K0
项目实战:如何构建知识图谱
从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建、医药知识图谱的自动问答等
关于知识图谱概念性的介绍就不在此赘述。目前知识图谱在各个领域全面开花,如教育、医疗、司法、金融等。本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含7类规模为4.4万的知识实体,11类规模约30万实体关系的知识图谱。
汀丶人工智能
2023/07/25
1.6K1
从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建、医药知识图谱的自动问答等
Aminer学术社交网络数据知识图谱构建(三元组与嵌入)
科技情报大数据挖掘与服务系统平台AMiner是由清华大学计算机科学与技术系教授唐杰率领团队建立的,具有完全自主知识产权的新一代科技情报分析与挖掘平台 。
里克贝斯
2021/05/21
1.2K0
Aminer学术社交网络数据知识图谱构建(三元组与嵌入)
手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
安装一系列pip依赖: cd至项目根目录,运行 sudo pip3 install -r requirement.txt
汀丶人工智能
2023/07/07
1.4K0
手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
知识图谱(1)——neo4j的安装下载相应的资源
Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。 网上有很多教程,花了一上午时间才安装完,遇到了一些坑,记下来吧
DC童生
2018/08/27
9360
知识图谱(1)——neo4j的安装下载相应的资源
python操作neo4j创建知识图谱模板
数据: 购买方名称 销售方名称 金额 山东高速集团有限公司电子收费中心 哈尔滨告诉公司 2000W级别交易 湖南道岳高速公路实业有限公司 湖北阿深南高速公路发展有限公司 2000W级别交易 湖南道岳高速公路实业有限公司 湖北阿深南高速公路发展有限公司 100W级别交易 湖南道岳高速公路实业有限公司 湖北阿深南高速公路发展有限公司 2000W级别交易 山东高速集团有限公司电子收费中心 湖北阿深南高速公路发展有限公司 2000W级别交易 山东高速集团有限公司电子收费中心 湖北阿深南高速公路发展有限公司 2000
西西嘛呦
2021/11/24
6840
python操作neo4j创建知识图谱模板
推荐阅读
知识图谱 | Neo4j初相识
1.6K0
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
1.9K0
如何使用 Neo4J 和 Transformer 构建知识图谱
2.6K0
知识图谱(2)——neo4j的用法
6070
InteractiveGraph 实现酷炫关系图谱之前瞻
1.4K0
​知识图谱里的知识存储:neo4j的介绍和使用
11K1
知识图谱系列之Neo4J
1.8K0
【教程】Neo4j知识图谱安装与使用教程
6060
NLP和知识图谱-neo4j安装和使用
8740
[python案例]金融知识图谱构建流程
2.3K0
通用知识图谱导入Neo4j——以ownthink为例
5.8K0
使用GraphRAG+LangChain+Ollama:LLaMa 3.1跑通知识图谱与向量数据库集成(Neo4j)
1.7K0
知识图谱之《海贼王-ONEPICE》领域图谱项目实战(含码源):数据采集、知识存储、知识抽取、知识计算、知识应用、图谱可视化、问答系统(KBQA)等
1.1K0
知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)
8.3K0
项目实战:如何构建知识图谱
3.1K0
从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建、医药知识图谱的自动问答等
1.6K1
Aminer学术社交网络数据知识图谱构建(三元组与嵌入)
1.2K0
手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
1.4K0
知识图谱(1)——neo4j的安装下载相应的资源
9360
python操作neo4j创建知识图谱模板
6840
相关推荐
知识图谱 | Neo4j初相识
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验