All Projects → CLUEbenchmark → KgCLUE

CLUEbenchmark / KgCLUE

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

Programming Languages

python
139335 projects - #7 most used programming language
perl
6916 projects
shell
77523 projects

Projects that are alternatives of or similar to KgCLUE

KBQA-Exploration
知识图谱初探,关系抽取,实体抽取,基于kb的问答,基于es的问答,知识图谱可视化
Stars: ✭ 45 (-65.65%)
Mutual labels:  qa, knowledge-graph, kbqa
Capricorn
提供强大的NLP能力, low-code实现chatbot
Stars: ✭ 14 (-89.31%)
Mutual labels:  knowledge-graph, ner, kbqa
Cluedatasetsearch
搜索所有中文NLP数据集,附常用英文NLP数据集
Stars: ✭ 2,112 (+1512.21%)
Mutual labels:  qa, knowledge-graph, ner
Knowledge Graphs
A collection of research on knowledge graphs
Stars: ✭ 845 (+545.04%)
Mutual labels:  knowledge-graph, ner
Lightkg
基于Pytorch和torchtext的知识图谱深度学习框架。
Stars: ✭ 452 (+245.04%)
Mutual labels:  knowledge-graph, ner
Nlp Papers
Papers and Book to look at when starting NLP 📚
Stars: ✭ 111 (-15.27%)
Mutual labels:  qa, ner
WSDM2021 NSM
Improving Multi-hop Knowledge Base Question Answering by Learning Intermediate Supervision Signals. WSDM 2021.
Stars: ✭ 84 (-35.88%)
Mutual labels:  knowledge-graph, kbqa
Nlp Knowledge Graph
自然语言处理、知识图谱、对话系统三大技术研究与应用。
Stars: ✭ 908 (+593.13%)
Mutual labels:  knowledge-graph, ner
Chatbot cn
基于金融-司法领域(兼有闲聊性质)的聊天机器人,其中的主要模块有信息抽取、NLU、NLG、知识图谱等,并且利用Django整合了前端展示,目前已经封装了nlp和kg的restful接口
Stars: ✭ 791 (+503.82%)
Mutual labels:  knowledge-graph, ner
Tianchi Ruijin
瑞金医院MMC人工智能辅助构建知识图谱大赛-baseline
Stars: ✭ 62 (-52.67%)
Mutual labels:  knowledge-graph, ner
chatbot
kbqa task-oriented qa seq2seq ir neo4j jena seq2seq tf chatbot chat
Stars: ✭ 32 (-75.57%)
Mutual labels:  qa, kbqa
SPARQA
SPARQA: Skeleton-based Semantic Parsing for Complex Questions over Knowledge Bases, AAAI 2020
Stars: ✭ 64 (-51.15%)
Mutual labels:  qa, kbqa
fairseq-tagging
a Fairseq fork for sequence tagging/labeling tasks
Stars: ✭ 26 (-80.15%)
Mutual labels:  ner
keras-bert-ner
Keras solution of Chinese NER task using BiLSTM-CRF/BiGRU-CRF/IDCNN-CRF model with Pretrained Language Model: supporting BERT/RoBERTa/ALBERT
Stars: ✭ 7 (-94.66%)
Mutual labels:  ner
aquality-selenium-java
Aquality Selenium is a library built over Selenium WebDriver tool that allows to automate work with web browsers. Selenium WebDriver requires some skill and experience. So, Aquality Selenium suggests simplified and most importantly safer and more stable way to work with Selenium WebDriver.
Stars: ✭ 41 (-68.7%)
Mutual labels:  qa
MobileQA
离线端阅读理解应用 QA for mobile, Android & iPhone
Stars: ✭ 49 (-62.6%)
Mutual labels:  qa
PathCon
Combining relational context and relational paths for knowledge graph completion
Stars: ✭ 29 (-77.86%)
Mutual labels:  knowledge-graph
KNET
Neural Entity Typing with Knowledge Attention
Stars: ✭ 65 (-50.38%)
Mutual labels:  knowledge-graph
whales descriptors
python code for calculating the WHALES (Weighted Holistic Atom Localization and Entity Shape) molecular descriptors
Stars: ✭ 24 (-81.68%)
Mutual labels:  similarity-search
HyperKA
Knowledge Association with Hyperbolic Knowledge Graph Embeddings, EMNLP 2020
Stars: ✭ 27 (-79.39%)
Mutual labels:  knowledge-graph

KgCLUE

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

在线DEMO点击此处体验

内容导引

章节 描述
简介 介绍背景
任务描述 介绍任务的基本信息
数据集介绍 介绍数据集及示例
实现思路 介绍实现的具体思路
实验结果 针对各种不同方法,在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);或加入微信群

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].