通过变量理解bigru的工作过程

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。

  本文主要介绍了通过变量理解bigru的工作过程,希望能对学习GRU的同学们有所帮助。

vec

vec:array of word vec:
[
[-0.058550 0.125846 -0.083195 0.031818 -0.183519…], —>‘,’
[0.087197 -0.083435 0.057956 0.143120 -0.000068…], ---->‘的’

]
每一行都是一个词的向量,最后两行是随机生成的正态分布数据,对应下面的UNK和BLANK

word2id

word2id:dictionary of word and its index
{
‘,’: 0,
‘的’: 1,
…,
‘UNK’: n,
‘BLANK’: n+1}

relation2id

relation2id: dictionary of relation and its index
{
unknown :0,
父母 :1,
夫妻 :2,
师生 :3,
兄弟姐妹 :4,
…,
上下级: 11
}

fixlen

fixlen: length of sentence is 70
fixlen = 70

maxlen

maxlen: max length of poscedding is 60 (-60~+60)
maxlen = 60

tup

tup: tuple including entity 1 and entity 2
example: (‘小龙女’,‘杨过’)

label

label: the tag in one-hot
example:
tag-父母
label: [0,1,0,…,0]

train_sen

{
(‘朱时茂’, ‘陈佩斯’):[ [[output1], [output2]], [[output_1], [output_2]] , … ],
}

train_ans

{
(‘朱时茂’, ‘陈佩斯’):[ [label 1], [label 2] ,… ]
(‘小龙女’, ‘杨过’):[ [label 1], [label 2],…],

}

label_tag

构成train_ans过程中,label_tag记录了当前label值在[ [label 1], [label 2],… ]中的索引,如果不在,则记录最后一个索引,如果[ [label 1], [label 2],… ]为空,则为0

en1pos & en2pos

实体1和实体2在句子中出现的索引,没有出现,索引计为0

output

形式为list套list,每个小list包含三部分:word、rel_e1, rel_e2。在构造时先初始化70(fixlen)个小list,并且每个小list的word都为BLANK这个字对应的索引(word2id中),rel_e1和rel_e2即通过函数pos_embed计算出的实体1和实体2嵌入的位置。
更新过程中:如果sentence的长度小于70(fixlen),那么只更新前len(sentence)个小list中的word,每个word更新为sentence当前词在word2id中的索引,假如当前词不在word2id中,更新为UNK对应的索引。
因此最终output是由70个小list构成的大list

trains_seq & train_ans再次讲解

在这里插入图片描述

test_seq & test_ans

test_ans:
{
(A,B): [1, 0, 1, 1, 0,…],
(C, D):[0, 1, 0, 0, 1,…],

}
train时,同一个实体对,不同的label分别用one-hot(列表)表示,并组合成一个大列表,test是将one-hot变成了N-hot,为1表示这个实体对出现了1对应的关系
test_seq:
{
(A, B):[ [sentence1], [sentence2], …],
(C, D):[ [sentence3], [sentence4], …],

}

train_y & train_x

train_y:
[
[ l a b e l 1 1 , l a b e l 2 1 , l a b e l 3 1 , . . . ] , [label^1_1, label^1_2, label^1_3,...], [label11,label21,label31,...],
[ l a b e l 1 2 , l a b e l 2 2 , l a b e l 3 2 , . . . ] , [label^2_1, label^2_2, label^2_3,...], [label12,label22,label32,...],

]
上角标表示第i个实体对,下角标表示第j个label
train_x:
[
[ [ s e n 11 1 , s e n 12 1 ] , [ s e n 21 1 , s e n 22 1 ] , . . . ] , [ [sen^1_{11}, sen^1_{12}], [sen^1_{21}, sen^1_{22}],... ], [[sen111,sen121],[sen211,sen221],...],
[ [ s e n 11 2 , s e n 12 2 ] , [ s e n 21 2 , s e n 22 2 ] , . . . ] , [ [sen^2_{11}, sen^2_{12}], [sen^2_{21}, sen^2_{22}],... ], [[sen112,sen122],[sen212,sen222],...],

]
s e n 31 2 sen^2_{31} sen312表示第2个实体对第三个label对应的第一个句子

train_q&a.txt

|行数 | 实体1| 实体2| the index of relation|
|-|-|-|-|-|
|0|小龙女|杨过|0|
|1|小龙女|杨过|2|
|2|郭靖|黄蓉|1|
|3|鲁迅|鲁瑞|8|

test_x & test_y

test_x:
[
[ [ s e n t e n c e 1 1 ] , [ s e n t e n c e 2 1 ] , . . . ] , [ [sentence^1_1], [sentence^1_2], ...], [[sentence11],[sentence21],...],
[ [ s e n t e n c e 1 2 ] , [ s e n t e n c e 1 2 ] , . . . ] , [ [sentence^2_1], [sentence^2_1], ...], [[sentence12],[sentence12],...],

]
test_y:
[
[1, 0, 1, 1, 0,…], —>第一个元组对应的label
[0, 1, 0, 0, 1,…], ---->第二个元组对应的label
]

test_q&a.txt’

|行数 | 实体1| 实体2| the string of the indicies of relation
|-|-|-|-|-|
|0|小龙女|杨过|0 2|
|1|郭靖|黄蓉|1|
|2|鲁迅|鲁瑞|8|

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的喵喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值