想象你走进一座巨大的图书馆,向管理员提问:“《三体》的作者还写过哪些科幻小说?”管理员不会直接去书架上乱翻,而是先拆解你的问题——“《三体》”是主角,“作者”是关系线索,“还写过哪些科幻小说”是查询意图。然后他走到索引柜前,找到“《三体》”这本书的作者卡片,顺着“作者”这条线跳到作者名,再沿着该作者名下“科幻小说”的分类标签,把所有符合条件的书目一一列给你。 这个过程,就是知识图谱问答(KBQA)的日常。知识图谱是一座结构化的“图书索引馆”,而KBQA系统就是那位训练有素的“管理员”。它把人类的自然语言问题,翻译成图谱查询语句——就像把读者的口语请求写成一张索书条;再通过实体链接找到书架上那本“准确的书”,通过关系映射理解你要沿哪条“索引线”走,最后把查询结果整理成答案。整篇文章,我们就用这间“图书馆”作为主线,一步步拆解KBQA的完整工作流程。

岗位关联

掌握KBQA,意味着你掌握了让机器“读懂问题、查对答案”的完整方法论——这是构建智能客服、知识助手、企业搜索等产品的核心能力,也是自然语言处理工程师进阶的必修课。

目录
  1. 可视化演示
  2. KBQA系统总览
  3. 查询语义解析
  4. 实体链接入门
  5. 关系映射方法
  6. 图谱查询生成
  7. 答案排序筛选
  8. 评测基准剖析
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示操作系统进程五状态模型:新建、就绪、运行、等待、终止状态间的转换过程与触发条件。

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

进程五状态模型 新建→就绪→运行→等待/终止,状态间通过调度器切换 dispatch: ready→run | timeout: run→ready 粉色节点为进程状态,箭头表示转换方向

KBQA系统总览

想象你第一次走进那间图书馆,管理员先带你参观全貌:一排排书架(实体)、书架间的索引标签(关系)、每本书的详细信息(属性)。这就是知识图谱的骨架——用“实体-关系-实体”的三元组描述世界。而KBQA系统,就是那位能听懂人话、会查索引、能找答案的管理员助理。

从技术角度看,KBQA(Knowledge Based Question Answering)是一种基于结构化知识库的问答技术。它不像搜索引擎那样抓取网页全文,而是把问题映射到知识图谱上精确查找。完整的KBQA流程通常包含五个模块:语义解析、实体链接、关系映射、查询生成、答案排序。这五步环环相扣,就像管理员拆解问题、定位书籍、沿索引线查找、汇总结果的过程。

KBQA主要有两条技术路线:基于语义解析(Semantic Parsing)的方法,先把问题翻译成逻辑表达式,再转成图谱查询,好比管理员把口语写成标准索书条;基于信息检索(Information Retrieval)的方法,先生成候选答案,再排序打分,好比管理员从书架抱来一摞候选书,按相关性挑出最匹配的一本。

KBQA=问题理解⏟语义解析+实体链接⏟找主角+关系映射⏟找线索+查询执行⏟取答案\text{KBQA} = \underbrace{\text{问题理解}}_{\text{语义解析}} + \underbrace{\text{实体链接}}_{\text{找主角}} + \underbrace{\text{关系映射}}_{\text{找线索}} + \underbrace{\text{查询执行}}_{\text{取答案}}

1. 问题理解(语义解析):判断用户想问什么、涉及哪些关键信息,为后续步骤提供结构化输入。

问题→意图+槽位\text{问题} \rightarrow \text{意图} + \text{槽位}

2. 实体链接(找主角):从问题中识别出具体的人、物、组织,并映射到知识图谱中确定的节点上。

指称→知识图谱实体节点\text{指称} \rightarrow \text{知识图谱实体节点}

3. 关系映射(找线索):将问题中描述关系的词语翻译成图谱中标准的关系谓词。

关系描述词→标准关系谓词\text{关系描述词} \rightarrow \text{标准关系谓词}

4. 查询执行(取答案):将实体和关系拼装成图谱查询语言(如Cypher/SPARQL),检索并返回答案。

查询语句→答案集合\text{查询语句} \rightarrow \text{答案集合}

明白了这个总览框架,我们就像拿着图书馆的楼层导览图,知道每个模块在整座建筑中的位置。接下来,我们走进第一个功能区——看管理员如何听懂读者的提问。

查询语义解析

读者走到前台,问:“刘慈欣写了哪些科幻小说?”管理员不会立刻跑去书架,而是先在脑中拆解这句话:提问对象是“刘慈欣”(主体),关心的动作是“写”(关系线索),想要的结果是“科幻小说”(查询目标)。这个拆解过程,就是查询语义解析。

语义解析的第一步是意图识别——判断问题的类型。是询问属性(“刘慈欣的出生地”)、询问关系(“刘慈欣写了什么”)、还是询问计数(“刘慈欣写了几本书”)?不同意图对应不同的查询模板,就像管理员按“找属性、找关联、数数量”三种任务走不同流程。第二步是槽位填充——从问题中提取出关键参数,包括主体实体、关系词、限定条件等。

为了让解析更准确,系统常常借助依存句法分析理解词语间的修饰关系。“刘慈欣写了哪些科幻小说”中,“写”是核心谓语,“刘慈欣”是主语,“科幻小说”是宾语,这个句法结构直接映射到知识图谱的“主体-谓词-客体”三元组结构。最终,问题被表示为一个语义框架——一种结构化的查询意图描述,如下式所示:

Q=⟨Emain, Rrel, Ccon⟩=⟨刘慈欣, 写, 科幻小说⟩Q = \langle E_{\text{main}}, \ R_{\text{rel}}, \ C_{\text{con}} \rangle = \langle \text{刘慈欣}, \ \text{写}, \ \text{科幻小说} \rangle

1. 主体实体 E_main:问题中最核心的实体指称,是查询的出发点,相当于索书条上“哪本书”这一栏。

Emain=argmaxe P(e∣Q)E_{\text{main}} = \text{argmax}_e \ P(e \mid Q)

2. 关系线索 R_rel:描述主体与目标之间的语义关联,决定沿图谱中哪条边跳转。

Rrel∈R,R={r1,r2,…,rn}R_{\text{rel}} \in \mathcal{R}, \quad \mathcal{R} = \{ r_1, r_2, \dots, r_n \}

3. 约束条件 C_con:附加的限定信息,如类型、时间、属性等,用于缩小答案范围。

Ccon={c∣c∈问题中的修饰成分}C_{\text{con}} = \{ c \mid c \in \text{问题中的修饰成分} \}

语义解析就像管理员把读者的口语整理成标准工单,但这个工单还需要找到“具体是哪本书”——这正是实体链接要做的事。我们把工单交给下一站,看管理员如何在茫茫书海中找到读者说的那本“苹果”。

实体链接入门

读者问:“苹果的CEO是谁?”管理员听到“苹果”两个字,立刻面临一个问题:是水果苹果,还是苹果公司?这就需要实体链接来解决——把问题中的指称(Mention)映射到知识图谱中唯一确定的实体上。

实体链接的第一步是命名实体识别(NER),从句子中圈出可能指向实体的词语片段。第二步是候选实体生成,根据指称文本从知识图谱中召回若干个可能的实体——就像图书馆里有好几本名字相近的书,管理员先把它们都摆在桌上。第三步是实体消歧,利用上下文信息从候选中选出正确的那个。“苹果的CEO”中"CEO"这个上下文强有力地暗示,这里指的是科技公司而非水果。

实体消歧的常用信号包括:指称与候选实体的文本相似度、候选实体在知识图谱中的类型是否匹配上下文(如“CEO“要求实体类型是”公司/组织”)、以及候选实体与问题中其他实体的关联度。

P(e∣m,c)=exp⁡(w⋅ϕ(e,m,c))∑e′∈C(m)exp⁡(w⋅ϕ(e′,m,c))P(e \mid m, c) = \frac{\exp(w \cdot \phi(e, m, c))}{\sum_{e' \in C(m)} \exp(w \cdot \phi(e', m, c))}

1. 特征函数 φ(e, m, c):综合指称相似度、上下文匹配度、实体类型兼容度等信号,为每一对(候选实体,指称)打分。

ϕ(e,m,c)=[sim(m,e), type_match(e,c), relatedness(e,其他实体)]\phi(e, m, c) = [\text{sim}(m, e), \ \text{type\_match}(e, c), \ \text{relatedness}(e, \text{其他实体})]

2. 归一化分母:对当前指称的所有候选实体分数求和,将原始得分转换成概率分布。

Z=∑e′∈C(m)exp⁡(w⋅ϕ(e′,m,c))Z = \sum_{e' \in C(m)} \exp(w \cdot \phi(e', m, c))

3. 最大概率选择:取概率最高的候选实体作为链接结果,即管理员最终确定的那本书。

e∗=arg⁡max⁡e P(e∣m,c)e^{*} = \arg\max_{e} \ P(e \mid m, c)

实体链接让管理员锁定了“哪本书”,接下来要解决“沿着哪个索引标签走”的问题。读者说“写了”、“著有”、“创作了”,管理员需要知道这些都是同一条索引线——关系映射的舞台拉开了。

关系映射方法

明确了“刘慈欣”这个实体之后,数据库要回答“写了哪些科幻小说”,关键在理解“写了”这个动作。知识图谱中,“刘慈欣”到“科幻小说”的边可能有“作品”、“创作”、“作者”等多种标签,关系映射要做的,就是把自然语言的述谓表达映射到图谱的标准关系上。

最基础的关系映射方法是词典与模板方法:维护一份“自然语言关系表达 → 标准关系谓词”的映射表。比如“写”“创作”“著有”都映射到 author_of 或 created。这种方法简单直观,但覆盖面有限——换一种说法可能就查不到了。就像图书馆管理员的索引手册,只收录了常用说法。

进阶方法是基于嵌入(Embedding)的语义映射:把自然语言的关系描述和知识图谱的关系谓词都映射到同一向量空间中,用向量距离衡量语义相似度。即便用户说“刘慈欣的科幻作品有哪些”,其中“作品”这个泛化词也能通过嵌入相似度找到 author_of。多源特征融合策略则综合词典匹配、嵌入相似度、句法角色等多种信号,做出更稳健的决策:

score(r∣q)=λ1⋅1(r∈Dict(q))⏟词典命中+λ2⋅cos⁡(vq,vr)⏟嵌入相似度+λ3⋅syn(r∣q)⏟句法角色\text{score}(r \mid q) = \lambda_1 \cdot \underbrace{\mathbb{1}(r \in \text{Dict}(q))}_{\text{词典命中}} + \lambda_2 \cdot \underbrace{\cos(\mathbf{v}_q, \mathbf{v}_r)}_{\text{嵌入相似度}} + \lambda_3 \cdot \underbrace{\text{syn}(r \mid q)}_{\text{句法角色}}

1. 词典命中项:检查标准关系是否出现在指称的词典映射中,命中则记1分,是最强的指示信号。

1(r∈Dict(q))={1,r∈Dict(q)0,otherwise\mathbb{1}(r \in \text{Dict}(q)) = \begin{cases} 1, & r \in \text{Dict}(q) \\ 0, & \text{otherwise} \end{cases}

2. 嵌入相似度项:计算关系描述向量与标准关系向量的余弦相似度,捕捉词汇层面的语义接近程度。

cos⁡(vq,vr)=vq⋅vr∥vq∥∥vr∥\cos(\mathbf{v}_q, \mathbf{v}_r) = \frac{\mathbf{v}_q \cdot \mathbf{v}_r}{\|\mathbf{v}_q\| \|\mathbf{v}_r\|}

3. 权重系数 λ:各特征对最终决策的贡献度,可通过训练数据学习得到,通常总和为1。

λ1+λ2+λ3=1\lambda_1 + \lambda_2 + \lambda_3 = 1

关系映射确定了索书条上的“索引线”,现在管理员可以把“哪本书”(实体)和“哪条线”(关系)写在一起了。下一站,我们把这张索书条交给查询执行器——就像把标准工单递进图数据库。

图谱查询生成

管理员手中已经有了完整的索书条:主体实体“刘慈欣”、关系谓词“write/created“、目标类型”科幻小说”。现在要把这张索书条变成图书馆系统能执行的标准命令——图谱查询语言。

在大多图数据库中,Cypher是最常用的查询语言。对于“刘慈欣写了哪些科幻小说”,对应的Cypher查询大致是:MATCH (a:Author {name:'刘慈欣'})-[:WROTE]->(b:Book) 再加上 WHERE b.genre = '科幻' RETURN b.title。这个过程叫查询模板装配——预先定义好各类意图的查询骨架,把实体链接和关系映射的结果填入占位符。

如果底层存储是RDF格式的知识图谱,则使用SPARQL标准查询语言。SPARQL同样遵循“主体-谓词-客体”的三元组模式匹配逻辑,用类似SQL的语法描述图模式。查询生成的质量直接取决于实体和关系的准确度,正如索书条写得再规范,如果书名和分类号错了,也找不到正确的书。

\text{Query}(Q) = \text{Assemble}(T_{\text{intent}}, \ E^{*}, \ R^{*}) \Rightarrow \begin{cases} \text{MATCH (a:Entity \{name: E^{*}\}}) \\ \text{-[:}R^{*}\text{]-> (b)} \\ \text{RETURN b} \end{cases}

1. 意图对应模板 T_intent:根据语义解析得到的意图类别,从模板库中选取对应的查询骨架。

Tintent∈T={T属性查询, T关系查询, T计数查询,… }T_{\text{intent}} \in \mathcal{T} = \{ T_{\text{属性查询}}, \ T_{\text{关系查询}}, \ T_{\text{计数查询}}, \dots \}

2. 实体参数填充:将实体链接得到的标准实体ID或名称填入查询模板的实体位置。

E∗→MATCH 子句中的实体字面量E^{*} \rightarrow \text{MATCH 子句中的实体字面量}

3. 关系参数填充:将关系映射得到的标准关系谓词填入模板的关系位置。

R∗→关系类型标识R^{*} \rightarrow \text{关系类型标识}

查询发出去了,图数据库会立刻返回一批结果。但这时事情还没完——有时结果不止一个,有时结果质量参差不齐。就像管理员从书架上抱下了好几本候选书,哪一本才是读者真正想要的?最后的这一棒,交给答案排序。

答案排序筛选

当图数据库返回多个候选答案时(比如“刘慈欣的科幻小说”有《三体》《球状闪电》《超新星纪元》等多本),KBQA系统需要像管理员一样,把最相关的答案排在最前面。这也对应真实场景中用户通常只期望看到最精准的答案。

答案排序的第一步是特征评估:对每个候选答案,提取它与问题的适配特征,包括问题与答案的语义相似度、答案在知识图谱中的 popularity(热度)、答案类型是否匹配问题约束等。第二步是用排序模型(如Learning to Rank)对这些特征进行加权打分——有些时候用简单的手工加权就能工作,有些时候需要训练一个机器学习模型自动学习权重。第三步是置信度过滤,设置一个阈值,低于该阈值的候选答案直接丢弃,就像管理员筛掉明显不相关的书,只把有把握的放到读者面前。

score(a∣Q)=∑kwk⋅ϕk(a,Q),a∗=arg⁡max⁡a∈Ascore(a∣Q)\text{score}(a \mid Q) = \sum_{k} w_k \cdot \phi_k(a, Q), \quad a^{*} = \arg\max_{a \in \mathcal{A}} \text{score}(a \mid Q)

1. 特征向量 ψ_k(a, Q):每个候选答案与问题之间的第k个相关信号,如文本相似度、类型匹配度、实体关联强度。

ϕk(a,Q)=[simtext(a,Q), type(a)≈type(Q), popularity(a)]\phi_k(a, Q) = [\text{sim}_{\text{text}}(a, Q), \ \text{type}(a) \approx \text{type}(Q), \ \text{popularity}(a)]

2. 加权求和得分:不同特征按学习到的权重融合,体现各信号对答案质量的不同贡献。

score(a∣Q)=w1ϕ1+w2ϕ2+w3ϕ3\text{score}(a \mid Q) = w_1 \phi_1 + w_2 \phi_2 + w_3 \phi_3

3. 最大化选择:取总分最高的候选答案作为最终回答。

a∗=arg⁡max⁡a score(a∣Q)a^{*} = \arg\max_{a} \ \text{score}(a \mid Q)

排序模块把答案递到读者手里,KBQA的流水线跑通了。但这里还有一个问题:怎么知道这套系统到底有多好?就像管理员需要定期考核服务质量一样,我们也需要一把科学的“尺子”来衡量KBQA系统的表现——这就是评测基准的任务。

评测基准剖析

你如何判断一座图书馆的管理员是否称职?可以统计他找书的准确率(找来的书是否正是读者要的)和召回率(该找的书是否都找来了)。KBQA系统的评测,逻辑完全一致。

精确率(Precision)衡量的是系统返回的答案中有多少是正确的,比如系统返回了10个答案,其中8个是对的,精确率就是0.8。召回率(Recall)衡量的是所有正确答案中有多少被系统找了出来,比如标准答案总共有5个,系统只找出3个,召回率就是0.6。两者往往是此消彼长的矛盾指标——追求精确会漏掉正确答案,追求全面会混入错误答案。F1分数是两者的调和平均,用一个数字综合衡量系统质量:

F1=2×Precision×RecallPrecision+RecallF1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

1. 精确率 Precision:系统返回的答案中,正确答案所占的比例。

Precision=TPTP+FP\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}

2. 召回率 Recall:所有标准答案中,被系统成功找回的比例。

Recall=TPTP+FN\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}

3. F1调和平均:将精确率和召回率合成一个综合指标,取值范围 [0,1],越接近1表示系统越好。

F1=2×Precision×RecallPrecision+RecallF1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

在学术和工业界,常用的KBQA评测集包括WebQuestions(基于Freebase)、SimpleQuestions(单关系事实型问题)、以及中文领域的NLPCC-KBQA等。评测完成后还会做误差分析——统计实体链接错误、关系映射错误、查询生成错误各占多少比例,类似图书馆管理员的月度工作复盘,找出到底哪个环节最拖后腿,然后针对性优化。

至此,我们完整走完了KBQA的每个环节:从读者提问、语义理解、实体定位、关系翻译、查询执行到答案排序,再到效果评价。整间图书馆的管理体系已经清晰呈现,你已有能力理解并搭建一个简单的KBQA系统了。

AI 应用场景

智能客服故障排查助手

阶段:实体链接 + 关系映射 + 图谱查询

解决的问题:传统客服系统依赖关键词匹配,用户说“我的路由器连不上网了”时难以精准定位具体产品和故障类型。KBQA通过实体链接识别“路由器”型号,关系映射理解“连不上网”指向“网络连接故障”,再查询知识图谱中该型号的故障排查方案。

具体案例:某电信运营商搭建了包含数万条设备-故障-解决方案三元组的运维知识图谱。用户描述问题后,系统自动完成实体链接(识别具体设备型号)和关系映射(匹配故障类型),在图谱中检索出对应的排障步骤,以对话形式引导用户逐步排查,首次解决率提升了42%。

企业知识库智能问答系统

阶段:语义解析 + 答案排序

解决的问题:企业内部知识库文档海量且分散,员工查制度、找流程常需要翻数十份文档。KBQA将企业制度构建为知识图谱,通过语义解析拆解员工的自然语言问题,在图谱中精准查询,再经答案排序返回最相关条款。

具体案例:某大型制造企业将《财务报销制度》《差旅管理规范》等文档结构化到知识图谱,员工提问“出差住宿报销标准是多少”,系统解析出实体“住宿”、关系“报销标准”,从图谱中返回对应条款和附加说明,回答置信度达到0.93,显著提升了行政服务效率。

Python 演示

python55 行
import refrom collections import OrderedDict class SimpleKBQA:    def __init__(self):        self.entities = {            '刘慈欣': {'type': 'Author', 'works': ['三体', '球状闪电', '超新星纪元']},            '三体': {'type': 'Book', 'author': '刘慈欣', 'genre': '科幻'},            '球状闪电': {'type': 'Book', 'author': '刘慈欣', 'genre': '科幻'},            '三体2黑暗森林': {'type': 'Book', 'author': '刘慈欣', 'genre': '科幻'},            '三体3死神永生': {'type': 'Book', 'author': '刘慈欣', 'genre': '科幻'}        }        self.relations = {            '写': 'author_of', '创作': 'author_of', '著有': 'author_of',            '什么是': 'instance_of', '类型': 'genre', '属于': 'instance_of'        }     def entity_link(self, question):        for mention in self.entities:            if mention in question:                return mention        return None     def relation_map(self, question):        for word, rel in self.relations.items():            if word in question:                return rel        return None     def answer_query(self, entity, relation, question):        if entity is None:            return ['找不到实体,请换一种问法']        if relation is None:            if self.entities[entity]['type'] == 'Author':                return self.entities[entity]['works']            return ['无法识别关系']        if relation == 'author_of':            return self.entities[entity]['works']        if relation == 'genre':            return [self.entities[entity]['genre']]        return ['无法回答该关系']     def ask(self, question):        entity = self.entity_link(question)        relation = self.relation_map(question)        print('Q:', question)        print('实体链接:', entity, '| 关系映射:', relation)        answers = self.answer_query(entity, relation, question)        print('A:', answers)        print('---') kbqa = SimpleKBQA()kbqa.ask('刘慈欣写了哪些科幻小说?')kbqa.ask('三体的类型是什么?')kbqa.ask('乔布斯是谁?')
目的:实现一个迷你KBQA系统,演示实体链接、关系映射、答案查询三步骤如何协作完成问答。
  1. self.entities用字典模拟知识图谱,存储实体及其属性、关系,对应图谱的节点和边。
  2. entity_link(question)在问题中查找图谱中存在的实体名,完成实体链接,对应“找到读者说的那本书”。
  3. relation_map(question)用词典匹配把自然语言关系词翻译为标准关系谓词,对应“翻译索书条上的索引线”。
  4. answer_query(entity, relation, question)根据实体和关系组合从“图谱”中取出答案,对应“执行索书条取书”。
  5. kbqa.ask('三体的类型是什么?')测试问题的标准入口,打印每一步的处理结果。

常见误区

误区实体链接不就是把问题里的词和图谱里的名字对上号吗?用字符串包含判断不就行了,为什么还要搞什么消歧、候选生成?

正解字符串匹配只是实体链接最外层的粗筛。现实中同一指称对应多个实体(“苹果”是水果也是公司),同一实体有多种写法(“刘慈欣”“大刘”“Cixin Liu“)。实体链接的核心是在候选集上做消歧——像图书馆管理员看到”苹果”必须结合上下文判断是去水果区还是科技区,字符串匹配远远不够。

为何常见:入门时写的demo通常使用完全匹配的词典,现象上看起来“够用”,让人误以为真实场景也这么简单。

误区把用户可能说的关系词(写、创作、著有)都列进表里映射到标准谓词,关系映射就完成了,覆盖面不是问题——多收录词就行。

正解自然语言表达关系的灵活性远超词表覆盖能力:“刘慈欣的科幻作品”没有出现“写”字、“三体是哪位作家的作品”是反着说的,都需要语义理解。词表方法适合冷启动,但要想理解泛化表达,必须借助嵌入空间或预训练语言模型,在连续语义空间中进行关系匹配。

为何常见:词表方法直观且容易实现,“只要词多就能覆盖”的错觉掩盖了语言表达的稀疏性问题。

误区知识图谱查询结果是结构化的精确匹配,图数据库返回什么就答什么,不需要额外排序。

正解很多问题的答案并不唯一。问“刘慈欣的科幻小说”会返回多本,但用户往往需要最核心的代表作;问“中国的著名景点”更是候选众多。排序模块负责把最相关的答案放在最前面、过滤低置信度结果,本质上是对“查到什么答什么”的精细化升级。评测指标(如F1)也反映了对答案质量的要求不仅仅是“查到”。

为何常见:简单图谱查询demo中的答案通常唯一且确定,让人低估了真实问题中答案多候选、有噪声的复杂性。

面试题

Q1. KBQA中,将问题中的指称映射到知识图谱中唯一实体的过程称为?

单选题 · easy

  • A.关系映射
  • B.实体链接← 正确答案
  • C.槽位填充
  • D.答案排序

答案:B。实体链接的任务就是把“苹果”这样的指称对应到图谱中确定的实体节点。关系映射对应关系词语到标准谓词的翻译,槽位填充属于语义解析阶段,答案排序是最后的质量把关。

Q2. F1分数是精确率和召回率的什么平均?

单选题 · easy

  • A.算术平均
  • B.几何平均
  • C.调和平均← 正确答案
  • D.加权平均

答案:C。F1是精确率和召回率的调和平均,公式为2PR/(P+R)。调和平均对两个值的不均衡更敏感:当P=0.8、R=0.6时,调和平均约0.686,低于算术平均0.7,体现了对短板指标的惩罚。

Q3. 下列哪一项不是关系映射中常用的信号?

单选题 · mid

  • A.词典命中
  • B.嵌入相似度
  • C.句法角色
  • D.页面小图标← 正确答案

答案:D。关系映射综合词典、嵌入、句法等多源特征来翻译关系表达。“页面小图标”是无关的网页特征,干扰选项。理解三类信号各自的角色是关系映射的考点。

Q4. “苹果的CEO是谁”中,实体消歧最依赖哪类上下文信号?

单选题 · mid

  • A.指称的长度
  • B.共现实体与类型约束← 正确答案
  • C.标点符号
  • D.字的笔画数

答案:B。“CEO“提示”苹果”应为组织类实体,类型匹配是消歧的关键。共现实体系利用图中相邻实体的关联度辅助判断。指称长度、标点、笔画数对区分同名实体没有帮助。

Q5. 在KBQA的查询生成阶段,“模板装配”的核心思想是什么?

单选题 · mid

  • A.每次从零编写查询
  • B.骨架固定、参数填空← 正确答案
  • C.用正则表达式暴力匹配
  • D.随机组合查询语句

答案:B。模板装配预先定义好各意图对应的查询骨架,将实体链接和关系映射的结果填入占位符。这保证了语法正确性并复用验证过的查询模式,避免每次都从头构造查询语句。

Q6. 语义解析中,问题“三体是哪位作家创作的”经分析得到主体实体应为?

单选题 · hard

  • A.三体← 正确答案
  • B.作家
  • C.创作
  • D.哪位

答案:A。虽然“作家”是期望答案的类型,但从问题结构看,人是被询问的目标,“三体”才是已知信息即主体实体。理解“已知信息是主体,未知信息是查询目标”是语义解析的关键。

Q7. KBQA系统中实体链接的主要步骤包括?

多选题 · mid

  • A.命名实体识别← 正确答案
  • B.候选实体生成← 正确答案
  • C.实体消歧← 正确答案
  • D.情感分析

答案:ABC。实体链接三步骤是:从文本中识别指称(NER)、从图谱中召回候选实体、利用上下文消歧选出唯一实体。情感分析与实体链接无关,是干扰项。

Q8. 下列属于KBQA应用场景的有?

多选题 · mid

  • A.智能客服故障排查← 正确答案
  • B.企业制度文档问答← 正确答案
  • C.电商推荐系统
  • D.医疗知识检索助手← 正确答案

答案:ABD。KBQA适合领域知识密集、需要精确查询的任务,如客服排障、企业问答、医疗知识检索。电商推荐侧重行为预测而非结构化问答,不属于典型KBQA场景。

Q9. 关于精确率和召回率的关系,以下说法正确的是?

多选题 · hard

  • A.二者通常此消彼长← 正确答案
  • B.追求高精确率必然牺牲召回率← 正确答案
  • C.F1是两者调和平均← 正确答案
  • D.两者越高系统越差

答案:ABC。精确率和召回率是一对矛盾指标——更严格地筛选答案会提高精确率但降低召回率,反之亦然。F1用调和平均综合两者。选项D说反了,越高系统越好。

Q10. 在基于信息检索的KBQA路线中,核心方法特征是?

单选题 · extreme

  • A.先生成候选答案再排序← 正确答案
  • B.先将问题转为逻辑表达式
  • C.只依赖词典匹配
  • D.不借助知识图谱

答案:A。基于信息检索的方法先生成候选答案集合,再通过排序模型选出最佳答案;基于语义解析的方法才强调先把问题转化为中间逻辑表达式。二者都依赖知识图谱,词典匹配只是子模块。