想象你是村里新上任的族长,要修一部传世族谱。你面对一箱泛黄的旧书信、各房支系的口述传闻和零零散散的记录:先得立下规矩——哪些人算本家、哪些关系要收录;然后从旧信里把一个个名字圈出来;再听清谁和谁是什么关系;遇到“张老三”和“张三”还得判断是不是同一个人;最后合订成册、锁进祠堂,供后人查阅、推断辈分。知识图谱构建,干的正是这场“修族谱”的活:从非结构化文本中抽取实体与关系,形成结构化的三元组,对齐融合后存入图数据库,再支撑智能问答与知识推理。本文用这个“修族谱”的故事,带你走完从数据到图谱再到应用的全流程,读完后你也能搭出属于自己的知识图谱。

岗位关联

掌握知识图谱全流程构建能力,是从“会调模型的工程师”成长为“能用图谱解决业务问题的架构师”的关键一步,也是知识中台、智能问答、风险分析等 AI 岗位的核心竞争力。

目录
  1. 可视化演示
  2. 本体Schema设计
  3. 命名实体识别
  4. 关系抽取
  5. 实体对齐消歧
  6. 知识融合与存储
  7. 图查询与推理
  8. 图谱应用与评估
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示知识图谱构建的三个核心阶段:NER+关系抽取生成三元组、实体对齐消歧的多源知识融合、以及基于规则和嵌入的知识推理补全。

本节配有交互动效(进入视口后自动加载,约 3KB)。

三元组抽取:NER+关系抽取 NER=命名实体识别 定位文本中实体 RE=关系抽取 判定实体间语义关系 (h, r, t) = NER(text) + RE(pairs) 从非结构化文本提取(头实体,关系,尾实体)三元组

本体Schema设计

老族长要修一部传世族谱,开祠堂第一件事不是翻旧账,而是当众立规矩:哪些人算本家、哪些关系值得收录、每个条目记哪些字段。这份“立规矩”的章程,就是知识图谱里的本体(Ontology)。它是图谱世界的宪法,所有后续环节都在它的框架内行事,谁也不能随意新增一个关系类型或者自创一种称谓。

本体规定了概念、属性、关系与约束。概念是“人”“组织”“地点”这些类别;属性是“出生日期”“籍贯”“职务”;关系是“父子”“任职于”“位于”;约束则包括基数约束,比如“一个人可以有多个孩子”,以及“一个孩子只有一对亲生父母”。没有本体就急着灌数据,就像族谱没有统一定则,各房各写各的,最后堆成一箱互相矛盾的烂纸。

形式化地看,知识图谱本体定义了一个带标签的有向图骨架:节点集合 $V$ 里放实体,边集合 $E$ 里放关系,每条边上的标签从预定义的关系类型集合 $\Sigma$ 中选取。数据进来后,只能填进这些预挖好的格子,结构因此井然有序。

规矩定得越细,后人越容易照着写、照着读;本体设计得越严谨,后续的抽取、融合、查询就越省力。族谱的“纲”立住了,后面每一笔才不会跑偏。

G=(V,  E⊆V×V,  Σ,  ℓ:E→Σ)\displaystyle G=(V,\; E\subseteq V\times V,\; \Sigma,\; \ell:E\to\Sigma)
这个公式是说:一张知识图谱就是“实体当点、关系当边、标签定类型”的有向图,本体负责规定这张图的骨架。
  1. 实体集合 V族谱里每一个有名有姓的人,是图的节点。
    V={v1,v2,…,vn}\displaystyle V=\{v_1,v_2,\dots,v_n\}
  2. 关系边集合 E任意两个人之间被记录的三亲六故,是图的边,边必须连接两个实体。
    E⊆V×V\displaystyle E\subseteq V\times V
  3. 标签集合 Σ 与标签函数 ℓ每条关系边都要盖一个“关系类型”的章,父子、夫妻、兄弟都来自同一个预定义章谱。
    Σ={σ1,σ2,…,σm},ℓ:E→Σ\displaystyle \Sigma=\{\sigma_1,\sigma_2,\dots,\sigma_m\},\quad \ell:E\to\Sigma

命名实体识别

翻开了整箱旧信,第一步是认出“谁是谁”。老先生的功夫在于一眼扫过就能圈出人名,哪怕字迹潦草、称呼千奇百怪。计算机做这件事,叫命名实体识别(NER),它是把非结构化文本变成结构化知识的入口,也是图谱构建最基础的一环。

计算机逐字看,本质是一个序列标注任务:给每个字分配一个标签。最常用的是 BIO 标法,B 表示实体开始的位置,I 表示实体中间的位置,O 表示与实体无关的字。“张伟是李明”会被标成:张/B-PER 伟/I-PER 是/O 李/B-PER 明/I-PER。标签序列一旦定下来,人名边界也就清楚了。

但如果每个字独立判断,很容易闹出“张伟是李”和“明”被拆成两个实体的笑话。条件随机场(CRF)能建模相邻标签之间的依赖,让“B 后面必须跟 I 或同标签的 E 位置”“O 后面不能直接跳进人名中间”这类全局约束参与决策,从而输出整条序列上最合理的标注方案。

认字老先生的诀窍是既看字本身、又看前后搭配;CRF 把这种“前后搭配”的直觉变成了数学上的概率约束,人名圈选因此又稳又准。

P(y∣x)=1Z(x)exp⁡(∑t∑kλkfk(yt−1,yt,x,t))\displaystyle P(y\mid x)=\frac{1}{Z(x)}\exp\left(\sum_{t}\sum_{k}\lambda_k f_k(y_{t-1},y_t,x,t)\right)
这个公式是说:给出一句话,模型要从所有可能的标注序列中挑概率最高的那一条;CRF 的巧妙之处是打分时把相邻标签的搭配是否合理也算进去。
  1. 输入句子 x把句子拆成一串字,是序列标注的原料。
    x=(x1,x2,…,xn)\displaystyle x=(x_1,x_2,\dots,x_n)
  2. 标签序列 y每个字对应一个 BIO 标签,整串标签就是一次完整的圈选结果。
    y=(y1,y2,…,yn)\displaystyle y=(y_1,y_2,\dots,y_n)
  3. 特征函数 f_k捕捉“前一个标签 + 当前标签 + 上下文”的匹配程度,比如“B-PER 后面跟 I-PER 是合理的,跟 O 就奇怪”。
    fk(yt−1,yt,x,t)\displaystyle f_k(y_{t-1},y_t,x,t)
  4. 归一化因子 Z(x)对所有可能的标签序列做求和,把分子变成真正的概率,保证所有候选序列概率加起来等于 1。
    Z(x)=∑yexp⁡(∑t∑kλkfk(yt−1,yt,x,t))\displaystyle Z(x)=\sum_{y}\exp\left(\sum_{t}\sum_{k}\lambda_k f_k(y_{t-1},y_t,x,t)\right)

关系抽取

人名圈出来了,还得听清“谁和谁是什么关系”。族长指着句子说“张伟管李明叫爹”,这就是在抽取关系。知识图谱里,一条关系被记成三元组:头实体、关系、尾实体,比如(张伟,父子,李明)。整张图谱就是由无数个这样的三元组拼接成的网络。

关系抽取有两条主流路线。管道式先把实体识别和关系分类拆成两步:先圈实体,再判断实体之间有没有关系、是什么关系,流程清晰但前一步的错误会一路传到后边;联合式用一个模型同时产出实体和关系,共享底层特征,精度更高但工程实现更复杂。

若把关系看成分类问题,核心是一个打分排序的过程。给定头实体 $h$ 和尾实体 $t$,模型对每个候选关系 $r$ 计算匹配分数 $s(h,r,t)$,再用 softmax 把分数归一成概率,得分最高的那个关系就是模型的答案。

老族长的“语感”是几十年听故事练出来的,模型的“语感”则是大量标注数据训练出来的参数。它说不清为什么,但猜得准——这正是深度关系抽取的常态。

P(r∣h,t)=exp⁡(s(h,r,t))∑r′∈Rexp⁡(s(h,r′,t))\displaystyle P(r\mid h,t)=\frac{\exp\big(s(h,r,t)\big)}{\displaystyle\sum_{r'\in\mathcal{R}}\exp\big(s(h,r',t)\big)}
这个公式是说:把所有候选关系都拉出来打分,再用 softmax 比大小,谁的分高谁胜出,概率之和始终为 1。
  1. 打分函数 s(h,r,t)模型根据头实体、关系、尾实体的匹配程度给一个实数分数,可以理解成“这段关系听起来有多顺”。
    s(h,r,t)=vr⊤g(h,t)\displaystyle s(h,r,t)=v_r^\top g(h,t)
  2. 分子指数化对目标关系的分数取指数,分数越高放大效应越强。
    exp⁡(s(h,r,t))\displaystyle \exp\big(s(h,r,t)\big)
  3. 分母遍历归一把所有候选关系的指数分数加起来,两者相除得到 0 到 1 之间的概率。
    ∑r′∈Rexp⁡(s(h,r′,t))\displaystyle \sum_{r'\in\mathcal{R}}\exp\big(s(h,r',t)\big)

实体对齐消歧

各家送来的支系族谱对不上号:这个房写“张老三”,那个房写“张三”,其实是同一个人。实体对齐消歧,解决的就是“同名不同人、异名同一人”的难题。它是知识融合的前置工序,直接决定图谱里有没有“一个实体两顶帽子”的乱象。

对齐不能靠拍脑袋。要综合证据:名字是否音近形似、是否在相似语境中出现、属性如出生地是否吻合、是否总与同一批实体共现。就像族长判断“张老三”和“张三”,既不轻信音近,也不只看年庚,而是把几条线索放在一起权衡。

实体被表示成向量之后,相似度可以用余弦相似度来计算。两个向量的夹角越小、方向越一致,说明两个候选实体指向同一个真实对象的可能性越高。正因为向量把语义压缩成了方向,方向一致就成了“同一人”的有力证据。

第一次合订族谱,最重要的规矩是把“一个人并成一个人”。合并之后,“张老三”统一成“张伟”,重复条目消失,图谱瘦身又精准,后续查询才不会被冗余指称带偏路。

cos⁡(a,b)=a⋅b∥a∥  ∥b∥=∑i=1daibi∑i=1dai2  ∑i=1dbi2\displaystyle \cos(\mathbf{a},\mathbf{b})=\frac{\mathbf{a}\cdot\mathbf{b}}{\|\mathbf{a}\|\;\|\mathbf{b}\|}=\frac{\sum_{i=1}^{d}a_i b_i}{\sqrt{\sum_{i=1}^{d}a_i^{2}}\;\sqrt{\sum_{i=1}^{d}b_i^{2}}}
这个公式是说:余弦相似度只看两个向量的方向是否一致,向量多长不重要,方向的默契程度才是“像不像”的关键。
  1. 实体向量 a、b每个实体通过嵌入模型变成一个稠密向量,语义相近的实体在向量空间里靠得近。
    a,b∈Rd\displaystyle \mathbf{a},\mathbf{b}\in\mathbb{R}^{d}
  2. 分子点积对应分量相乘再求和,衡量两个向量在每一维上“步调一致”的程度。
    a⋅b=∑i=1daibi\displaystyle \mathbf{a}\cdot\mathbf{b}=\sum_{i=1}^{d}a_i b_i
  3. 分母模长归一分别除以两个向量的长度,消除“向量长就分高”的偏差,只看方向。
    ∥a∥=∑i=1dai2\displaystyle \|\mathbf{a}\|=\sqrt{\sum_{i=1}^{d}a_i^{2}}

知识融合与存储

两房送来的记录打架了:三房写张伟生于 1890 年,四房写 1891 年。知识融合要回答“信谁”的问题:比来源是否权威、比记录年代是否接近、比佐证线索是否充足。多源数据只有经过融合,才能从“各说各话”变成“一个口径”。

融合的常见做法是对每个来源按可信度加权。权重大体由来源权威性、时效性、证据数量决定。每个来源对同一事实给出一个置信度打分,加权平均后得到综合置信度,低于阈值的记录被淘汰,高于阈值的保留下来。这样,冲突自然消解,冗余也无处遁形。

定稿之后的三元组往哪儿存?关系型数据库擅长表格,查“张伟的爷爷是谁”这种多跳关系,要反复 join 多张表,表越大越慢;图数据库按节点和边原生存储,查任意两人之间的路径只需沿边遍历,复杂度与走过的边数成正比,这才是图谱该住的“家”。

定稿的族谱锁进祠堂檀木柜,取阅方便、防潮防虫。图数据库就是这个檀木柜:装的是三元组,伺候的是关系查询,图谱的家从此安顿下来了。

C(e)=∑iwi si(e)∑iwi\displaystyle C(e)=\frac{\sum_{i}w_i\,s_i(e)}{\sum_{i}w_i}
这个公式是说:一个事实的最终可信度,是各来源打分按权重掺在一起的平均值,权重大的来源说话更算数。
  1. 来源权重 w_i给每个数据来源分配一个权重,权威来源权重高,道听途说的来源权重低。
    wi≥0\displaystyle w_i \ge 0
  2. 来源置信度 s_i(e)每个来源对自己产出的这条事实打个 0 到 1 之间的可信分。
    si(e)∈[0,1]\displaystyle s_i(e)\in[0,1]
  3. 加权平均 C(e)分子是“权重 × 置信度”的累加,分母是权重之和,算出来的就是最终定稿置信度。
    C(e)=∑iwi si(e)∑iwi\displaystyle C(e)=\frac{\sum_{i}w_i\,s_i(e)}{\sum_{i}w_i}

图查询与推理

族谱修好不是摆着看的。谁想查“张伟的爷爷是谁”,族长翻到张伟那一页,顺“父子”边上溯两层,张口就能报出答案。这套“翻谱找路”的动作,对应图谱里的图查询与图遍历。

查询分两个层次。显式查询用 SPARQL 语言,像 SQL 之于关系数据库,把“从哪出发、沿哪条边、到哪个节点”写成规则;图遍历则是后台默默完成的路径行走,查“两人之间有什么关系”就是一次双向广度优先搜索。显式查询适合回答已知问题,遍历则支撑更灵活的探索。

隐而未说的知识靠推理。以 TransE 为代表的嵌入推理,把实体和关系都映射成向量,并立下一个核心假设:头实体向量加上关系向量,应该约等于尾实体向量。于是“张伟父亲是李明、李明父亲是李建国”,即使图谱里没写“张伟爷爷是李建国”,模型也能算出一个高可信度的补全结论。

族长闭目一想能说出隔代亲缘,凭的是脑内的关系链。图推理把这条链变成向量和矩阵的运算,图谱因此获得了自己发现隐藏知识的能力。

f(h,r,t)=∥h+r−t∥\displaystyle f(h,r,t)=\|\mathbf{h}+\mathbf{r}-\mathbf{t}\|
这个公式是说:把一个三元组翻译成向量算式,等式越成立、得分越低,说明这条关系越可信——这就是把“闭眼一想”变成了矩阵运算。
  1. 向量表示头实体、关系、尾实体各有一个低维稠密向量,像族谱里每个人的编号和称谓模板。
    h,r,t∈Rd\displaystyle \mathbf{h},\mathbf{r},\mathbf{t}\in\mathbb{R}^{d}
  2. 核心假设正确的关系满足向量加和近似,错误的三元组则明显不满足。
    h+r≈t\displaystyle \mathbf{h}+\mathbf{r}\approx\mathbf{t}
  3. 距离得分取差的模长作为得分,距离越小说明越可能是真的。
    f(h,r,t)=∥h+r−t∥\displaystyle f(h,r,t)=\|\mathbf{h}+\mathbf{r}-\mathbf{t}\|

图谱应用与评估

族谱验收时,族老们会抽查:人名有没有漏收、辈分有没有乱排、同一个人的条目有没有合并干净。知识图谱上线前同样要“验收”,只不过查的是抽取质量:该抽的三元组有没有抽出来,抽出来的又对不对。

围绕这两个问题,业界定义了召回率和精确率。漏收了该抽的三元组,是召回率低;抽错了不该有的三元组,是精确率低。两者往往此消彼长——抽得越多越容易错,抽得太保守又会漏。于是需要 F1 分数把两者调和成一个数字,便于横向比较不同模型和阈值。

族谱好不好用,看翻得快、查得准、不误人子弟。图谱也一样,只有持续评估、持续迭代,才能从“数据抽屉”长成真正能辅助决策的“知识引擎”。

P=TPTP+FP,R=TPTP+FN,F1=2PRP+R\displaystyle P=\frac{TP}{TP+FP},\qquad R=\frac{TP}{TP+FN},\qquad F_1=\frac{2PR}{P+R}
这个公式是说:精确率看“抽出的里面有多少是对的”,召回率看“该抽的有多少被抽到”,F1 把两者捏合成一个综合得分。
  1. 四个关键计数TP 是正确抽中的三元组,FP 是误报,FN 是漏报,它们构成评估的原料。
    TP,  FP,  FN  ≥0\displaystyle TP,\;FP,\;FN\;\ge 0
  2. 精确率 P抽出来一大堆结果里,有多少是真正正确的;好比族谱里登记的关系有多少条经得起核对。
    P=TPTP+FP\displaystyle P=\frac{TP}{TP+FP}
  3. 召回率 R应该收录的关系里,有多少被真正收入族谱;好比老族长的记忆有没有遗漏哪一支。
    R=TPTP+FN\displaystyle R=\frac{TP}{TP+FN}
  4. F1 调和平均P 和 R 一项偏低就会拖低总分,只有两者都高,F1 才亮眼。
    F1=2PRP+R\displaystyle F_1=\frac{2PR}{P+R}

AI 应用场景

企业智能客服问答

阶段:图谱构建 + 图谱查询应用

解决的问题:传统客服 FAQ 靠人工整理问答对,用户换个说法就答不上来,知识散落在产品手册、工单和聊天记录里,难以维护。

具体案例:某智能硬件公司把数千页产品手册喂给 NER 和关系抽取模型,构建“设备—操作—参数—故障”知识图谱。用户问“打印机怎么连不上 Wi-Fi”,系统把问题解析成实体“打印机”和意图“连接故障”,沿图谱中“故障—解决方案—设备”的路径检索,直接返回排障步骤。新增型号只需增量更新图谱,无需重写客服逻辑。

金融风控关联挖掘

阶段:知识融合 + 图推理应用

解决的问题:传统风控只看单点数据,难以发现“同一实控人通过层层持股控制多家公司”这类隐性关联,人工核查成本极高。

具体案例:风控团队从财报、公告和新闻中抽取公司、人物、任职与投资关系,融合多个数据源并对齐同一主体——比如把“张伟”“张某”“伟总”归并为同一个人。再用 TransE 推理补全缺失的持股关系,图谱查询一键圈出“环形持股”“同人控制”的风险网络,辅助贷前调查和反欺诈决策。

Python 演示

python49 行
# -*- coding: utf-8 -*-"""用规则从文本中构建小型知识图谱"""import re  class MiniKG:    def __init__(self):        self.triples = []        self.entities = []     def extract_entities(self, text, lexicon):        """词典匹配加去重叠, 找出命名实体"""        hits = []        for name in lexicon:            for m in re.finditer(name, text):                hits.append((m.start(), m.end(), name))        hits.sort()        for start, end, name in hits:            if self.entities and start < self.entities[-1][1]:                continue            self.entities.append((start, end, name))        return self.entities     def extract_relations(self, text, patterns):        """基于触发词规则抽取关系三元组"""        for _, end, head in self.entities:            tail_text = text[end:]            for rel, pattern in patterns:                m = re.search(pattern, tail_text)                if m:                    tail = m.group(1)                    self.triples.append((head, rel, tail))     def query(self, head):        """查询与某实体直接相连的三元组"""        return [t for t in self.triples if t[0] == head]  kg = MiniKG()text = "张伟是李明的儿子, 也是王芳的丈夫."lexicon = ["张伟", "李明", "王芳"]patterns = [    ("儿子", r"是([\u4e00-\u9fa5]{1,4})的儿子"),    ("丈夫", r"([\u4e00-\u9fa5]{1,4})的丈夫"),]kg.extract_entities(text, lexicon)kg.extract_relations(text, patterns)print("三元组:", kg.triples)print("从张伟出发:", kg.query("张伟"))
目的:用词典匹配做实体识别、用触发词正则做关系抽取,从一句话中抽出三元组,并实现最简单的“以头实体为入口”的图查询。它演示了本文全流程中最核心的三个环节:实体识别、关系抽取、图谱查询。
  1. for m in re.finditer(name, text):在原始文本里逐个找出实体名字出现的所有位置。
  2. self.entities.append((start, end, name))把实体在文本中的起止位置和名字记录进实体表,供抽关系时使用。
  3. tail_text = text[end:]从实体结尾处截取剩余文本,关系只可能出现在这个实体之后。
  4. for rel, pattern in patterns:逐个尝试预先定义好的关系触发词模板。
  5. self.triples.append((head, rel, tail))抽取成功就把三元组存入图谱,这就是图谱最基本的数据单元。
  6. kg.extract_entities(text, lexicon)实际执行实体识别这一步。
  7. kg.query("张伟")图查询的雏形,返回所有以“张伟”为头实体的关系记录。

常见误区

误区“我在大屏上见过那种节点连线图,知识图谱就是画一个漂亮的关系网络图,节点越大越重要,线越多越关键。”

正解可视化只是图谱的呈现方式之一,本质上是“本体 Schema + 三元组集合 + 查询推理能力”。很多生产级知识图谱根本没有前端大屏,却在后台默默支撑客服问答、风控关联挖掘和搜索推荐。节点大小和连线粗细只是前端图表的美化映射,与图谱内部的置信度、权重是两码事。把可视化当成本体,就像把族谱的封面装帧当成族谱本身。

为何常见:网上的知识图谱 demo 几乎都是炫酷的力导向图,给人留下了“图谱 = 大屏”的第一印象。

误区“先跑通一个 demo 要紧,Schema 后面再补,反正数据都在,到时候怎么组织都行。”

正解没有本体的数据堆砌必然导致实体爆炸和关系混乱:同一概念被不同来源叫成十个名字,关系类型五花八门,后期对齐和重构的成本远超前期设计。就像族谱不定好“哪些算亲属、称谓怎么统一”,各房各记各的,最后合订时根本对不上。生产项目中,Schema 设计应当前置,并随数据演化持续迭代,而不是事后补救。

为何常见:项目初期追求快速看到效果,团队容易低估 Schema 设计的重要性和返工成本。

误区“'张伟'和'张伟'肯定是一个人,'张老三'和'张三'肯定不是,字符串相等就对齐,不相等就分开。”

正解真实世界远没有这么简单。同名可能是两个人——两个都叫“李明”的人,一个在北京一个在上海;异名可能是同一个人——“张伟”“张老三”“张某”在不同语境里指向同一对象。对齐必须综合名字相似度、上下文向量、属性特征、共现关系等多维证据,用聚类或链接算法做判定。族长认亲也不只看名字,还会问住处、问年庚、问父母名讳。

为何常见:字符串比较是最直观的“朴素匹配”,直觉上名字一样就该是同一个人,忽略了实体在现实世界中的歧义性。

误区“图谱的本质就是数据,用关系型数据库建几张表也能存三元组,没必要特意引入图数据库。”

正解能存不等于好用。关系型数据库查“A 与 B 之间隔了几层关系”这类多跳查询,需要把多张中间表反复 JOIN,跳数越多组合爆炸越严重;图数据库用邻接表按边存储,沿着边做遍历,查询复杂度只与经过的边数相关。“查张伟的爷爷”在关系库里可能要 JOIN 两次以上,在图数据库里则是从张伟出发走两步的事。存储选型直接影响图谱应用的性能天花板。

为何常见:对“图数据库”望文生义,以为它只是给图可视化用的,忽略了它在关系遍历上的原生优势。

面试题

Q1. 在知识图谱中,本体(Schema)最恰当的理解是什么?

单选题 · easy

  • A.数据可视化样式
  • B.概念属性约定← 正确答案
  • C.数据库表结构
  • D.文本语料库集合

答案:B。本体是知识图谱的“族谱编制规则”,负责约定概念、属性、关系和约束。可视化只是呈现方式,表结构属于存储层设计,语料库是待抽取的原料,三者都不是本体的内涵。

Q2. BIO 标注体系中,字母 B 表示什么?

单选题 · easy

  • A.实体的起始位置← 正确答案
  • B.上下文窗口大小
  • C.特征向量的维度
  • D.随机初始化参数

答案:A。BIO 里 B 是 Begin,表示一个实体的开始字;I 是 Inside,表示实体内部的字;O 是 Outside,表示与实体无关的字。就像圈选人名时先落笔的那个字就是 B。其余选项都是模型训练中的其他概念。

Q3. 与逐字独立分类相比,CRF 在序列标注上的主要优势是什么?

单选题 · mid

  • A.完全无需标注数据
  • B.能建模相邻标签依赖← 正确答案
  • C.只能处理英文文本
  • D.无法训练词向量

答案:B。CRF 通过特征函数把前一个标签和当前标签的搭配关系纳入打分,避免产出“B 后面直接跟 O”这类不合理序列。认字老先生看前后搭配的直觉,在 CRF 里变成了概率约束。独立分类只看单个字,管不住序列整体。

Q4. (张伟,父子,李明) 这样的表示方式叫什么?

单选题 · mid

  • A.四元组
  • B.六元组
  • C.三元组← 正确答案
  • D.八元组

答案:C。一个关系由头实体、关系类型、尾实体三个元素构成,所以叫三元组。它是知识图谱最基本的数据单元,族谱里“谁管谁叫什么”的每一条关系都能写成这样一个三元组。其他选项的数量都不对。

Q5. 余弦相似度衡量的是两个实体向量的什么性质?

单选题 · mid

  • A.两向量方向一致性← 正确答案
  • B.两向量长度差值
  • C.向量维度的数目
  • D.存储地址的距离

答案:A。余弦相似度计算的是两个向量夹角的余弦值,只看方向是否一致,与向量长度无关。方向越一致,说明两个实体在语义空间里越“投缘”。长度差、维度和地址都与余弦无关。

Q6. 实体对齐消歧要解决的核心问题是什么?

单选题 · hard

  • A.增加图谱节点数量
  • B.合并同一对象指称← 正确答案
  • C.压缩图的存储体积
  • D.提升文本编码速度

答案:B。实体对齐做的是把“张老三”“张三”“张伟”等指向同一真实对象的指称合并起来,解决同名异实和异名同实的歧义。它不会刻意增加节点,压缩存储和编码提速都不是对齐的目标,合并指称自然会让图谱更精简准确。

Q7. TransE 模型的核心假设是什么?

单选题 · hard

  • A.头实体加关系约等于尾实体← 正确答案
  • B.头实体与尾实体完全对称
  • C.关系与头实体互不影响
  • D.尾实体等于关系减头实体

答案:A。TransE 假设 h + r ≈ t,即头实体向量加上关系向量应该落在尾实体向量附近。例如“张伟” + “父子” 应接近“李明”。D 的符号方向反了,B 和 C 都否定了关系在三元组中的桥梁作用。

Q8. 知识融合阶段需要完成的主要工作有哪些?

多选题 · easy

  • A.删除重复数据← 正确答案
  • B.消解来源冲突← 正确答案
  • C.定义颜色主题
  • D.训练词向量

答案:AB。知识融合的核心是数据去重和冲突消解:重复的三元组要合并,同一事实不同来源打不同值时要按置信度取舍。颜色主题是可视化的事,词向量训练是表示学习的事,都不属于融合阶段。

Q9. 关系抽取的两种主流实现范式是什么?

多选题 · mid

  • A.管道式抽取← 正确答案
  • B.联合抽取模型← 正确答案
  • C.手工录入数据
  • D.索引优化策略

答案:AB。管道式先做实体识别再做关系分类,步骤清晰但错误累积;联合式用一个模型同时产出实体和关系,共享特征、精度更高。手工录入不属于自动化抽取,索引优化是存储引擎的范畴。

Q10. 关于 F1 分数的描述,下列说法正确的有哪些?

多选题 · extreme

  • A.是精度召回的综合← 正确答案
  • B.能惩罚错抽与漏抽← 正确答案
  • C.数值越高质量越好← 正确答案
  • D.只统计正确的条数

答案:ABC。F1 是精确率与召回率的调和平均,精确率低惩罚“错抽”,召回率低惩罚“漏抽”,所以它是两者的综合指标,值越高说明抽取质量越好。D 只强调正确条数,完全忽略了误报和漏报对质量的影响,不符合 F1 的定义。