PCNN的知识抽取

PCNN是一个结构简单的CNN网络, 它最初被用于在已知实体对位置时, 辨别实体对关系的网络.

PCNN的知识抽取_第1张图片
上图是论文里带的PCNN结构图.
PCNN的输入由两部分构成, 一部分是词本身的词向量word, 另一部分是词相对于实体词的位置信息position. PCNN优秀的地方就在于加入了位置信息, 具体如下:

1.position共有两个, 分别对应两个实体位置. 以"小明的外号叫老王"为例, 分词时会被分成"小明 的 外号 叫 老王"5个词, 其中两个实体分别为"小明"和"老王"., 那么其他词相对于"小明"的位置信息是 0 , 1 , 2 , 3 , 4 0 ,1 ,2 ,3 ,4 0,1,2,3,4 相对于"老王"的位置信息是 4 , 3 , 2 , 1 , 0 4,3,2,1,0 4,3,2,1,0这两列位置信息就会与对应的词向量拼接在一起, 形成上图中左侧的输入.
假设此时词向量维度n=4, 加上两维位置就是6.

输入问题解决后, 此时输入尺寸为65(5个词). 下一步, 输入经过一个633(3通道), 步长向下为1且保留列长度(列长9)的卷积, 获得了19*3的卷积结果, 这样做是希望网络能如我们所愿, 从三个视角(即两实体将句子分成三份)观测潜在关系.

下一步是池化. PCNN的池化是将3通道19的数据浓缩为3通道13后, 再拼成19. 注意它池化的方式, 它并不是以一个固定的池化方式做池化, 而是以实体所在位置为分界, 池化3次, 这就注定池化后的尺寸必为3通道13, 也就是说你大可不必规定具体的输入句子长度.

最后一层分类, 没什么可解释的, 是通用做法.

你可能感兴趣的:(PCNN的知识抽取)