G:\B_Packages\PycharmProject\ChineseNRE.zip
标签:
•
文件类型: .zip
•
文件大小: 33.6MB
•
下载次数: 1
•
基于BiLSTM + Attention实现的简单的关系抽取模型,代码效果并不十分理想,代码上传目的是为大家提供基本的实现思路。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-10-26 19:33 ChineseNRE
目录 0 2019-10-30 11:37 ChineseNRE.idea
文件 478 2019-10-24 10:38 ChineseNRE.ideaChineseNRE-master.iml
文件 138 2019-10-24 10:35 ChineseNRE.ideaencodings.xml
文件 301 2019-10-24 10:35 ChineseNRE.ideamisc.xml
文件 293 2019-10-24 10:35 ChineseNRE.ideamodules.xml
文件 29995 2019-10-30 11:37 ChineseNRE.ideaworkspace.xml
文件 5300 2019-10-26 19:33 ChineseNREBiLSTM_ATT.py
文件 2069 2019-10-26 12:37 ChineseNREREADME.md
目录 0 2019-10-26 13:52 ChineseNRE\__pycache__
文件 3192 2019-10-26 13:52 ChineseNRE\__pycache__BiLSTM_ATT.cpython-36.pyc
文件 4628 2019-10-26 10:06 ChineseNRE\__pycache__main.cpython-36.pyc
文件 450 2019-10-26 13:46 ChineseNRE\__pycache__params_config.cpython-36.pyc
文件 6247 2019-10-26 11:39 ChineseNRE\__pycache__utils.cpython-36.pyc
目录 0 2019-10-26 09:50 ChineseNREackup
文件 2943945 2019-10-26 04:00 ChineseNREackupmodel_0005_no_drop_att_score55.pkl
文件 2943943 2019-10-26 01:39 ChineseNREackupmodel_lr_0001.pkl
文件 2943959 2019-10-25 23:00 ChineseNREackupmodel_lr_005.pkl
目录 0 2019-10-26 12:35 ChineseNREdata
目录 0 2019-10-28 18:45 ChineseNREdatapeople-relation
文件 8213 2019-10-28 18:45 ChineseNREdatapeople-relationdata_util.py
文件 119 2019-10-26 10:13 ChineseNREdatapeople-relation
elation2id.txt
文件 32392893 2019-04-21 14:41 ChineseNREdatapeople-relation rain.txt
文件 2909442 2019-10-26 12:35 ChineseNREdatapeople_relation_test.pkl
文件 13815237 2019-10-26 12:35 ChineseNREdatapeople_relation_train.pkl
文件 2909442 2019-10-26 12:35 ChineseNREdatapeople_relation_validate.pkl
文件 9047 2019-10-26 15:41 ChineseNREmain.py
目录 0 2019-10-26 15:07 ChineseNREmodel
文件 2948058 2019-10-26 15:07 ChineseNREmodelmodel_best.pkl
文件 2948058 2019-10-26 15:07 ChineseNREmodelmodel_final.pkl
文件 772 2019-10-26 13:45 ChineseNREparams_config.py
............此处省略2个文件信息
import torch
import torch.nn as nn
import torch.nn.functional as F
torch.manual_seed(1) #为CPU设置种子用于生成随机数,以使得结果是确定的
class BiLSTM_ATT(nn.Module):
def __init__(selfinput_sizeoutput_sizeconfigpre_embedding):
super(BiLSTM_ATTself).__init__()
self.batch = config[‘BATCH‘]
self.input_size = input_size
self.embedding_dim = config[‘embedDING_DIM‘] # 词向量长度
self.hidden_dim = config[‘HIDDEN_DIM‘]
self.tag_size = output_size # 最终结果状态数,即分类数
self.pos_size = config[‘POS_SIZE‘]
self.pos_dim = config[‘POS_DIM‘] #位置编码向量长度
self.pretrained = config[‘pretrained‘]
if self.pretrained:
# freeze = False 表示训练过程中会更新这些词向量,默认为True 也就是不更新
self.word_embeds = nn.embedding.from_pretrained(torch.FloatTensor(pre_embedding)freeze=False)
else:
self.word_embeds = nn.embedding(self.input_sizeself.embedding_dim)
self.pos1_embeds = nn.embedding(self.pos_sizeself.pos_dim) # 实体1的embedding
self.pos2_embeds = nn.embedding(self.pos_sizeself.pos_dim) # 实体2的embedding
self.dense = nn.Linear(self.hidden_dimself.tag_sizebias=True)
self.relation_embeds = nn.embedding(self.tag_sizeself.hidden_dim)
‘‘‘
LSTM 输入变为 pos1_dim + pos2_dim + embedding_dim
LSTM的output 保存了最后一层,每个time step的输出h,如果是双向LSTM,每个time step的输出h = [h正向 h逆向]
TODO 这里hidden_size=hidden_dim/2 保证了后面BiLSTM输出的维度为(seq_lenbatch_sizehidden_dim)
注意hidden_size 与 hidden_dim的区分
hidden_size是单向的LSTM输出的维度
‘‘‘
self.lstm = nn.LSTM(input_size=self.embedding_dim+self.pos_dim*2hidden_size=self.hidden_dim//2num_layers=1 bidirectional=True)
self.hidden2tag = nn.Linear(self.hidden_dimself.tag_size)
‘‘‘
在嵌入层,LSTM层和倒数第二层上使用drop_out。
‘‘‘
self.dropout_emb = nn.Dropout(p=0.5)
self.dropout_lstm = nn.Dropout(p=0.5)
self.dropout_att = nn.Dropout(p=0.5)
self.hidden = self.init_hidden()
# nn.Parameter 类型表示会算入计算图内进行求梯度
self.att_weight = nn.Parameter(torch.randn(self.batch1self.hidden_dim))
self.relation_bias = nn.Parameter(torch.randn(self.batchself.tag_size1))
def init_hidden(self):
return torch.randn(2 self.batch self.hidden_dim // 2)
def init_hidden_lstm(self):
return (torch.randn(2 self.batch self.hidden_dim // 2)
torch.randn(2 self.batch self.hidden_dim // 2))
‘‘‘
BiLSTM 最后一层的输出 (seq_lenbatch_sizehidden_dim)
attention的参数H是经过转置的结果:(batch_sizehidden_dimseq_len)
attention 目的就是根据不同词得到不同词的权重,然后根据权重组合得到整个句子级别的表示
‘‘‘
def attention(selfH):
M = torch.tanh(H) # 非线性变换 size:(batch_sizehidden_dimseq_len)
a = F.softmax(torch.bmm(self.att_weightM)dim=2) # a.Size : (batch_size1seq_len)
a = torch.transpose(a12) # (batch_sizeseq_len1)
return to
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-10-26 19:33 ChineseNRE
目录 0 2019-10-30 11:37 ChineseNRE.idea
文件 478 2019-10-24 10:38 ChineseNRE.ideaChineseNRE-master.iml
文件 138 2019-10-24 10:35 ChineseNRE.ideaencodings.xm
文件 301 2019-10-24 10:35 ChineseNRE.ideamisc.xm
文件 293 2019-10-24 10:35 ChineseNRE.ideamodules.xm
文件 29995 2019-10-30 11:37 ChineseNRE.ideaworkspace.xm
文件 5300 2019-10-26 19:33 ChineseNREBiLSTM_ATT.py
文件 2069 2019-10-26 12:37 ChineseNREREADME.md
目录 0 2019-10-26 13:52 ChineseNRE\__pycache__
文件 3192 2019-10-26 13:52 ChineseNRE\__pycache__BiLSTM_ATT.cpython-36.pyc
文件 4628 2019-10-26 10:06 ChineseNRE\__pycache__main.cpython-36.pyc
文件 450 2019-10-26 13:46 ChineseNRE\__pycache__params_config.cpython-36.pyc
文件 6247 2019-10-26 11:39 ChineseNRE\__pycache__utils.cpython-36.pyc
目录 0 2019-10-26 09:50 ChineseNREackup
文件 2943945 2019-10-26 04:00 ChineseNREackupmodel_0005_no_drop_att_score55.pkl
文件 2943943 2019-10-26 01:39 ChineseNREackupmodel_lr_0001.pkl
文件 2943959 2019-10-25 23:00 ChineseNREackupmodel_lr_005.pkl
目录 0 2019-10-26 12:35 ChineseNREdata
目录 0 2019-10-28 18:45 ChineseNREdatapeople-relation
文件 8213 2019-10-28 18:45 ChineseNREdatapeople-relationdata_util.py
文件 119 2019-10-26 10:13 ChineseNREdatapeople-relation
elation2id.txt
文件 32392893 2019-04-21 14:41 ChineseNREdatapeople-relation rain.txt
文件 2909442 2019-10-26 12:35 ChineseNREdatapeople_relation_test.pkl
文件 13815237 2019-10-26 12:35 ChineseNREdatapeople_relation_train.pkl
文件 2909442 2019-10-26 12:35 ChineseNREdatapeople_relation_validate.pkl
文件 9047 2019-10-26 15:41 ChineseNREmain.py
目录 0 2019-10-26 15:07 ChineseNREmodel
文件 2948058 2019-10-26 15:07 ChineseNREmodelmodel_best.pkl
文件 2948058 2019-10-26 15:07 ChineseNREmodelmodel_final.pkl
文件 772 2019-10-26 13:45 ChineseNREparams_config.py
............此处省略2个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)