# DeepKE
DeepKE 是基于 Pytorch 的深度学习中文关系抽取处理套件。
## 环境依赖:
> python >= 3.6
- torch >= 1.2
- hydra-core >= 0.11
- tensorboard >= 2.0
- matplotlib >= 3.1
- transformers >= 2.0
- jieba >= 0.39
- ~~pyhanlp >= 0.1.57~~(中文句法分析使用,但是在多句时效果也不好。。求推荐有比较好的中文句法分析)
## 主要目录
```
├── conf # 配置文件夹
│ ├── config.yaml # 配置文件主入口
│ ├── preprocess.yaml # 数据预处理配置
│ ├── train.yaml # 训练过程参数配置
│ ├── hydra # log 日志输出目录配置
│ ├── embedding.yaml # embeding 层配置
│ ├── model # 模型配置文件夹
│ │ ├── cnn.yaml # cnn 模型参数配置
│ │ ├── rnn.yaml # rnn 模型参数配置
│ │ ├── capsule.yaml # capsule 模型参数配置
│ │ ├── transformer.yaml # transformer 模型参数配置
│ │ ├── gcn.yaml # gcn 模型参数配置
│ │ ├── lm.yaml # lm 模型参数配置
├── pretrained # 使用如 bert 等语言预训练模型时存放的参数
│ ├── vocab.txt # BERT 模型词表
│ ├── config.json # BERT 模型结构的配置文件
│ ├── pytorch_model.bin # 预训练模型参数
├── data # 数据目录
│ ├── origin # 训练使用的原始数据集
│ │ ├── train.csv # 训练数据集
│ │ ├── valid.csv # 验证数据集
│ │ ├── test.csv # 测试数据集
│ │ ├── relation.csv # 关系种类
│ ├── out # 预处理数据后的存放目录
├── module # 可复用模块
│ ├── Embedding.py # embedding 层
│ ├── CNN.py # cnn
│ ├── RNN.py # rnn
│ ├── Attention.py # attention
│ ├── Transformer.py # transformer
│ ├── Capsule.py # capsule
│ ├── GCN.py # gcn
├── models # 模型目录
│ ├── BasicModule.py # 模型基本配置
│ ├── PCNN.py # PCNN / CNN 模型
│ ├── BiLSTM.py # BiLSTM 模型
│ ├── Transformer.py # Transformer 模型
│ ├── LM.py # Language Model 模型
│ ├── Capsule.py # Capsule 模型
│ ├── GCN.py # GCN 模型
├── test # pytest 测试目录
├── tutorial-notebooks # simple jupyter notebook tutorial
├── utils # 常用工具函数目录
├── metrics.py # 评测指标文件
├── serializer.py # 预处理数据过程序列化字符串文件
├── preprocess.py # 训练前预处理数据文件
├── vocab.py # token 词表构建函数文件
├── dataset.py # 训练过程中批处理数据文件
├── trainer.py # 训练验证迭代函数文件
├── main.py # 主入口文件(训练)
├── predict.py # 测试入口文件(测试)
├── README.md # read me 文件
```
## 快速开始
数据为 csv 文件,样式范例为:
sentence|relation|head|head_offset|tail|tail_offset
:---:|:---:|:---:|:---:|:---:|:---:
《岳父也是爹》是王军执导的电视剧,由马恩然、范明主演。|导演|岳父也是爹|1|王军|8
《九玄珠》是在纵横中文网连载的一部小说,作者是龙马。|连载网站|九玄珠|1|纵横中文网|7
提起杭州的美景,西湖总是第一个映入脑海的词语。|所在城市|西湖|8|杭州|2
- 安装依赖: `pip install -r requirements.txt`
- 存放数据:在 `data/origin` 文件夹下存放训练数据。训练文件主要有三个文件。更多数据建议使用百度数据库中[Knowledge Extraction](http://ai.baidu.com/broad/download)。
- `train.csv`:存放训练数据集
- `valid.csv`:存放验证数据集
- `test.csv`:存放测试数据集
- `relation.csv`:存放关系种类
- 开始训练:python main.py
- 每次训练的日志保存在 `logs` 文件夹内,模型结果保存在 `checkpoints` 文件夹内。
## 具体介绍
见 [wiki](https://github.com/zjunlp/deepke/wiki)
## 备注(常见问题)
1. 使用 Anaconda 时,建议添加国内镜像,下载速度更快。如[清华镜像](https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)。
1. 使用 pip 时,建议使用国内镜像,下载速度更快,如阿里云镜像。
1. 安装后提示 `ModuleNotFoundError: No module named 'past'`,输入命令 `pip install future` 即可解决。
1. 使用 `python main.py --help` 可以查看所有可配置参数,并定制修改参数结果。参数为 bool 值的,可以用 `1,0` 代替 `True, False`。
- 如 `python main.py epoch=100 batch_size=128 use_gpu=False`
1. 使用 `python main.py xxx=xx,xx -m` 可以多任务处理程序。
- 如 `python main.py model=cnn,rnn,lm chinese_split=0,1 -m` 可以生成 3*2=6 个子任务。
1. 中文英文在数据预处理上有很多不同之处,`serializer.py` 用来专门序列化句子为 tokens。中文分词使用的是 jieba 分词。
- 英文序列化要求:大小写、特殊标点字符处理、特殊英文字符是否分词、是否做 word-piece 处理等。
- 中文序列化要求:是否分词、遇到英文字母是否大小写处理、是否将英文单词拆分按照单独字母处理等。
1. PCNN 预处理时,需要按照 head tail 的位置,将句子分为三段,做 piece wise max pooling。如果句子本身无法分为三段,就无法用统一的预处理方式处理句子。
- 比如句子为:`杭州西湖`,不管怎么分隔都不能分隔为三段。
- 原文分隔三段的方式为:`[...head, ..., tail....]`,当然也可以分隔为:`[..., head...tail, ....]`,或者 `[...head, ...tail, ....]` 或者 `[..., head..., tail...]` 等。具体效果没多少区别。
1. PCNN 为什么不比 CNN 好,甚至更差??
- 本人在跑百度的数据集,也发现 PCNN 效果并没有想象中的比 CNN 有提升,甚至大多时候都不如 CNN 那种直接 max pooling的结果。百度的 [ARNOR](https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/Research/ACL2019-ARNOR) 结果也是 PCNN 并不一定比 CNN 好。
1. 使用语言预训练模型时,在线安装下载模型比较慢,更建议提前下载好,存放到 `pretrained` 文件夹内。具体存放文件要求见文件夹内的 `readme.md`。
1. 数据量较小时,直接使用如12层的 BERT,效果并不理想。此时可采取一些处理方式改善效果:
- 数据量较小时层数调低些,如设置为2、3层。
- 按照 BERT 训练方式,对新任务语料按照语言模型方式预训练。
1. 在单句上使用 GCN 时,需要先做句法分析,构建出词语之间的邻接矩阵(句法树相邻的边值设为1,不相邻为0)。
- ~~目前使用的是 `pyhanlp` 工具构建语法树。这个工具需要按照 java 包,具体使用见 [pyhanlp](https://github.com/hankcs/pyhanlp) 的介绍。~~ pyhanlp 在多句时效果也不理想,很多时候把整个单句当作一个节点。
## 后续工作
- [x] 重构代码,将模型可复用部分单独提取出来
- [ ] 添加经典实体关系联合抽取模型
- [ ] 添加 web 页面,以供预测输入句子信息可视化
> Aut
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目内容包括数据采集、知识存储、知识抽取、知识计算、知识应用五大部分 数据采集 本次项目主要采集构建了两个知识图谱和一个关系抽取数据集 人物知识图谱:主要包含各个人物的信息 关系抽取数据集:标注出自然语言中存在的实体以及他们之间的关系 实体关系知识图谱:构建《海贼王》中各个实体之间关系的知识图谱 知识存储 尝试使用了三元组数据库Apace Jena和原生图数据库Neo4j,并分别使用RDF结构化查询语言SPARQL和属性图查询语言Cypher,在知识图谱上进行查询。 知识抽取 基于之间构建的关系抽取数据集,利用deepke中提供的工具进行关系抽取实践,测试了包括PCNN、GCN、BERT等模型在我们构建数据集上的效果 知识计算 图计算:在Neo4j上对实体关系知识图谱进行了图挖掘,包括最短路径查询、权威结点发现、社区发现等 知识推理:在Apache Jena上对关系知识图谱进行了知识推理,补全了一部分的数据 知识应用 智能问答:基于REfO实现一个对于《海贼王》中人物的知识库问答系统(KBQA)。 可视化图片:通过D3对实体关系图片进行可视化,并整合了人物知识图谱中
资源推荐
资源详情
资源评论


























收起资源包目录





































































































共 469 条
- 1
- 2
- 3
- 4
- 5

汀、人工智能
- 粉丝: 10w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件实施工作总结(1).docx
- 【推荐下载】工业互联网优秀案例:智联供水设备远程数据采集与预测性维护(1).pdf
- 餐饮管理咨询公司网站建设方案(1).doc
- 现代计算机技术在医院财务管理中的应用探讨(1).docx
- 交通运输部门档案管理中的信息化建设探讨(1).docx
- IP通信的现状及发展分析简报(1).docx
- 计算机网络-第2章-物理层省名师优质课赛课获奖课件市赛课一等奖课件(1).ppt
- AUTOCAD转换流程(1).docx
- 电子商务案例分析-案例大全(1).ppt
- 网站后台维护教程(1).ppt
- 河南省贫困地区基础教育信息化建设探究(1).docx
- 软件系统开发合同(模板)讲课讲稿(1).doc
- 在线-福师《计算机应用基础》在线作业一(1).docx
- 机械设计制造与计算机辅助技术结合应用研究(1).docx
- 互联网金融信息服务协议范本(标准版)(1).docx
- “计算机系统构成.xls”选择判断(1).pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
- 3
- 4
- 5
前往页