# lightKG,lightsmile个人的知识图谱技术框架
## 说明
最近忙着学别的,暂时没怎么管这个lib了,后续会持续更新的。
## 前言
根据知识图谱发展报告2018相关介绍,框架主要设计为有以下五大功能:
- 知识表示学习, Knowledge Representation Learning
- 实体识别与链接, Entity Recognition and Linking
- 实体关系抽取, Entity Relation Extraction
- 事件检测与抽取, Event Detection and Extraction
- 知识存储与查询, Knowledge Storage and Query
- 知识推理, Knowledge Reasoning
因此将有六个主要的功能模块:krl(知识表示学习)、erl(实体识别与链接)、ere(实体关系抽取)、ede(实体检测与抽取)、ksq(知识存储与查询)、kr(知识推理)以及其他功能模块。
## 当前已实现的功能
### 知识表示学习
- 基于翻译模型(Trans系列)的知识表示学习, TransE
### 实体识别与链接
- 命名实体识别, ner
### 实体关系抽取
- 关系抽取, re
### 事件检测与抽取
- 语义角色标注, srl
### 知识存储与查询
### 知识推理
## 安装
本项目基于Pytorch1.0
```bash
pip install lightKG
```
建议使用国内源来安装,如使用以下命令:
```bash
pip install -i https://pypi.douban.com/simple/ lightKG
```
### 安装依赖
由于有些库如pytorch、torchtext并不在pypi源中或者里面只有比较老旧的版本,我们需要单独安装一些库。
#### 安装pytorch
具体安装参见[pytorch官网](https://pytorch.org/get-started/locally/)来根据平台、安装方式、Python版本、CUDA版本来选择适合自己的版本。
#### 安装torchtext
使用以下命令安装最新版本torchtext:
```bash
pip install https://github.com/pytorch/text/archive/master.zip
```
## 模型
- krl:TransE等
- re: TextCNN
- srl: BiLstm-CRF
- ner: BiLstm-CRF
## 训练数据说明
#### krl
csv格式
共三列,依次为`头实体`、`关系`、`尾实体`, 示例如下:
```bash
科学,包涵,自然、社会、思维等领域
科学,外文名,science
科学,拼音,kē xué
科学,中文名,科学
科学,解释,发现、积累的真理的运用与实践
语法学,外文名,syntactics
语法学,中文名,语法学
物理宇宙学,对象,大尺度结构和宇宙形成
物理宇宙学,时间,二十世纪
物理宇宙学,所属,天体物理学
```
#### ner
BIO
训练数据示例如下:
```bash
清 B_Time
明 I_Time
是 O
人 B_Person
们 I_Person
祭 O
扫 O
先 B_Person
人 I_Person
, O
怀 O
念 O
追 O
思 O
的 O
日 B_Time
子 I_Time
。 O
正 O
如 O
宋 B_Time
代 I_Time
诗 B_Person
人 I_Person
```
#### srl
CONLL
训练数据示例如下,其中各列分别为`词`、`词性`、`是否语义谓词`、`角色`,每句仅有一个谓语动词为语义谓词,即每句中第三列仅有一行取值为1,其余都为0.
```bash
宋浩京 NR 0 O
转达 VV 0 O
了 AS 0 O
朝鲜 NR 0 O
领导人 NN 0 O
对 P 0 O
中国 NR 0 O
领导人 NN 0 O
的 DEG 0 O
亲切 JJ 0 O
问候 NN 0 O
, PU 0 O
代表 VV 0 O
朝方 NN 0 O
对 P 0 O
中国 NR 0 B-ARG0
党政 NN 0 I-ARG0
领导人 NN 0 I-ARG0
和 CC 0 I-ARG0
人民 NN 0 E-ARG0
哀悼 VV 1 rel
金日成 NR 0 B-ARG1
主席 NN 0 I-ARG1
逝世 VV 0 E-ARG1
表示 VV 0 O
深切 JJ 0 O
谢意 NN 0 O
。 PU 0 O
```
#### re
训练数据示例如下,其中各列分别为`实体1`、`实体2`、`关系`、`句子`
```bash
钱钟书 辛笛 同门 与辛笛京沪唱和聽钱钟书与钱钟书是清华校友,钱钟书高辛笛两班。
元武 元华 unknown 于师傅在一次京剧表演中,选了元龙(洪金宝)、元楼(元奎)、元彪、成龙、元华、元武、元泰7人担任七小福的主角。
```
## 使用
### krl
#### 训练
```python
from lightkg.krl import KRL
train_path = '/home/lightsmile/NLP/corpus/kg/baike/train.sample.csv'
dev_path = '/home/lightsmile/NLP/corpus/kg/baike/test.sample.csv'
model_type = 'TransE'
krl = KRL()
krl.train(train_path, model_type=model_type, dev_path=train_path, save_path='./krl_{}_saves'.format(model_type))
```
#### 测试
```python
krl.load(save_path='./krl_{}_saves'.format(model_type), model_type=model_type)
krl.test(train_path)
```
#### 预测
##### 根据头实体、关系、尾实体,预测其概率
```python
print(krl.predict(head='编译器', rel='外文名', tail='Compiler'))
```
输出为:
```bash
0.998942494392395
```
##### 根据头实体和关系,预测训练集词表中topk(默认为3)个可能尾实体
```python
print(krl.predict_tail(head='编译器', rel='外文名'))
```
输出为:
```bash
[('Compiler', 0.998942494392395), ('20世纪50年代末', 0.3786872327327728), ('译码器', 0.3767447769641876)]
```
##### 根据头实体和尾实体,预测训练集词表中topk(默认为3)个可能关系
```python
print(krl.predict_rel(head='编译器', tail='Compiler'))
```
输出为:
```bash
[('外文名', 0.998942494392395), ('英译', 0.8240533471107483), ('拼音', 0.4082326292991638)]
```
##### 根据尾实体和关系,预测训练集词表中topk(默认为3)个可能头实体
```python
print(krl.predict_head(rel='外文名', tail='Compiler'))
```
输出为:
```bash
[('编译器', 0.998942494392395), ('译码器', 0.36795616149902344), ('计算机,单片机,编程语言', 0.36788302659988403)]
```
### ner
#### 训练
```python
from lightkg.erl import NER
# 创建NER对象
ner_model = NER()
train_path = '/home/lightsmile/NLP/corpus/ner/train.sample.txt'
dev_path = '/home/lightsmile/NLP/corpus/ner/test.sample.txt'
vec_path = '/home/lightsmile/NLP/embedding/char/token_vec_300.bin'
# 只需指定训练数据路径,预训练字向量可选,开发集路径可选,模型保存路径可选。
ner_model.train(train_path, vectors_path=vec_path, dev_path=dev_path, save_path='./ner_saves')
```
#### 测试
```python
# 加载模型,默认当前目录下的`saves`目录
ner_model.load('./ner_saves')
# 对train_path下的测试集进行读取测试
ner_model.test(train_path)
```
#### 预测
```python
from pprint import pprint
pprint(ner_model.predict('另一个很酷的事情是,通过框架我们可以停止并在稍后恢复训练。'))
```
预测结果:
```bash
[{'end': 15, 'entity': '我们', 'start': 14, 'type': 'Person'}]
```
### re
#### 训练
```python
from lightkg.ere import RE
re = RE()
train_path = '/home/lightsmile/Projects/NLP/ChineseNRE/data/people-relation/train.sample.txt'
dev_path = '/home/lightsmile/Projects/NLP/ChineseNRE/data/people-relation/test.sample.txt'
vec_path = '/home/lightsmile/NLP/embedding/word/sgns.zhihu.bigram-char'
re.train(train_path, dev_path=dev_path, vectors_path=vec_path, save_path='./re_saves')
```
#### 测试
```python
re.load('./re_saves')
re.test(dev_path)
```
#### 预测
```python
print(re.predict('钱钟书', '辛笛', '与辛笛京沪唱和聽钱钟书与钱钟书是清华校友,钱钟书高辛笛两班。'))
```
预测结果:
```python
(0.7306928038597107, '同门') # return格式为(预测概率,预测标签)
```
### srl
#### 训练
```python
from lightkg.ede import SRL
srl_model = SRL()
train_path = '/home/lightsmile/NLP/corpus/srl/train.sample.tsv'
dev_path = '/home/lightsmile/NLP/corpus/srl/test.sample.tsv'
vec_path = '/home/lightsmile/NLP/embedding/word/sgns.zhihu.bigram-char'
srl_model.train(train_path, vectors_path=vec_path, dev_path=dev_path, save_path='./srl_saves')
```
#### 测试
```python
srl_model.load('./srl_saves')
srl_model.test(dev_path)
```
#### 预测
```py
没有合适的资源?快使用搜索试试~ 我知道了~
基于Pytorch和torchtext的知识图谱深度学习框架。.zip
共68个文件
py:55个
txt:6个
tsv:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 83 浏览量
2023-12-07
07:53:50
上传
评论
收藏 93KB ZIP 举报
温馨提示
基于Pytorch和torchtext的知识图谱深度学习框架。.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Pytorch和torchtext的知识图谱深度学习框架。.zip (68个子文件)
lightKG-master
setup.py 1KB
data
srl
train.sample.tsv 13KB
test.sample.tsv 7KB
ner
train.sample.txt 7KB
test.sample.txt 8KB
re
train.sample.txt 16KB
test.sample.txt 16KB
krl
test.sample.csv 11KB
train.sample.csv 40KB
LICENSE 11KB
examples
test_krl.py 738B
test_re.py 686B
test_ner.py 542B
test_srl.py 799B
lightkg
__init__.py 0B
kr
__init__.py 0B
krl
__init__.py 42B
module.py 8KB
utils
__init__.py 0B
get_neg_batch.py 470B
score_func.py 239B
tool.py 3KB
models
__init__.py 54B
transE
__init__.py 0B
model.py 2KB
config.py 405B
config.py 1017B
ksq
__init__.py 0B
utils
__init__.py 0B
learning.py 423B
log.py 3KB
base
__init__.py 0B
module.py 385B
model.py 2KB
tool.py 484B
config.py 130B
ede
srl
__init__.py 0B
module.py 4KB
utils
__init__.py 0B
convert.py 1KB
model.py 4KB
tool.py 3KB
config.py 467B
__init__.py 46B
common
__init__.py 0B
entity.py 31B
relation.py 33B
ere
__init__.py 42B
re
__init__.py 0B
module.py 4KB
utils
__init__.py 0B
preprocess.py 935B
dataset.py 994B
model.py 4KB
tool.py 2KB
config.py 448B
erl
__init__.py 46B
ner
__init__.py 0B
module.py 3KB
utils
__init__.py 0B
convert.py 731B
model.py 3KB
tool.py 3KB
config.py 406B
requirements.txt 102B
.gitignore 101B
README.md 14KB
empty_file.txt 0B
共 68 条
- 1
资源评论
xiaoshun007~
- 粉丝: 3839
- 资源: 3145
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功