• Stars
    star
    425
  • Rank 102,094 (Top 3 %)
  • Language
    Python
  • Created about 3 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

KgCLUE: 大规模中文开源知识图谱问答

KgCLUE

KgCLUE: 大规模中文开源知识图谱问答

在线DEMO点击此处体验

预约演示:数据集自动标注工具--释放AI潜力!

内容导引

章节 描述
简介 介绍背景
任务描述 介绍任务的基本信息
数据集介绍 介绍数据集及示例
实现思路 介绍实现的具体思路
实验结果 针对各种不同方法,在KgCLUE上的实验对比
实验分析 对模型能力进行分析
KgCLUE有什么特点 特点介绍
基线模型及运行 支持多种基线模型
相关阅读 新方案及其解读
排行榜及提交 排行榜及提交样例
贡献与参与 如何参与项目或反馈问题

简介

KBQA(Knowledge Base Question Answering),即给定自然语言问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。

KBQA利可以用图谱丰富的语义关联信息,能够深入理解用户问题并给出答案,近年来吸引了学术界和工业界的广泛关注。KBQA主要任务是将自然语言问题(NLQ)通过不同方法映射到结构化的查询,并在知识图谱中获取答案。

KgCLUE:中文KBQA测评基准,基于CLUE的积累和经验,并结合KBQA的特点和近期的发展趋势,精心设计了该测评,希望可以促进中文领域上KBQA领域更多的研究、应用和发展。

UPDATE:

******* 2021-12-18:添加完整基线模型(baselines/ner_sim),包括预训练脚本及训练好的模型的下载地址

******* 2021-11-27:添加支持KgCLUE的Roberta-wwm-ext的baseline

******* 2021-11-15:添加支持KgCLUE的Roberta-wwm-large的baseline

******* 2021-11-03: 添加支持KgCLUE的Bert的baseline

******* 2021-11-02: 添加了知识库和问答数据集。

任务描述

KBQA任务即为给定一份知识库和一份问答数据集,从问答数据集中学习问题语义然后从知识库中查询答案。本测评提供了一份中文百科知识库和一份问答数据集。

数据集介绍

知识库介绍

知识库可通过百度云,提取码:nhsb,或着Google云下载。

下载后,请将其放入knowledge文件夹中。

知识库(三元组)统计信息

实体数量 关系数量 高频关系(>100) 三元组数量
3121457 245838 3833 20559652

知识库来源于百科类数据,由百科类搜索页面的事实性三元组构成。

知识库描述

知识库中数据存储格式如上,每一行是一个三元组,格式为<头实体,关系,尾实体>,每列之间以'\t'分隔,
其中头实体后的括号项为该实体的消歧项。

问答数据集统计信息

Corpus Train Dev Test Public Test Private
Num Samples 18k 2k 2k 3k
Num Relations 2164 1258 1260 423
问答数据集为one-hop数据,总共包含25000条问答对。
数据集分为4份:1份训练集(Train);1份验证集(Dev);1份公开测试集(Test Public),用于测试;1份私有测试集(Test Private),用于提交,不公开。

问答数据集描述

问答数据集为json格式,每行为一条问答对。问题是one-hop问题,即答案为知识库中的一条三元组。数据格式如下,其中id为问答对索引,quetion为问题,answer为答案,来自知识库,以' ||| '分割。

实验结果

实验设置:训练集和验证集使用训练集与验证集,测试集使用公开测试集。

实现思路

下面简单介绍该任务的baseline的构建思路,但并不对任务数据进行详细介绍,如对任务数据不明白,请返回数据集介绍部分

以下图片仅为思路参考,总体思路:

1.利用NER模型进行实体识别(S);
2.根据识别到的实体,通过es接口找到可能的候选关系的列表;
3.训练相似度模型进行关系预测:输入为问句和候选关系,找到最可能的关系(P);
4.最后根据实体(S)、关系(P)定位到答案(O,即尾实体)

NER阶段

做NER任务,如图所示用于识别出问题中的实体。

SIM阶段

我们使用句子分类任务(二分类),把问题和关系(属性)拼接到一起,用于判断问题要问的是不是这个属性。

基线模型及运行

环境依赖

1)NER模型:
python3.6+ 1.1.0 =< pytorch < 1.5.0, or 1.7.1 2)SIM模型 python3.6+ tensorflow 1.14+ bert4keras, 0.10.8

如何运行

进入到ner_re的目录(cd baselines/ner_re);
然后顺序执行以下命令:1)训练NER模型;2)训练相似度模型;3)生成预测文件并提交。

1.NER模型(pytorch)

1.0 下载预训练模型

下载并将预训练模型(chinese_rbt3_pytorch)放入到prev_trained_model目录。 pytorch版用于NER,tensorflow版用于相似度模型。

1.1 训练NER模型
bash scripts/run_ner_softmax.sh 

其中,处理成NER训练数据的主要代码:processors/utils_ner.py的DataProcessor(65-96行)

已经训练好的NER模型下载

1.2 对测试集(test.json)进行预测,生成NER结果
bash scripts/run_ner_softmax.sh predict

预测结果在这里:./outputs/kg_output/bert/test_prediction.json
生成的示例如:
{"id": 0, "tag_seq": "O O O O B-NER I-NER I-NER O O O O O O", "entities": [["NER", 4, 6]]}
{"id": 1, "tag_seq": "O O B-NER I-NER I-NER O O O O O O O O", "entities": [["NER", 2, 4]]}
{"id": 2, "tag_seq": "O O B-NER I-NER I-NER I-NER I-NER I-NER I-NER O O O O O O O O", "entities": [["NER", 2, 8]]}

2.SIM(相似度)模型

2.1 生成相似度训练数据
python3 -u  sim/process_sim_data.py

其中,生成的相似度训练数据所在的目录为:./processed_data

已经训练好的相似度(SIM)模型下载

2.2 训练SIM模型
python3 -u sim/train.py

其中,相似度模型所在的位置:./outputs/kg_sim_output
测试单个输入的相似度(可选)
python3 -u sim/predict.py

3. 生成预测文件并提交

python3 -u submit/generate_submit_file.py

生成的文件为:./kgclue_predict_rbt3.json

使用如下命令压缩文件:zip -r kgclue_predict_rbt3.zip kgclue_predict_rbt3.json

提交预测文件到测评系统,并查看:榜单效果

基线模型详细介绍见:./baselines/ner_re/README.md

相关阅读

《Seq2Seq+前缀树:检索任务新范式(以KgCLUE为例)》,苏剑林

本文介绍了检索模型的一种新方案——“Seq2Seq+前缀树”,并以KgCLUE为例给出了一个具体的baseline。
“Seq2Seq+前缀树”的方案有着训练简单、空间占用少等优点,也有一些不足之处,总的来说算得上是一种简明的有竞争力的方案。

我们还提供了另一个代码库可以更简单方便的复现我们的效果https://github.com/CLUEbenchmark/KgCLUEbench

效果评估脚本

 Score=EM_O * 0.50 + F1_O * 0.50

evaluate_f1_em.py

实验分析

1.测评结果 Benchmark Results

1.1 模型评测指标

我们采用业界常用的F1-score 以及完全匹配(Exact Match下简称EM)来作为模型的评测指标

F1-score:F1-score是分类问题的常用指标,广泛用于 QA。 当我们同样关心精度和召回率时用F1就十分合适。 在这种情况下,它是针对预测中的单个单词与真实答案中的单词进行计算的。 预测和真值之间的共享词数是F1分数的基础:精度是预测中共享词的数量与总词数的比值,召回率是共享词数的比值 到基本事实中的单词总数。

完全匹配(Exact Match):对于每个问题+答案对,如果模型预测的答案的字符与正确答案(之一)的字符完全匹配,则 EM = 1,否则 EM = 0。这是一个严格的有或无的指标; 如有单字错误仍然得分为 0。在针对负面示例进行评估时,如果模型预测了任何文本,它会自动为该示例得分为 0。

1.2 模型表现分析 Analysis of Model Performance

baseline都使用预训练模型直接做下游任务微调 bert-base-chinese,chinese-roberta-wwm-ext-large以及chinese-roberta-wwm-ext

我们发现:

1)参照过往工作,三个个模型的F1和EM分数都属于中等水平 说明对于中文KBQA领域,模型还有很大的发展空间

2)模型的效果会对下游任务分数有所提升

3)在NER和similarity的阶段的效果影响结果较大,参考过往工作,我们的baseline模型两阶段分数处于中下等水平,还是有很大的发展空间

4)我们曾使用过不同难度的数据训练以及测试模型,发现数据处理对分数的影响较大,或许可以设法通过难样本挖掘构建难样本进行更有效训练

KgCLUE有什么特点

1、KBQA利用的是结构化的知识,其数据来源决定了适合回答what,when 等事实性问题。

2、KBQA的研究,根据目标问题的性质,可以分为几个方向。第一个是单跳问题 (one hop) ,第二个是多跳问题 (multi hop)。单跳问题是指可以通过知识库中某一条事实三元组来回答,而多跳问题是指需要知识库中的多条事实三元组来回答。KgCLUE第一版(即KgCLUE1.0)针对的是单跳问题构建的数据集。

3、测评的主要目标是KBQA,根据KBQA任务的特点,可以考察近年来的实体识别、关系分类以及实体链接等子任务的发展。

此外,我们提供KBQA测评完善的基础设施。 从任务设定,广泛的数据集,多个有代表性的基线模型及效果对比,一键运行脚本,到测评系统等完整的基础设施。

排行榜及提交

提交说明

训练端到端或非端到端模型,在非公开测试集上test.json进行预测, 生成kgclue_predict.json并压缩,得到kgclue_predict.zip;然后提交到CLUE测评系统

提交样例

排行榜

问题 Question

1. 问:测试系统,什么时候开发?
   答:测评系统在2021年12月1日后开放。
2. 问:SIM训练的数据集标注怎么搞?
   答:问题原样本属性为正,再随机从样本中其他属性抽5个设为负(你也可以设法通过难样本挖掘构建难样本进行更有效训练)。
3. 问:什么是属性?
   答:三元组中间那列数据,如图所示

贡献与参与

1.问:我有符合代码规范的模型代码,并经过测试,可以贡献到这个项目吗?
 答:可以的。你可以提交一个pull request,并写上说明。我们会设法在24小时内反馈。

2.问:我正在研究KBQA学习,具有较强的模型研究能力,怎么参与到此项目?
  答:发送邮件到 [email protected],标题为:参与KgCLUE课题,并介绍一下你的研究。

3.如何交流?
 提交你的issue;加QQ群(群号:836811304);或加入微信群

More Repositories

1

CLUEDatasetSearch

搜索所有中文NLP数据集,附常用英文NLP数据集
Python
4,133
star
2

CLUE

中文语言理解测评基准 Chinese Language Understanding Evaluation Benchmark: datasets, baselines, pre-trained models, corpus and leaderboard
Python
3,983
star
3

SuperCLUE

SuperCLUE: 中文通用大模型综合性基准 | A Benchmark for Foundation Models in Chinese
2,974
star
4

CLUENER2020

CLUENER2020 中文细粒度命名实体识别 Fine Grained Named Entity Recognition
Python
1,441
star
5

CLUECorpus2020

Large-scale Pre-training Corpus for Chinese 100G 中文预训练语料
919
star
6

CLUEPretrainedModels

高质量中文预训练模型集合:最先进大模型、最快小模型、相似度专门模型
Python
803
star
7

FewCLUE

FewCLUE 小样本学习测评基准,中文版
Python
492
star
8

pCLUE

pCLUE: 1000000+多任务提示学习数据集
Jupyter Notebook
467
star
9

SimCLUE

3000000+语义理解与匹配数据集。可用于无监督对比学习、半监督学习等构建中文领域效果最好的预训练模型
Python
277
star
10

CLGE

Chinese Language Generation Evaluation 中文生成任务基准测评
Python
246
star
11

OCNLI

OCNLI: 中文原版自然语言推理任务
Python
145
star
12

DataCLUE

DataCLUE: 数据为中心的NLP基准和工具包
Python
144
star
13

SuperCLUElyb

SuperCLUE琅琊榜:中文通用大模型匿名对战评价基准
141
star
14

ELECTRA

中文 预训练 ELECTRA 模型: 基于对抗学习 pretrain Chinese Model
140
star
15

PyCLUE

Python toolkit for Chinese Language Understanding(CLUE) Evaluation benchmark
Python
128
star
16

SuperCLUE-Llama2-Chinese

Llama2开源模型中文版-全方位测评,基于SuperCLUE的OPEN基准 | Llama2 Chinese evaluation with SuperCLUE
127
star
17

SuperCLUE-Safety

SC-Safety: 中文大模型多轮对抗安全基准
100
star
18

SuperCLUE-RAG

中文原生检索增强生成测评基准
94
star
19

DistilBert

DistilBERT for Chinese 海量中文预训练蒸馏bert模型
89
star
20

SuperCLUE-Agent

SuperCLUE-Agent: 基于中文原生任务的Agent智能体核心能力测评基准
78
star
21

SuperCLUE-Open

中文通用大模型开放域多轮测评基准 | An Open Domain Benchmark for Foundation Models in Chinese
76
star
22

QBQTC

QBQTC: 大规模搜索匹配数据集
Python
69
star
23

CLUEWSC2020

CLUEWSC2020: WSC Winograd模式挑战中文版,中文指代消解任务
67
star
24

modelfun

一站式自动化开源标注平台
Java
62
star
25

MobileQA

离线端阅读理解应用 QA for mobile, Android & iPhone
Python
60
star
26

LightLM

高性能小模型测评 Shared Tasks in NLPCC 2020. Task 1 - Light Pre-Training Chinese Language Model for NLP Task
Python
57
star
27

ZeroCLUE

零样本学习测评基准,中文版
Python
54
star
28

SuperCLUE-Math6

SuperCLUE-Math6:新一代中文原生多轮多步数学推理数据集的探索之旅
Python
40
star
29

SuperCLUE-Auto

汽车行业中文大模型测评基准,基于多轮开放式问题的细粒度评测
28
star
30

KgCLUEbench

benchmark of KgCLUE, with different models and methods
Python
26
star
31

SuperCLUE-Role

SuperCLUE-Role中文原生角色扮演测评基准
21
star
32

SuperCLUE-Llama3-Chinese

Llama3开源模型中文版-全方位测评,基于SuperCLUE基准 | Llama3 Chinese Evaluation with SuperCLUE
17
star
33

SuperCLUE-Video

中文原生多层次文生视频测评基准
16
star
34

LGEB

LGEB: Benchmark of Language Generation Evaluation
Python
16
star
35

SuperCLUE-Industry

中文原生工业测评基准
13
star
36

SuperCLUEgkzw

SuperCLUE高考作文机器自动阅卷系统
12
star
37

SuperCLUE-Code3

中文原生等级化代码能力测试基准
10
star
38

KGQA

Knowledge Graph based Question Answering benchmark.
10
star
39

SuperCLUE-ICabin

汽车智能座舱大模型测评基准
9
star
40

chatbotzh

This is a Chatbot designed for Chinese developers base on RASA. You could deploy your bot quickly with the help of this things.
Python
8
star
41

CLUEmotionAnalysis2020

CLUE Emotion Analysis Dataset 细粒度情感分析数据集
Python
7
star
42

SuperCLUE-Image

中文原生文生图测评基准
7
star
43

SuperCLUE-Fin

中文金融大模型测评基准,六大类二十五任务、等级化评价,国内模型获得A级
7
star
44

SuperCLUE-Long

中文原生长文本测评基准
5
star
45

SuperCLUE-V

中文原生多模态理解测评基准(测评方案)
3
star
46

2024h1

中文大模型基准测评2024上半年度报告,Report of LLMs in Chinese, First Half of 2024
1
star