首页 / 资讯中心 / 文章详情

知识图谱从表示、获取到应用:三大核心板块的工程实践与避坑指南

知识图谱从表示、获取到应用:三大核心板块的工程实践与避坑指南 ★ FEATURED ARTICLE
知识图谱这个概念这几年在搜索、推荐、风控、智能问答这些场景里被反复提起但真正能把它的来龙去脉讲清楚的材料并不多。我最早接触知识图谱是在做一个垂直领域的问答系统当时被实体对齐关系抽取表示学习这些术语绕得云里雾里后来硬啃了几篇综述才慢慢理出头绪。这篇博文想做的事情很直接把知识图谱这个领域的整体框架拆开从表示、获取、应用三个维度讲清楚它到底在解决什么问题、每个环节有哪些主流做法、实际落地时会踩哪些坑。不管你是刚入门的研究生还是想把这套东西用到业务里的工程师都能从中找到可以直接参考的东西。整篇内容会围绕知识图谱的三大核心板块展开穿插我自己的实操经验和一些容易被忽略的细节。1. 知识图谱的整体框架与设计思路1.1 为什么需要知识图谱这套东西先说清楚一个根本问题我们已经有关系型数据库、有搜索引擎、有各种NoSQL存储为什么还要搞一个知识图谱出来核心原因在于数据的组织方式和使用方式之间存在鸿沟。传统数据库擅长存储结构化数据但它的schema是预先定义死的一旦业务变化就要改表结构搜索引擎擅长处理文本但它不理解苹果这个词到底指水果还是公司。知识图谱的思路是把现实世界中的实体和它们之间的关系用图的方式组织起来节点是实体边是关系这样既能灵活扩展又能让机器对数据产生理解。我举个具体的例子。假设你在做一个电商导购系统用户搜适合送长辈的保健品。如果用传统关键词匹配你只能匹配到标题里包含这些词的商品的。但如果你有一个知识图谱里面存了保健品-适宜人群-中老年人中老年人-属于-长辈送礼场景-推荐品类-保健品这些关系系统就能推理出用户真正想要的东西甚至能推荐一些标题里根本没出现长辈这个词的商品。这就是知识图谱的价值——它把隐含的常识和领域知识显式地表达出来让机器能做推理。从学术角度看知识图谱的研究可以分成三大块表示Representation、获取Acquisition、应用Application。这三块不是孤立的而是形成一个闭环表示方法决定了你怎么存储和计算获取方法决定了你怎么把新知识灌进去应用则反过来告诉你哪些知识是真正有用的、哪些表示方式是高效的。很多初学者一上来就扎进某个具体模型里结果做了半天不知道自己的工作在整个体系里处于什么位置这是很常见的问题。1.2 三大板块的划分逻辑与相互关系把知识图谱拆成表示、获取、应用三块这个划分不是随便定的它对应的是知识从原材料到产品的完整生命周期。获取是上游负责从各种数据源里把知识抽出来表示是中游负责把这些知识转化成计算机能处理的形式应用是下游负责用这些知识去解决实际问题。这个链条里任何一环出问题整个系统都跑不起来。表示这块的核心问题是怎么把一个三元组头实体、关系、尾实体编码成向量或矩阵使得后续的计算和推理变得可行。早期的方法像TransE思路非常直观——把关系看作头实体到尾实体的平移向量即h r ≈ t。这个假设简单但有效在链式关系上表现很好但遇到一对多、多对一的关系就力不从心了。后来发展出TransH、TransR、RotatE等一系列变体分别从不同角度解决这个问题。另一条路线是基于图神经网络的方法像R-GCN、CompGCN它们把图结构信息通过消息传递的方式聚合起来对复杂关系的建模能力更强但计算开销也更大。获取这块要解决的是知识从哪来的问题。结构化数据比如已有的数据库可以直接映射成三元组这部分相对简单。难的是从半结构化数据网页表格、Infobox和非结构化数据纯文本里抽取知识。实体识别、关系抽取、实体链接这几个任务构成了获取的核心 pipeline。这几年预训练语言模型在这块带来了很大提升但远没有到完全自动化的程度人工校验仍然是绕不开的环节。应用这块就非常广了问答系统、推荐系统、搜索增强、风控反欺诈、药物发现都能看到知识图谱的身影。不同应用对知识图谱的要求差异很大问答系统要求图谱覆盖度高、推理链路短推荐系统更看重实体之间的语义相似度风控场景则对时效性和准确性有极高要求。理解这些差异才能在设计知识图谱时做出正确的取舍。1.3 从学术综述到工程落地的距离学术综述里讲的方法论通常有一个隐含假设数据是干净的、标注是完备的、评测指标是明确的。但工程落地时你会发现真实数据里充满了噪声、缺失和矛盾。我做过一个医疗领域的知识图谱项目光是把不同来源的疾病名称对齐就是一场噩梦——同一个病在不同数据库里有三四种写法有的用全称有的用缩写有的还带分期分型。这种问题在论文里通常被一笔带过但在实际项目里可能占掉你一半以上的时间。另一个容易被忽略的点是评测。学术论文里常用的FB15k、WN18这些数据集关系类型相对规整实体数量也有限。但真实业务场景里实体数量可能是千万级甚至亿级关系类型可能上千种而且分布极不均衡——少数几种关系占了绝大多数边大量长尾关系只有几十条甚至几条样本。这种数据分布下很多在标准数据集上表现很好的模型会直接崩掉。所以看论文的时候除了看指标一定要关注它的实验设置和你的实际场景差多远。2. 知识表示学习的核心方法与实操要点2.1 翻译模型家族从TransE到RotatE的演进逻辑翻译模型是知识表示学习里最直观的一类方法核心思想是把关系看作实体空间中的某种变换。TransE是最早的版本它的假设是h r ≈ t也就是说尾实体的向量应该等于头实体向量加上关系向量。这个假设在直觉上很合理——就像北京加上首都这个关系应该指向中国。但TransE有个致命缺陷它无法处理一对多关系。比如中国通过包含省份这个关系可以指向北京上海广东等多个实体但TransE会强制这些实体的向量都等于中国加上同一个关系向量这显然不合理。TransH的解决方案是给每个关系引入一个超平面实体在不同关系下投影到不同的超平面上再做平移。这样包含省份这个关系对应的超平面和首都对应的超平面不同就能区分开。TransR更进一步把实体空间和关系空间完全分开实体在实体空间关系在关系空间通过一个投影矩阵做转换。这些改进各有优劣TransH参数少一些TransR表达能力强一些但计算开销大。RotatE是这几年比较受关注的一个方法它把关系看作复数空间中的旋转操作。具体来说头实体向量乘以关系对应的旋转角度应该等于尾实体向量。这个设计的好处是能自然地建模对称关系、反对称关系、逆关系和组合关系。比如配偶是对称关系旋转180度再旋转180度就回到原位父亲和儿子是逆关系旋转角度互为相反数。实测下来RotatE在多个标准数据集上确实比TransE系列有提升但训练时间也更长。2.2 图神经网络路线R-GCN与CompGCN的取舍如果说翻译模型是把知识图谱当作三元组的集合来处理那图神经网络路线则是把它当作一张真正的图。R-GCNRelational Graph Convolutional Network的核心思路是每个实体节点的表示应该由它自己和它的邻居节点共同决定而且不同关系类型的邻居要用不同的权重矩阵来聚合。这比翻译模型更符合图的直觉——一个实体的含义确实和它周围的环境密切相关。R-GCN的公式看起来复杂但拆开理解并不难。对于每个实体它收集所有以它为尾实体的三元组对每个三元组用关系对应的权重矩阵变换头实体的向量然后把这些变换后的向量加起来或者取平均再经过一个激活函数就得到该实体的新表示。这个过程可以堆叠多层让每个实体能看到更远的邻居。CompGCN是R-GCN的改进版主要改进点在于它同时考虑了边的方向。在R-GCN里关系是有方向的但聚合时只考虑了入边。CompGCN把出边和入边都纳入进来并且对关系本身也学习表示。这个改动看起来小但在一些需要双向推理的任务上提升明显。不过CompGCN的参数更多在小规模数据集上容易过拟合需要配合dropout和正则化使用。我在实际项目里的经验是如果图谱规模不大实体数在十万级以下关系类型比较规整翻译模型往往就够用了训练快、调参简单。如果图谱规模大、关系复杂、而且下游任务需要利用多跳邻居信息那图神经网络路线更合适但要做好计算资源规划。另外图神经网络对图的结构很敏感如果图谱稀疏或者存在大量孤立节点效果会打折扣。2.3 表示学习的评估陷阱与调参经验评估知识表示学习模型最常用的指标是链接预测的MRRMean Reciprocal Rank和HitsK。MRR衡量的是正确实体在预测排名中的平均倒数排名HitsK衡量的是正确实体出现在前K个预测中的比例。这两个指标看起来简单但实际使用时有很多坑。第一个坑是负采样策略。训练时我们需要构造负样本也就是把三元组里的头实体或尾实体替换成其他实体。但随机替换可能会产生假阴性——替换后的三元组在真实世界里其实是成立的只是不在训练集里。比如北京-属于-中国是正样本你随机把北京换成上海得到上海-属于-中国这其实也是对的但模型会把它当负样本训练。这个问题在学术数据集上不严重因为数据集通常假设所有不在训练集里的三元组都是负的但在真实场景里必须处理。常见的做法是过滤掉在验证集和测试集里出现过的三元组或者用基于规则的负采样。第二个坑是超参数敏感。翻译模型对学习率、margin值、嵌入维度都很敏感。我试过在同一个数据集上学习率从0.001调到0.01MRR能差5个点以上。嵌入维度也不是越大越好维度太高容易过拟合太低表达能力不够。一般来说实体数在十万级时100到200维比较合适实体数在百万级时可以尝试200到500维。margin值通常设在1到4之间具体要看数据集的评分分布。第三个坑是评测协议。有些论文在评测时会过滤掉其他正确答案有些不会这会导致指标不可比。看论文时一定要确认它的评测协议自己复现时也要保持一致。另外链接预测只是表示学习的一个评估方式它和下游任务的表现并不完全正相关。我见过在FB15k上MRR很高的模型放到实际的问答系统里效果一般因为问答系统更依赖特定类型的关系和实体。3. 知识获取的完整Pipeline与工程实践3.1 从结构化数据到非结构化数据的分层处理知识获取的第一步是搞清楚数据源的类型。结构化数据最好处理比如已有的关系型数据库、CSV文件、API返回的JSON这些数据本身就有明确的字段和类型只需要做映射就能转成三元组。比如一个用户表里有用户ID姓名城市三个字段你可以直接生成用户ID-姓名-张三用户ID-居住城市-北京这样的三元组。这部分工作技术含量不高但量大且琐碎建议写脚本自动化处理同时做好字段映射的配置文件方便后续维护。半结构化数据的处理难度中等典型的是网页里的表格、Infobox、列表。这些数据有一定的结构但格式不统一需要写解析规则。比如维基百科的Infobox不同条目的字段名可能不一样有的用出生日期有的用生日需要做字段归一化。我的做法是先统计所有出现的字段名人工归类然后写映射规则。这个过程很枯燥但一次投入能长期受益。非结构化数据是最难的也就是纯文本。从文本里抽取知识需要经过命名实体识别NER、关系抽取RE、实体链接EL三个步骤。NER负责找出文本里的实体mentionRE负责判断两个实体之间是什么关系EL负责把mention链接到知识图谱里的标准实体。这三个步骤可以串行做也可以联合建模。串行做的好处是每个模块可以独立优化坏处是误差会累积——NER错了一个实体后面的RE和EL都会受影响。联合建模能缓解这个问题但模型复杂度高训练数据要求也高。3.2 实体识别与关系抽取的实操细节实体识别这块现在主流做法是用预训练语言模型做序列标注。具体来说把文本输入BERT之类的模型然后在输出层接一个CRF或者softmax预测每个token的标签。标签体系通常用BIO或者BIOESB表示实体开始I表示实体内部O表示非实体E表示实体结束S表示单字实体。BIOES比BIO更细能处理嵌套实体和相邻实体的情况。实操时有个细节容易被忽略领域词典的融入。通用预训练模型在通用领域表现很好但在垂直领域比如医疗、法律、金融往往力不从心因为很多专业术语它没见过。解决办法是在预训练模型的基础上把领域词典作为特征加进去或者在解码时用词典做约束。我做过一个医疗NER项目加了疾病词典之后F1值提升了将近8个点。词典的来源可以是已有的术语库也可以从业务数据里挖掘。关系抽取比NER更难因为关系是定义在两个实体之间的而且同一个句子里可能同时存在多种关系。早期做法是pipeline式先做NER然后把实体对和句子一起输入分类器判断关系类型。这种做法的缺点是误差累积而且忽略了实体之间的交互。现在更流行的是联合抽取用一个模型同时输出实体和关系。联合抽取的建模方式有好几种有的用序列标注把关系编码进标签里有的用图神经网络在实体和关系之间做消息传递有的用生成式模型直接生成三元组。生成式关系抽取是这两年比较火的方向思路是把关系抽取变成seq2seq任务输入是句子输出是三元组序列。这种做法的好处是能处理复杂关系比如一个实体参与多个关系而且能利用预训练模型的生成能力。但缺点也很明显生成的结果可能不符合语法或事实需要后处理校验训练数据要求高标注成本大。我在实际项目里试过生成式方法在数据量充足的情况下效果确实好但数据量少的时候还不如传统的分类方法稳定。3.3 实体链接与知识融合的避坑指南实体链接要做的事情是给定一个实体mention和上下文判断它指向知识图谱里的哪个实体。这个问题看起来简单实际非常棘手因为同一个mention可能对应多个实体一词多义同一个实体也可能有多个mention多词一义。比如苹果可能指水果也可能指公司北京大学和北大指的是同一个实体。实体链接通常分两步候选生成和候选消歧。候选生成是从知识图谱里找出所有可能的候选实体常用的方法是用别名表、字符串相似度、或者向量检索。候选消歧是给每个候选打分选分数最高的。打分可以用特征工程的方法比如上下文词重叠度、实体流行度、实体类型匹配度也可以用深度学习的方法比如把mention和实体的上下文编码成向量算相似度。知识融合是实体链接的上游指的是把多个知识图谱合并成一个。这里最大的挑战是实体对齐不同图谱里可能用不同的ID和名称表示同一个实体需要判断哪些实体是等价的。实体对齐的方法有基于规则的比如名称完全匹配、属性值高度重叠也有基于嵌入的把实体编码成向量算相似度。实际项目里通常是两者结合先用规则做高置信度的对齐再用嵌入方法处理模糊的情况。我踩过的一个坑是过度依赖自动对齐忽略了人工校验。有一次做跨库融合自动对齐的准确率看起来有90%但剩下10%的错误里有一些是高频实体导致下游任务大面积出错。后来我们加了一个人工抽检环节对高频实体和低置信度的对齐结果做人工确认虽然增加了工作量但整体质量提升明显。所以我的建议是自动方法负责提效人工校验负责兜底两者缺一不可。4. 知识图谱的应用场景与落地经验4.1 问答系统里的知识图谱推理链路知识图谱在问答系统里的应用核心是把自然语言问题转化成图谱上的查询或推理。比如用户问姚明的妻子是谁系统需要先识别出实体姚明和关系妻子然后在图谱里查询。如果图谱里直接有姚明-妻子-叶莉这条边那直接返回就行。但用户的问题往往更复杂比如姚明妻子的身高是多少这就需要两跳推理先查姚明的妻子再查这个妻子的身高。多跳推理是知识图谱问答的难点。传统做法是用语义解析把问题转成SPARQL查询但语义解析对模型的语法理解能力要求很高而且图谱的schema必须和问题的表达方式匹配。现在更流行的是基于嵌入的方法把问题和图谱里的实体、关系都编码成向量然后在向量空间里做推理。这种方法的泛化能力更强但可解释性差而且需要大量的问答对做训练。我在实际项目里发现纯端到端的问答模型在简单问题上表现不错但遇到需要多跳推理或者涉及数值比较的问题就容易出错。后来我们采用了混合策略简单问题走规则模板复杂问题走模型推理模型置信度低的时候回退到人工客服。这个策略看起来不够智能但实际效果比纯模型方案好很多用户满意度也更高。4.2 推荐系统与搜索增强中的图谱用法推荐系统用知识图谱主要是为了解决冷启动和可解释性问题。传统协同过滤依赖用户-物品交互数据新用户和新物品没有交互记录就没法推荐。知识图谱可以把物品的属性和关系利用起来比如用户喜欢科幻电影图谱里星际穿越通过类型关系连接到科幻电影那就可以把星际穿越推荐给这个用户。这种基于内容的推荐不依赖交互数据能有效缓解冷启动。可解释性是另一个价值点。协同过滤的推荐结果很难解释——因为和你相似的用户也买了这个用户听了没什么感觉。知识图谱的推荐可以给出更具体的理由因为你喜欢科幻电影这部电影的导演也拍过你喜欢的另一部电影。这种解释能提升用户的信任度和点击率。我做过一个对比实验加了图谱解释的推荐位点击率比不加解释的高出15%左右。搜索增强是知识图谱的另一个重要应用。传统搜索基于关键词匹配用户搜苹果可能返回一堆水果和公司的混合结果。如果搜索引擎背后有知识图谱它能根据上下文判断用户到底想要什么。比如用户之前搜过iPhone那这次搜苹果就更可能指向公司。这种实体级别的理解能显著提升搜索质量。实现上通常是在查询理解阶段做实体识别和消歧然后在召回和排序阶段利用图谱的实体关系做扩展。4.3 风控与反欺诈场景的图谱实践风控和反欺诈是知识图谱落地比较成熟的领域因为欺诈行为往往不是孤立的而是有团伙、有链条的。比如一个欺诈团伙可能用多个手机号、多个银行卡、多个设备但这些信息之间有关联——同一个设备登录过多个账号同一个IP地址出现在多个异常交易里。把这些信息建成图谱就能通过图算法发现异常模式。常用的图算法包括社区发现、中心度分析、路径分析。社区发现用来找出紧密关联的团伙中心度分析用来识别关键节点比如团伙的核心成员路径分析用来追踪资金流向或信息传播路径。这些算法在NetworkX、igraph这些图计算库里有现成实现但真正难的是特征工程和阈值设定。什么样的社区算异常中心度多高算可疑这些没有标准答案需要结合业务数据和专家经验反复调试。实时性是风控场景的特殊要求。欺诈行为可能几秒钟内就完成如果图谱查询要几秒钟才返回那风控就失效了。所以风控图谱通常需要做冷热分离热数据放在内存图数据库里支持毫秒级查询冷数据放在分布式图计算平台上做离线分析。我见过一些团队一开始用单机图数据库数据量上来之后查询越来越慢最后不得不重构。所以如果预期数据量会增长一开始就要考虑可扩展的架构。5. 常见问题排查与实战避坑清单5.1 表示学习训练不收敛的排查思路训练知识表示模型时loss不下降或者震荡是很常见的问题。排查时我通常按这个顺序来先看数据再看模型最后看超参数。数据方面检查三元组里有没有重复、有没有实体ID越界、有没有关系类型缺失。我遇到过一次loss一直不降查了半天发现是数据预处理时把实体ID映射错了导致大量三元组的头尾实体指向了同一个ID。这种低级错误很浪费时间建议在训练前写个脚本做数据校验。模型方面检查嵌入维度是否合理、初始化方式是否正确、有没有梯度消失或爆炸。翻译模型的嵌入通常用均匀分布或正态分布初始化范围在[-0.1, 0.1]或[-1/sqrt(d), 1/sqrt(d)]之间。如果初始化范围太大训练初期loss会很高且难以下降太小则梯度信号弱。梯度问题可以通过梯度裁剪或者换优化器来缓解Adam通常比SGD更稳定。超参数方面学习率是最关键的。我一般从0.001开始试如果loss震荡就降到0.0001如果下降太慢就升到0.01。batch size也有影响太小则梯度噪声大太大则内存不够且泛化差。通常设在128到1024之间。另外负采样的数量也会影响训练效果负样本太少则模型学不到区分能力太多则训练慢且可能过拟合。一般每个正样本配1到10个负样本比较合适。5.2 知识抽取准确率上不去的优化方向知识抽取的准确率卡在某个水平上不去通常有几个原因。第一个是标注数据不够或质量不高。NER和RE都是监督学习任务标注数据的数量和质量直接决定模型上限。如果标注数据只有几百条那再好的模型也学不出什么。解决办法可以是主动学习——让模型挑出它最不确定的样本人工标注这些样本这样能用最少的标注量获得最大的提升。另一个办法是远程监督——用已有的知识图谱去对齐文本自动生成标注数据但远程监督会引入噪声需要做降噪处理。第二个原因是领域不匹配。用通用领域预训练的模型直接做垂直领域的抽取效果通常不好。解决办法是在领域数据上做继续预训练或者用领域词典和规则做增强。继续预训练需要大量无标注的领域文本但不需要标注成本相对低。规则增强则适合处理那些高频、固定的模式比如XX成立于XX年这种句式用正则表达式就能抽得很准。第三个原因是任务定义本身有问题。关系抽取的关系类型如果定义得太细标注一致性就差模型也难学。比如投资和入股到底算不算同一种关系如果算那标注时就要统一如果不算那模型就要学会区分这两个很相似的概念。我的经验是关系类型宁少勿多先把粗粒度的关系抽准再考虑细分。另外实体类型和关系类型要匹配比如人-出生于-地点是合理的公司-出生于-地点就不合理这种约束可以在后处理阶段用来过滤错误结果。5.3 图谱规模增长后的性能瓶颈与应对知识图谱从几万实体增长到几百万甚至上亿实体时性能问题会集中爆发。第一个瓶颈是存储。单机图数据库比如Neo4j社区版在数据量超过千万级时查询性能会明显下降。解决办法是迁移到分布式图数据库或者用图计算框架比如Spark GraphX做离线分析用KV存储做在线查询。选择哪种方案取决于查询模式如果是复杂的多跳查询图数据库更合适如果是简单的实体查询KV存储更快。第二个瓶颈是推理。随着图谱规模增长基于嵌入的推理计算量呈线性甚至超线性增长。优化方向有几个一是用近似最近邻搜索代替精确搜索牺牲一点准确率换取速度二是对图谱做分区把推理限制在相关子图内三是用模型蒸馏或量化把大模型压缩成小模型。我在一个千万级图谱的项目里用过分区推理把查询延迟从秒级降到了毫秒级代价是需要维护分区索引。第三个瓶颈是更新。知识图谱不是静态的新实体和新关系不断加入旧关系可能失效。全量重训练嵌入模型成本太高通常用增量学习的方法只更新受影响的实体和关系的嵌入。但增量学习有个问题是灾难性遗忘——模型学了新知识忘了旧知识。解决办法是保留一部分旧数据做回放或者在损失函数里加正则项约束新旧嵌入的距离。这块目前还没有特别成熟的方案实际项目里往往是定期全量重训加增量更新结合使用。5.4 常见问题速查表问题现象可能原因排查方向解决建议表示学习loss不下降数据错误、学习率不当、初始化问题检查数据完整性、调整学习率、检查初始化范围写数据校验脚本、学习率从0.001试起、嵌入初始化用均匀分布链接预测MRR偏低负采样策略不当、模型容量不足、评测协议不一致检查负采样逻辑、增加嵌入维度、统一评测协议过滤假阴性样本、维度调到200以上、复现时对齐论文协议NER准确率上不去标注数据少、领域不匹配、标签体系不合理统计标注量、检查领域词覆盖、审查标签定义主动学习补充标注、领域继续预训练、简化标签体系关系抽取F1低关系类型定义模糊、实体识别误差累积、训练数据不均衡检查关系定义、评估NER单独指标、统计关系分布合并相似关系、联合建模、对长尾关系做数据增强图谱查询变慢数据量超单机容量、查询未走索引、图结构不合理检查数据量、分析查询计划、审查图模型设计迁移分布式存储、加索引、优化图schema实体对齐错误率高名称歧义、属性缺失、对齐阈值不当抽样检查错误案例、统计属性完整度、调整阈值加入上下文特征、补充属性、高频实体人工校验增量更新后旧知识遗忘灾难性遗忘、新旧数据分布差异大对比更新前后的预测结果、检查新旧数据比例保留旧数据回放、加正则约束、定期全量重训这张表里的每一条都是我或者身边同行实际踩过的坑有些问题看起来简单但排查起来可能要花好几天。建议在项目初期就把数据校验、评测协议、监控指标这些基础设施搭好后面能省很多事。6. 从综述到实践的个人体会知识图谱这个领域论文和工程之间的鸿沟比很多方向都大。综述文章会把方法分类得很清楚告诉你TransE属于翻译模型、R-GCN属于图神经网络但不会告诉你实际项目里80%的时间花在数据清洗和格式对齐上。我刚开始做的时候总想着用最新的模型后来发现数据质量才是决定上限的关键因素。一个干净、覆盖度高的小图谱比一个噪声满天飞的大图谱有用得多。另一个体会是不要追求全自动。知识获取的完全自动化目前还不现实人工校验和规则补充仍然是必要的。与其花大力气做一个准确率85%的自动抽取系统不如做一个准确率70%的自动系统加一个高效的人工校验流程整体效率和可靠性反而更高。这个思路在工业界很常见但学术论文里很少提因为论文追求的是方法的新颖性而不是工程的可落地性。最后说一个关于评估的想法。学术评测指标MRR、HitsK、F1是必要的但不充分。一个知识图谱好不好最终要看它能不能支撑业务目标。如果业务是问答那就看问答的准确率和用户满意度如果业务是风控那就看欺诈识别率和误报率。把业务指标和技术指标对齐才能避免论文指标很好看上线效果很一般的尴尬。我在实际项目里会同时跟踪技术指标和业务指标技术指标用来指导模型迭代业务指标用来判断项目是否值得继续投入。
阅读完成 · 觉得有帮助?
咨询建站