A Position Encoding Convolutional Neural Network Based on Dependency Tree for Relation Classification
上一次想做关系抽取任务还是研一的时候企业项目的需要, 那时候准备自己做一套知识图谱三元组挖掘的系统, 再通过三元组来逆向做 question generation (Generating Factoid Questions With Recurrent Neural Networks: The 30M Factoid Question-Answer Corpus), 不过因为没有后续接延伸的企业项目, 也没有做这部分工作了, 这几天看到关系抽取的论文, 写写阅读笔记。这是一篇16年ACL的文章,数据集是SemEval2010 Task 8 dataset, 关系分类是要是一个多分类的任务。论文主要讲依存句法分析融入到神经网络中, 为神经网络提供特征, 将传统的nlp任务和深度学习组合, 也是最近的一个热点。
数据集
训练集有 8000 个句子, 测试集有 2717 个句子。每个句子都标注出两个实体, 需要对这两个实体做关系分类。
整体框架
先对句子进行依存句法分析。
提取句子的position feature等其他特征。
经过论文设计的特效CNN。
softmax 分类。
词向量特征
google 的 word2vec
Tree-based Position Feature
传统的基于文本的位置特征不能很好的解决NLP任务。在文本中, 由于语言表达的习惯, 可能句子开头的词和末尾的词联系很大; 而且文本中含有大量副词等无实际含义的词, 对简单的位置特征造成很大的干扰。依存句法分析能够很好的解决位置的约束, 能够更好的挖掘句子中单词之间的关系。论文主要提出了TPF1和TPF2两种特征。(Tree based Position Feature)TPF1统计的是两个 entities 之间的最短依存路径。TPF2用 pair 来表示, 两个 entities 之间的路径会被它们的lowest common ancestor分隔开, TPF2 统计两段子路径的长度。
fig 3 计算各个 node 与Convulsions之间的 TPF 值, 其中红色为 TPF1, 蓝色为TPF2.
Convolution Methods
论文设计了自己的卷积核, 传统的CNN在文本用的是文本的上下文进行卷积, 论文这里提出了两种在依存句法树上卷积的Kernels。用 p 表示节点的parent, 用 c 表示childern , 其实 parent 只有一个, children 可能有多个。Kernel 1
W 为参数, g 为非线性激活函数, 充分考虑了节点与他的父子之间关系, 如果节点没有child, 用zero padding。 挖掘了依存树中多层次的内容。Kernel 2
这里只靠到child, 每次只考虑两个向量的children, 如果child num 不足, 也是用zero padding。挖掘了同分支之间的予以关系。后处理两种 kernel 每次只处理三个单词, 而且都经过一次max pooling, 并将两个向量拼接送到softmax及进行分类。
result
领取专属 10元无门槛券
私享最新 技术干货