2、投研知识图谱的构建流程:需求分析、数据采集、本体设计、知识抽取、知识融合、知识存储、知识应用

说实话,很多团队做知识图谱,一上来就急着写代码、搭数据库。结果呢?做着做着发现数据对不上,业务方说「这不是我要的」。我见过太多这样的项目了。

所以今天咱们聊聊构建流程。一共七个步骤,环环相扣。你想想看,盖楼得先画图纸吧?做知识图谱也一样。

2.1 需求分析:别急着动手,先想清楚要什么

这一步最容易被忽略。我刚开始做投研图谱时,也犯过这个错——直接拿公开数据往里灌,结果发现基金经理问的问题,图谱根本答不上来。

需求分析要回答三个问题:

  • 谁在用?——研究员?基金经理?风控人员?
  • 查什么?——公司关系?行业上下游?事件传导?
  • 怎么查?——精确搜索?模糊推荐?路径分析?

核心原则:需求决定本体,本体决定数据。别反过来。

举个例子。如果用户想查「某公司有哪些关联方」,那你的图谱里就得有「持股」「任职」「担保」这些关系。如果用户想查「某行业最近有哪些负面事件」,那你就得把新闻、公告里的实体和事件抽出来。

我的习惯:先跟业务方聊半小时,列10个典型问题。然后问自己——这10个问题,现有系统能回答吗?不能的话,缺什么?

2.2 数据采集:来源要广,质量要控

需求明确了,接下来就是找数据。投研领域的数据源,我大致分三类:

数据类别 典型来源 采集方式
结构化数据 财报、数据库、API接口 ETL工具、SQL查询
半结构化数据 公告、研报、新闻 爬虫 + 解析模板
非结构化数据 电话会议录音、视频 语音转文字 + NLP

这里有个坑——数据质量。我曾经从某个公开数据源拉公司股东信息,结果发现同一家公司在不同年份的股东名称写法都不一样。比如「张三」和「张 三」(中间多了个空格),在知识图谱里就成了两个实体。

避坑指南:数据采集阶段就要做初步清洗。至少要去重、去空格、统一格式。别等到知识融合阶段再处理,那时候成本就高了。

2.3 本体设计:图谱的骨架

本体设计,说白了就是定义「有什么实体」和「有什么关系」。这是知识图谱的灵魂。

投研领域常见的本体包括:

  • 实体类型:公司、人物、行业、产品、事件、公告
  • 关系类型:持股、任职、供应、竞争、收购、担保
  • 属性:公司名称、注册资本、成立日期、行业分类

我建议用自顶向下的方式设计。先画一个大框架,再逐步细化。比如:

实体:公司
  ├── 属性:名称、代码、行业、市值
  ├── 关系:持股 → 公司
  ├── 关系:任职 → 人物
  └── 关系:供应 → 公司

实体:人物
  ├── 属性:姓名、职位、背景
  └── 关系:任职 → 公司

个人经验:本体设计别太复杂。我见过有人把关系细分成30多种,结果数据根本填不满。先做核心的5-8种关系,跑通了再扩展。

下面这张图展示了投研知识图谱的核心本体结构:

公司 人物 行业 事件 产品 公告 持股/任职 属于 涉及 发布 关联

2.4 知识抽取:从文本到三元组

本体设计好了,数据也采回来了。接下来就是抽取出「实体-关系-实体」这样的三元组。

常用的方法有:

  • 规则匹配:写正则或模板,适合格式固定的文本(如财报)
  • 命名实体识别(NER):用模型识别公司名、人名、地名
  • 关系抽取:用预训练模型判断两个实体之间的关系

举个例子。从「张三持有A公司30%股份」这句话里,我们要抽取出:

(张三, 持股, A公司)
(张三, 持股比例, 30%)

注意:属性也可以看作一种特殊的关系。比如「持股比例」就是实体和数值之间的关系。

我建议先用规则兜底,再用模型做补充。规则准确率高但覆盖低,模型覆盖广但可能出错。两者结合效果最好。

2.5 知识融合:把碎片拼成整体

这一步解决的是「同一个实体在不同数据源里叫法不一样」的问题。

比如:

  • 「阿里巴巴」和「Alibaba」是同一家公司
  • 「马云」和「Jack Ma」是同一个人
  • 「2023年报」和「2023年年度报告」是同一份文档

常用的融合技术包括:

  • 实体对齐:用相似度算法判断两个实体是否指向同一对象
  • 属性融合:多个来源的属性值取交集或加权平均
  • 冲突消解:当不同来源信息矛盾时,按可信度选择

我曾经踩过的坑:做实体对齐时,只用了名称相似度。结果「华润啤酒」和「华润医药」被合并成了同一个实体。后来加了行业属性做约束,才避免了这个错误。

2.6 知识存储:选对数据库

知识图谱的存储,主流方案有两种:

存储方案 优点 缺点 适用场景
图数据库(Neo4j、JanusGraph) 关系查询快,支持路径分析 分布式支持弱,学习成本高 中小规模图谱,深度关系查询
RDF三元组库(Jena、Virtuoso) 标准化,支持SPARQL查询 性能一般,扩展性有限 开放数据、语义网场景

我个人习惯用图数据库。原因很简单——投研场景里,查「A公司通过哪些路径影响到B公司」这种问题,图数据库一条查询语句就搞定了。换成关系型数据库,得写好几层JOIN。

小建议:如果数据量在千万级以下,Neo4j就够用了。如果到了亿级,考虑JanusGraph或Nebula Graph。

2.7 知识应用:让图谱真正用起来

最后一步,也是最关键的一步——让图谱产生价值。

投研领域常见的应用场景:

  • 关联查询:输入一家公司,展示其股东、子公司、供应商
  • 路径发现:找两个公司之间的最短关联路径
  • 事件传导分析:某个行业政策变化,会影响哪些公司
  • 智能问答:用自然语言问「宁德时代的上游供应商有哪些」

举个例子。研究员想查「某公司最近被哪些机构调研过」。传统做法是翻公告、手动整理。有了知识图谱,一条查询就能返回所有调研记录,还能按时间排序、按机构分类。

核心思路:知识图谱不是终点,而是工具。它的价值在于让投研人员更快、更准地找到信息之间的关联。

好了,七个步骤讲完了。从需求分析到知识应用,每一步都有它的意义。你想想看,如果跳过需求分析直接做数据采集,很可能白费功夫。如果跳过知识融合,图谱里全是重复实体,查出来的结果谁敢信?

嗯,这就是构建投研知识图谱的完整流程。下一章咱们会深入讲本体设计的具体方法,到时候再细聊。


公众号:蓝海资料掘金营,微信deep3321