中文知识图谱问答 CCKS2019 CKBQA - 参赛总结

[TOC]

  • 调研时间:2019.06.05~2019.06.19
  • 参赛时间:2019.06.28~2019.07.25

中文知识图谱问答(从0到0.6+)

  • Chinese Knowledge Base Question Answering(CKBQA)

一、任务

1、任务定义

什么是知识库?

  • 一条条知识,而把大量的知识汇聚起来就成了知识库。

    1
    2
    3
    ex1:奥巴马出生在火奴鲁鲁
    ex2:姚明是中国人
    ex3:谢霆锋的爸爸是谢贤
  • 知识来源:维基百科、百度百科等百科全书

  • 特点:非结构化的自然语言、不适合计算机去处理
  • 三元组(triple)(为了方便计算机的处理和理解,需要更加形式化、简洁化的方式去表示知识)

    1
    2
    3
    4
    - ex1:奥巴马出生在火奴鲁鲁 --> (奥巴马,出生地,火奴鲁鲁)
    - (主语,谓语,宾语)subject predicate object
    - (实体,属性,属性值)entity attribute value
    - (头实体,关系,尾实体)head_entity relation tail_entity
  • 进一步,把实体看作是结点,把关系看作是一条边,包含大量三元组的知识库就构成了一个庞大的知识图谱

什么是知识库问答?

  • 基于知识库问答(knowledge base question answering, KBQA)
  • 即,给定自然语言问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。
  • 按应用领域划分:开放领域(百科知识问答等)和特定领域(金融、医疗、宗教、客服等)
  • 评价指标:召回率、精确率、F1值、MRR(平均倒数排序)
  • 两大关键技术
    • 【实体链指】:将问句中的实体名字链接到知识库中特定的实体上,涉及到实体识别和实体消歧。
    • 【关系抽取】:将问句中的实体关系抽取出来,涉及到词性标注、词法句法分析、关系分类等。
  • 举个栗子:姚明的老婆是什么星座?
    • (姚明,妻子,叶莉)—>(叶莉,星座,天蝎)

CCKS2019CKBQA定义

  • 基于中文知识图谱的自然语言问答,简称 CKBQA
    (Chinese Knowledge Base Question Answering)
  • 即输入一句中文问题,问答系统从给定知识库中选择若干实体或属性值作为该问题的答案。
  • 问题均为客观事实型,不包含主观因素。
  • 理解并回答问题的过程中可能需要进行实体识别、关系抽取、语义解析等子任务。
  • 这些子任务的训练可以使用额外的资源,但是最终的答案必须来自给定的知识库。

2、相关评测

简单问题:NLPCC 2015-2018 (对应单元组查询)

复杂问题:CCKS 2018-2019 (对应多元组查询)

3、相关数据

训练集

NLPCC 2016(14609条)2016、2018测试集答案
1
2
3
4
5
6
<question id=1>	《机械设计基础》这本书的作者是谁?
<answer id=1> 杨可桢,程光蕴,李仲生
==================================================
<question id=2> 《高等数学》是哪个出版社出版的?
<answer id=2> 武汉大学出版社
==================================================
CCKS 2019 (2298条)
1
2
3
4
5
6
7
q1:莫妮卡·贝鲁奇的代表作?
select ?x where { <莫妮卡·贝鲁奇> <代表作品> ?x. }
<西西里的美丽传说>

q2:《湖上草》是谁的诗?
select ?x where { ?x <主要作品> <湖上草>. }
<柳如是_(明末"秦淮八艳"之一)>

知识库

NLPCC 2016 知识库网盘
  • 三元组(43063796条)

    1
    2
    3
    4
    5
    空气干燥 ||| 别名 ||| 空气干燥
    空气干燥 ||| 中文名 ||| 空气干燥
    空气干燥 ||| 外文名 ||| air drying
    空气干燥 ||| 形式 ||| 两个
    空气干燥 ||| 作用 ||| 将空气中的水份去除
  • 提及-实体(7623034条)

    1
    2
    3
    4
    5
    空气 干燥 ||| 空气干燥
    air drying ||| 空气干燥 氧化结膜干燥
    罗育德 ||| 罗育德
    鳞 ||| 鳞 公子鳞
    squama ||| 鳞 鳞片
CCKS 2019 知识库网盘,密码:hcu8 开放领域问答的数据+金融领域问答数据 (1/4)
  • 三元组(41009142条):由<>括起的为实体,由””括起的为文本值

    1
    2
    3
    4
    5
    <美国奥可斯(香港)国际控股集团>        <公司名称>      "美国奥可斯(香港)国际控股集团有限公司" .
    <美国奥可斯(香港)国际控股集团> <成立时间> "2007-06-28" .
    <美国奥可斯(香港)国际控股集团> <经营范围> <培训> .
    <美国奥可斯(香港)国际控股集团> <经营范围> <影视> .
    <美国奥可斯(香港)国际控股集团> <公司口号> "品牌立业,质量最好" .
  • 提及 + 实体 + order(13930118条):可以用来辅助选手进行实体链接

    1
    2
    3
    4
    5
    献陵    献陵_(唐高祖李渊陵墓) 1
    献陵 明献陵 2
    献陵 献陵_(朝鲜太宗献陵) 3
    佛罗伦萨 佛罗伦萨_(意大利托斯卡纳大区首府) 1
    佛罗伦萨 佛罗伦萨足球俱乐部 2
  • 实体 + 类型 + 值(25182628条):可以用于检查问题类型和答案类型

    1
    2
    3
    4
    5
    <美国奥可斯(香港)国际控股集团>        <类型>  <文学作品> .
    <美国奥可斯(香港)国际控股集团> <类型> <文化> .
    <寻美中国> <类型> <品牌> .
    <青春是我和你一杯酒的深> <类型> <文学作品> .
    <青春是我和你一杯酒的深> <类型> <网络小说> .

4、相关工作

  • NLPCC2015 第1名评测论文 [1]
  • NLPCC2016 第1-4名评测论文 [2-5]
  • NLPCC2017 第1-2名评测论文 + 会议论文 [6-8]
  • NLPCC2018 第1名评测论文 [9]
  • CCKS2018 第1-3名评测论文 [10-12]
  • CCKS2019 第1-4名评测论文 [13-16]

二、方法

1、创建数据库

  • 图数据库:NEO4J、JENA、gStore(Linux)
  • 关系数据库:MySQL(ours)、PostgreSQL
  • 注意:
    1
    2
    3
    4
    5
    6
    7
    8
    统计字段长度
    检查数据正误
    设置主键:id 自增
    创建索引
    设置编码:utf8mb4
    设置引擎:Innodb
    建立访客用户
    Python - pymysql

2、创建训练数据

分类单多跳问句(二分类)

  • 单跳:SPARQL 只出现一个三元组

    1
    2
    3
    q1:莫妮卡·贝鲁奇的代表作?
    select ?x where { <莫妮卡·贝鲁奇> <代表作品> ?x. }
    <西西里的美丽传说>
  • 双跳:SPARQL 出现两个以上三元组

    1
    2
    3
    q616:红豆的演唱者出生在?
    select ?y where { ?x <代表作品> <红豆_(王菲演唱歌曲)>. ?x <出生地> ?y. }
    <东城区_(北京市东城区)>

分类链式问句(二分类)

  • 链式:SPARQL 多个三元组呈递进关系,x->y->z,非交集关系
    1
    2
    3
    4
    5
    6
    7
    q894:纳兰性德的父亲担任过什么官职?
    select ?y where { <纳兰性德> <父亲> ?x. ?x <主要职位> ?y. }
    "武英殿大学士" "太子太傅"

    q554:宗馥莉任董事长的公司的公司口号是?
    select ?y where { ?x <董事长> <宗馥莉>. ?x <公司口号> ?y. }
    "win happy health,娃哈哈就在你身边"

主谓宾分类(三分类)

  • 问句的答案对应三元组里面的主语,spo=0

    1
    2
    3
    q70:《悼李夫人赋》是谁的作品?
    select ?x where { ?x <代表作品> <悼李夫人赋>. }
    <汉武帝_(汉朝皇帝)>
  • 问句的答案对应三元组里面的谓语,spo=1

    1
    2
    3
    q506:林徽因和梁思成是什么关系?
    select ?x where { <林徽因_(中国建筑师、诗人、作家)> ?x <梁思成>. }
    <丈夫>
  • 问句的答案对应三元组里面的宾语,spo=2

    1
    2
    3
    q458:天津大学的现任校长是谁?
    select ?x where { <天津大学> <现任校长> ?x . }
    <李家俊_(天津市委委员,天津大学校长)>

实体提及识别(NER序列标注)

  • 根据训练语料的SPARQL语句,查找实体的提及,反向构建训练数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    q1408:电影《怦然心动》的主要演员?
    select ?x where { <怦然心动_(美国2010年罗伯·莱纳执导电影)> <主演> ?x. }
    <艾丹·奎因> <玛德琳·卡罗尔> <卡兰·麦克奥利菲> <约翰·玛哈尼> <摩根·莉莉>

    电 O
    影 O
    《 O
    怦 B-LOC
    然 I-LOC
    心 I-LOC
    动 I-LOC
    》 O
    的 O
    主 O
    要 O
    演 O
    员 O
    ? O

关系抽取(语义相似度计算,二分类)

  • 查找实体的关系中与问句最相近的关系
  • 一个正例,再从对应实体的关系中随机抽取5个作为负例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    q267:里奥·梅西的生日是什么时候?
    select ?x where { <里奥·梅西_(阿根廷足球运动员)> <出生日期> ?x . }
    "1987-06-24"

    里奥·梅西的生日是什么时候? 出生日期 1
    里奥·梅西的生日是什么时候? 妻子 0
    里奥·梅西的生日是什么时候? 所属运动队 0
    里奥·梅西的生日是什么时候? 中文名 0
    里奥·梅西的生日是什么时候? 类型 0
    里奥·梅西的生日是什么时候? 外文名 0

实体链接(二分类)

  • 查找问句中实体提及对应的唯一实体
  • 6个特征:order、提及初始分、问题和提及字符匹配度、问题和实体语义相似度、问题和实体字符匹配度、问题和实体关系的最大相似度 —> 标签
    1
    2
    3
    4
    5
    6
    7
    q2035:张三丰创立了什么门派?
    select ?x where { <张三丰_(武侠小说人物)> <荣誉> ?x . }
    "创立武当派"

    张三丰创立了什么门派? <张三丰_(南宋至明初道士)> 1.0 1.0 0.43 0.15978466 0.6 0.99257445 0
    张三丰创立了什么门派? <张三丰_(武侠小说人物)> 0.9 1.0 0.43 0.97132427 0.58 0.99660385 1
    张三丰创立了什么门派? <张三丰_(桌游《英雄杀》中的英雄之一)> 0.8 1.0 0.43 0.920861 0.38 0.0007164952 0

纠正错误标注

  • 由于时间问题只纠正了一部分
  • 实体中含多余空格:q10、q149、q490、q559、q723、q1191
  • 多个三元组未以’.’分割:q65
  • 实体标注错误:q124、q300、q422、q432、q449、q1699
  • 关系标注错误:q381
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    q10:北京奥运会的口号是什么?
    select ?x where { <2008年北京奥运会 > <口号> ?x. }
    "同一个世界,同一个梦想"
    修正:
    select ?x where { <2008年北京奥运会> <口号> ?x. }

    q124:吉野家创建于什么时候?
    select ?x where { <吉野家> <创始时间> ?x. }
    "1899"
    修正:
    select ?x where { <吉野家_(日本牛肉饭店)> <创始时间> ?x. }

3、训练模型

  • 分类单多跳问句(二分类:BERT 做单句子分类)acc=89.13%

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # acc低的原因:以下问题实则单跳可以解决
    q542:习大大是哪里毕业的?
    select ?y where { ?x <别名> "习大大" . ?x <毕业院校> ?y . }
    "清华大学"

    q1560:小马哥有哪些主要成就?
    select ?y where { ?x <别名>"小马哥". ?x <主要成就> ?y. }
    "改变中国SNS现状" "1998年创立 腾讯公司" "腾讯慈善基金会"

    q1574:习大大什么时候入党?
    select ?y where { ?x <别名> "习大大". ?x <入党时间> ?y . }
    "1974"
  • 分类链式问句(二分类:BERT 做单句子分类)acc=96.15%

  • 主谓宾分类(三分类:BERT 做单句子分类)acc=91.63%
  • 实体提及识别(NER序列标注:BERT+BiLSTM+CRF 的 NER 模型)

    1
    2
    3
    4
    5
    评价指标:召回率 Recall
    只使用单跳数据,初始结果 87.28%
    改进:
    去除提及的书名号和双引号,结果 89.47%,但只能识别0~1个实体提及
    加入单多跳所有数据,模型测试结果 88.24%,可以识别出多个提及
  • 关系抽取(语义相似度计算,二分类:BERT 做句子对分类)

    1
    2
    3
    4
    5
    单跳数据初始结果83.7%,mask掉实体提及81.06%,
    最终模型是混合 nlpcc2016 和 ccks2019 的所有数据
    改进:
    nlpcc2016数据负例是从关系全集中抽取的,
    改成ccks2019从对应实体的所有候选关系中抽取
  • 实体链接(二分类:xgboost 做分类)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    正例结果acc:89.15%,按概率分布评价acc:97.34%
    改进1:
    提及得分:order、1/order、提及初始分、实体长度、实体长度占问题长度比
    实体得分:问题和实体的语义相似度、问题和实体后缀的语义相似度、问题和实体后缀的杰卡德系数
    关系得分:问题和实体关系的最大相似度,问题和实体关系的最大杰卡德系数
    正例结果acc:98.90%,按概率分布评价acc:99.13%,初赛最后一天实现,复赛未能派上用场,很遗憾。

    改进2:
    查找所有候选实体,提及左右进行扩展或删减,外加百度百科搜索
    实体链接后还是没找到实体,采用暴力搜索,逐个字符匹配
    若识别出多个提及,则实体链接也对应多个,但链式问题搜索答案时只使用得分最高的

4、预测数据

  • 实体提及识别要考虑问句中出现的空格问题
    1
    2
    3
    {"id": "q1", "question": "\"成败一知己,生死两妇人\"所说的人物有什么重大成就?", "hop": "1", "spo": "2", "chain": "1", "mention_list": ["成败一知己,生死两妇人"]}
    {"id": "q2", "question": "葬于茂陵的皇帝在位于哪段时间?", "hop": "1", "spo": "0", "chain": "1", "mention_list": ["茂陵", "皇帝"]}
    {"id": "q3", "question": "\"光武中兴\"说的是哪位皇帝?", "hop": "0", "spo": "0", "chain": "0", "mention_list": ["光武中兴"]}

5、搜索答案

流程图

  • 注释

    1
    2
    3
    4
    5
    6
    hop=0 表示是单跳问题(如:姚明的女儿是谁?),hop=1 表示是多跳问题(单跳问题仅需一个三元组,多跳需两个以上)
    spo=0 表示已知谓宾求主语,spo=1 表示已知主宾求谓语,spo=2表示已知主谓求宾语(如:姚明的女儿是谁?)
    chain=0 表示非链式问题,chain= 表示链式问题(如:姚明的女儿的年龄是多少?)
    ner 表示用NER模型识别出问句中的实体提及(如:姚明的女儿是谁? 提及:姚明)
    Entity Linking 表示实体链指,找出提及对应的实体(如:姚明的女儿是谁? 实体:<姚明_(中职联公司董事长兼总经理)>)
    Relation Extraction 表示关系抽取,找出问题中关系(如:姚明的女儿是谁? 关系:<女儿>)
  • 详细介绍

    1
    2
    3
    4
    5
    step1:先对问题进行分类(判断是否单多跳、是否主谓宾、是否链式)和提及识别;
    step2:根据识别到的提及,进行左右扩展或删减,搜索所有的候选实体,根据一组特征对候选实体打分排序(实体链接模型),取top1;
    step3:根据spo值,搜索实体对应的所有关系,与当前问题计算语义相似度(关系抽取模型),取top1,搜索数据库得到统一单跳问题的求解;
    step4:如果是链式且是多跳问题,将step3得到的答案作为实体再进行一遍step3,得到多跳链式问题的求解;
    step5:如果是非链式且识别到多个实体,对每个实体搜索数据库,查询对应的所有候选三元组,然后求交集,得到多跳多实体问题的求解。

三、总结

  • 参加完CCKS2019评测会议后再补充 。。。。。。
  • 本方法暂时没有开源的打算… …

四、参考文献

  • [1] NLPCC2015 1st Ye Z, Jia Z, Yang Y, et al. Research on open domain question answering system[M]//Natural Language Processing and Chinese Computing. Springer, Cham, 2015: 527-540.
  • [2] NLPCC2016 1st Lai Y, Lin Y, Chen J, et al. Open domain question answering system based on knowledge base[M]//Natural Language Understanding and Intelligent Applications. Springer, Cham, 2016: 722-733.
  • [3] NLPCC2016 2nd Yang F, Gan L, Li A, et al. Combining deep learning with information retrieval for question answering[M]//Natural Language Understanding and Intelligent Applications. Springer, Cham, 2016: 917-925.
  • [4] NLPCC2016 3rd Xie Z, Zeng Z, Zhou G, et al. Knowledge base question answering based on deep learning models[M]//Natural Language Understanding and Intelligent Applications. Springer, Cham, 2016: 300-311.
  • [5] NLPCC2016 4th Wang L, Zhang Y, Liu T. A deep learning approach for question answering over knowledge base[M]//Natural Language Understanding and Intelligent Applications. Springer, Cham, 2016: 885-892.
  • [6] NLPCC2017 1st Lai Y, Jia Y, Lin Y, et al. A Chinese question answering system for single-relation factoid questions[C]//National CCF Conference on Natural Language Processing and Chinese Computing. Springer, Cham, 2017: 124-135.
  • [7] NLPCC2017 2nd Zhang H, Zhu M, Wang H. A Retrieval-Based Matching Approach to Open Domain Knowledge-Based Question Answering[C]//National CCF Conference on Natural Language Processing and Chinese Computing. Springer, Cham, 2017: 701-711.
  • [8] NLPCC2017 会议 周博通, 孙承杰, 林磊, et al. 基于LSTM的大规模知识库自动问答[J]. 北京大学学报:自然科学版, 2018.
  • [9] NLPCC2018 1st Ni H, Lin L, Xu G. A Relateness-Based Ranking Method for Knowledge-Based Question Answering[C]//CCF International Conference on Natural Language Processing and Chinese Computing. Springer, Cham, 2018: 393-400.
  • [10] CCKS2018 1st A QA Search Algorithm based on the Fusion Integration of Text Similarity and Graph Computation
  • [11] CCKS2018 2nd A Joint Model of Entity Linking and Predicate Recognition for Knowledge Base Question Answering
  • [12] CCKS2018 3rd Semantic Parsing for Multiple-relation Chinese Question Answering
  • [13] CCKS2019 1st 混合语义相似度的中文知识图谱问答系统
  • [14] CCKS2019 2nd Combining Neural Network Models with Rules for Chinese Knowledge Base Question Answering
  • [15] CCKS2019 3rd Multi-Module System for Open Domain Chinese Question Answering over Knowledge Base
  • [16] CCKS2019 4th DUTIR中文开放域知识库问答评测报告

五、相关博客

坚持原创技术分享,您的支持将鼓励我继续创作!
0%