# CCKS-2020
- [CCKS 2020:新冠知识图谱构建与问答评测(四)新冠知识图谱问答评测
](https://biendata.com/competition/ccks_2020_7_4/)
### 0. 代码结构
- 主要有三大模块:
1. dataset模块:数据预处理等与数据相关的
1. config.py 所有文件路径写这里,方便查找
2. models模块:各种深度学习模型
3. qa模块:将训练好的模型和策略组合应用,完成问答
**代码运行必须从几个接口模块开始;小脚本测试,可模仿接口模块,新写一个接口模块,在其中导入函数运行**
├── dao //数据库接口,准备做辅助缓存
├── dataset //数据相关
│ ├── data_prepare.py //train数据预处理,将给定训练数据做各种处理,构造字典等
│ └── kb_data_prepare.py //图谱数据预处理,将给定图谱做各种转换,构造字典等
├── layers //损失函数等
├── models //模型
│ ├── entity_score // 对识别出的主实体打分模型
│ │ └── model.py // 模型定义
│ ├── ner //主实体识别模型
│ │ └── model.py // 模型定义
│ ├── relation_score //对实体关联的关系打分的模型
│ │ ├── model.py // 模型定义
│ │ ├── predictor.py // 模型封装用作后续预测
│ │ └── trainer.py // 模型训练
│ ├── base_trainer.py //训练模块;模型初始化到训练
│ ├── data_helper.py //train数据处理成合适的格式,feed给模型
│ └── evaluation_matrics.py // 指标计算
├── qa //问答模块
│ ├── algorithms.py // 后处理算法
│ ├── cache.py // 大文件,在单例模式缓存;避免多次载入内存;ent2id等放在这里,提供给其他模块公共使用
│ ├── el.py //entity link,实体链接(主实体识别模块)
│ ├── entity_score.py // 对识别出的主实体打分模型
│ ├── lac_tools.py // 分词模块自定义优化等
│ ├── neo4j_graph.py //图数据库查询缓存等
│ ├── qa.py //问答接口,将其他模块组装到这里完成问答
│ └── relation_extractor.py //实体关联关系识别
├── utils //通用工具
├── docs //文档
├── examples //临时任务,模块试验等,单个脚本
├── tests //测试
├── config.py //所有数据路径和少量全局配置
├── data.py //所有数据处理的入口文件
├── evaluate.py //模块评测入口文件
├── manage.py //所有模型训练的入口文件
├── qa.py //问答入口文件
├── README.md //说明文档
└── requirements.txt //依赖包
### 1. 图数据库
- 知识库管理系统
- [gStore](http://gstore-pku.com/pcsite/index.html)
- [gStore - github](https://github.com/pkumod/gStore/blob/master/docs/DOCKER_DEPLOY_CN.md)
- SPARQL
- 国际化资源标识符(Internationalized Resource Identifiers,简称IRI),与其相提并论的是URI(Uniform Resource Identifier,统一资源标志符)。
使用<uri>来表示一个IRI
- Literal用于表示三元组中客体(Object),表示非IRI的数据,例如字符串(String),数字(xsd:integer),日期(xsd:date)等。
普通字符串等 "chat"
- [RDF查询语言SPARQL - SimmerChan的文章 - 知乎
](https://zhuanlan.zhihu.com/p/32703794)
neo4j数据库
- 安装
https://segmentfault.com/a/1190000015389941
- 运行
cd /home/wangshengguang/neo4j-community-3.4.5/bin
./neo4j start
./neo4j stop
- 数据导入
cd /home/wangshengguang/neo4j-community-3.4.5/bin
./neo4j-admin import --database=graph.db --nodes /home/wangshengguang/ccks-2020/data/graph_entity.csv --relationships /home/wangshengguang/ccks-2020/data/graph_relation.csv --ignore-duplicate-nodes=true --id-type INTEGER --ignore-missing-nodes=true
- 创建索引
CREATE CONSTRAINT ON (ent:Entity) ASSERT ent.id IS UNIQUE;
CREATE INDEX ON :Entity(name)
CREATE INDEX ON :Relation(name)
- [neo4j学习笔记(三)——python接口-创建删除结点和关系](https://blog.csdn.net/qq_36591505/article/details/100987105)
- [neo4j︱与python结合的py2neo使用教程(四)](https://blog.csdn.net/sinat_26917383/article/details/79901207)
- [neo4j中文文档](http://neo4j.com.cn/public/docs/index.html)
## 2. 历年方案
- [CCKS 2019 | 开放域中文KBQA系统 - 最AI的小PAI的文章 - 知乎
](https://zhuanlan.zhihu.com/p/92317079)
1. 首先在句子中找到主题实体。在这里,我们使用了比赛组织者提供的Entity-mention文件和一些外部工具,例如paddle-paddle。
**2. 然后在关系识别模块中,通过提取知识图中的主题实体的子图来找到问题(也称为谓词)的关系。通过相似性评分模型获得所有关系的排名。**
3. 最后,在答案选择模块中,根据简单复杂问题分类器和一些规则,得出最终答案。
- [百度智珠夺冠:在知识图谱领域百度持续领先 ](https://www.sohu.com/a/339187520_630344)
1. 实体链接组件把问题中提及的实体链接到了知识库,并识别问题的核心实体。为了提高链接的精度,链接组件综合考虑了实体的子图与问题的匹配度、实体的流行度、指称正确度等多种特征,最后利用 LambdaRank 算法对实体进行排序,得到得分最高的实体。
2. 子图排序组件目标是从多种角度计算问题与各个子图的匹配度,最后综合多个匹配度的得分,得到出得分最高的答案子图。
3. 针对千万级的图谱,百度智珠团队采用了自主研发的策略来进行子图生成时的剪枝,综合考虑了召回率、精确率和时间代价等因素,从而提高子图排序的效率和效果。
针对开放领域的子图匹配,采用字面匹配函数计算符号化的语义相似,应用 word2vec 框架计算浅层的语义匹配,最后应用 BERT 算法做深度语义对齐。
除此之外,方案还针对具体的特征类型的问题进行一系列的意图判断,进一步提升模型在真实的问答场景中的效果和精度,更好地控制返回的答案类型,更符合真实的问答产品的需要。
- http://nlpprogress.com/
## 3. 数据分析及预处理
以下提到所有路径都是/home/wangshengguang/下的相对路径
### 3.1 原始数据
原始数据存放在data/roaw_data 目录下
1. 问答数据 data/raw_data/ccks_2020_7_4_Data下
1. 有标注训练集15999:data/raw_data/ccks_2020_7_4_Data/task1-4_train_2020.txt
2. 无标注验证集(做提交)1529:data/raw_data/ccks_2020_7_4_Data/task1-4_valid_2020.questions
2. 图谱数据 data/raw_data/PKUBASE下
1. 所有三元组66499745:data/raw_data/PKUBASE/pkubase-complete.txt
### 3.2 数据分析
三元组中实体分两类:<实体>和"属性";
### 3.3 预处理tips:
三元组中数据分两类,<实体>和"属性";
预处理时将属性的双引号去掉(包括构建的字典和导入neo4j的数据全部双引号都被去掉了,主要考虑双引号作为json的key不方便保存),方便使用;
kb_data_prepare.py->iter_triples
在最后提交时需要恢复
## 4. 目前方案
1. 先做NER识别 主实体
2. 查找实体的关系,做分类,挑选出top 路径
3. 生成sparql查询结果
### 4.1 主实体识别模块
EL
### 4.2 关系打分模块
RelationExtractor
### 4.3 后处理模块
Algorithms
## Others
- 本地端口映射后在本机访问远程图数据库
ssh -f wangshengguang@remotehost -N -L 7474:localhost:7474
ssh -f wangshengguang@remotehost -N -L 7687:localhost:7687
访问:[http://localho
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。 知识图谱的核心价值在于其能够精确、直观地表示复杂世界中的知识,并支持高效的知识查询与推理。例如,在搜索引擎中,知识图谱可以提升搜索结果的相关性和准确性,为用户提供直接的答案而非仅仅是网页链接。同时,知识图谱还能支撑高级的人工智能应用,比如问答系统、推荐系统、决策支持等领域。 构建知识图谱的过程通常包括数据抽取、知识融合、实体识别、关系抽取等多个步骤,涉及到自然语言处理、机器学习、数据库技术等多种技术手段。知识图谱的不断完善有助于实现从海量信息中挖掘深层次、有价值的知识,从而推动人工智能向着更加理解人类世界的智慧方向发展。 总之,知识图谱是一个大规模、多领域、多源异构知识集成的载体,是实现智能化信息系统的基础工具和关键基础设施,对于提升信息检索质量、推动智能应用研发具有重要作用。
资源推荐
资源详情
资源评论
收起资源包目录
CCKS 2020:新冠知识图谱构建与问答评测(四)新冠知识图谱问答评测.zip (65个子文件)
SJT-code
ckbqa
__init__.py 0B
layers
__init__.py 0B
losses.py 578B
modules.py 687B
qa
__init__.py 92B
cache.py 636B
neo4j_graph.py 7KB
el.py 10KB
relation_extractor.py 4KB
lac_tools.py 7KB
qa.py 4KB
algorithms.py 3KB
utils
__init__.py 0B
async_tools.py 801B
sequence.py 4KB
logger.py 1KB
saver.py 2KB
decorators.py 2KB
gpu_selector.py 2KB
tools.py 5KB
dao
__init__.py 0B
sqlite_utils.py 680B
db_tools.py 3KB
sqlite_models.py 2KB
mongo_models.py 1KB
db.py 4KB
mongo_utils.py 280B
dataset
__init__.py 0B
kb_data_prepare.py 12KB
data_prepare.py 2KB
models
__init__.py 0B
ner
__init__.py 22B
model.py 3KB
crf.py 15KB
evaluation_matrics.py 734B
relation_score
__init__.py 0B
trainer.py 5KB
predictor.py 2KB
model.py 2KB
base_trainer.py 1KB
data_helper.py 1KB
entity_score
__init__.py 0B
model.py 2KB
evaluate.py 6KB
tests
test_ceg.py 888B
__init__.py 0B
test_.py 2KB
port_map.sh 139B
examples
__init__.py 311B
single_example.py 2KB
del_method.py 226B
kb_data.py 4KB
lac_test.py 2KB
top_path.py 1KB
answer_format.py 807B
bad_case.py 10KB
docs
CCKS 2019 知识图谱评测技术报告:实体、关系、事件及问答 .pdf 993KB
bad_case.md 2KB
manage.py 3KB
data.py 2KB
.gitignore 2KB
EDA.ipynb 11KB
README.md 8KB
qa.py 7KB
config.py 6KB
共 65 条
- 1
资源评论
JJJ69
- 粉丝: 6353
- 资源: 5918
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数据库开发基于数据库层面批量生成有逻辑关联的数据
- 电报机器人开发框架.zip
- C++(C++98、C++03、C++11)实现的线程池.zip
- com.huawei.it.ilearning.android_v260.apk
- 鸟类目标检测数据集-含画眉鸟-百灵鸟xml文件数据集
- pyheif-0.8.0-cp37-cp37m-win-amd64.whl.zip
- 基于深度学习的鸟类种类目标检测-含数据集和训练代码-对百灵鸟-画眉鸟检测.zip
- pyheif-0.8.0-cp38-cp38-win-amd64.whl.zip
- pyheif-0.8.0-cp39-cp39-win-amd64.whl.zip
- pyheif-0.8.0-cp313-cp313-win-amd64.whl.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功