代码运行必须从几个接口模块开始;小脚本测试,可模仿接口模块,新写一个接口模块,在其中导入函数运行
├── 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 //依赖包
neo4j数据库
运行
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)
CCKS 2019 | 开放域中文KBQA系统 - 最AI的小PAI的文章 - 知乎
以下提到所有路径都是/home/wangshengguang/下的相对路径
原始数据存放在data/roaw_data 目录下
三元组中实体分两类:<实体>和"属性";
三元组中数据分两类,<实体>和"属性";
预处理时将属性的双引号去掉(包括构建的字典和导入neo4j的数据全部双引号都被去掉了,主要考虑双引号作为json的key不方便保存),方便使用;
kb_data_prepare.py->iter_triples
在最后提交时需要恢复
1. 先做NER识别 主实体
2. 查找实体的关系,做分类,挑选出top 路径
3. 生成sparql查询结果
Recognizer
RelationExtractor
Algorithms
本地端口映射后在本机访问远程图数据库
ssh -f wangshengguang@119.3.178.138 -N -L 7474:localhost:7474
ssh -f wangshengguang@119.3.178.138 -N -L 7687:localhost:7687
wsg
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。