/KQBA-1

Primary LanguagePython

基于BERT的KBQA系统

项目架构

基于NIPCC知识库问答数据集,利用BERT+BiLSTM+CRF进行命名实体识别,抽取问题中的实体。从知识库中提取实体相关的所有属性,利用BERT训练句子相似度计模型,计算问题与各属性之间的文本相似度,基于相似度对属性排序,最终得到问题答案。

目前只用了知识库实现(MySQL),后续会钻研一下知识图谱。

运行说明

下载文件:

数据集构建(请先更改data_config.py的MySQL配置):

$ mkdir data/NER
$ mkdir data/SIM
$ cd data_helper
$ python ner_data.py
$ python sim_data.py
$ python kb_data.py
$ cd ..

训练命名实体识别模型(NER):

$ cd ner
$ mkdir output
$ ./run_ner.sh
$ cd ..

ner/ner_config.py中的model_file=model/xxxxxxx更改为ner/output/model下的文件夹名称。

训练文本相似度模型(SIM):

$ cd sim
$ mkdir output
$ ./run_sim.sh
$ cd ..

sim/sim_config.py中的model_file=model/xxxxxxx更改为sim/output/model下的文件夹名称。

进行线上的问答测试:

$ python kbqa.py

效果如下:

环境

  • python 3.6.5
  • tensorflow 1.14
  • RTX 2080 Ti