前面写过一片实体抽取的入门,实体关系抽取就是在实体抽取的基础上,找出两个实体之间的关系。
本文使用的是BiLSTM+attention模型,代码在这里,不定期对代码进行修改添加优化。
数据处理
其实数据处理的方法有很多,我用的是近两年英文论文使用的比较多的词向量+位置向量的方法。
中文实体关系抽取的数据实在是太难找了,我现在只有忘记在哪里找到的一个人物关系数据集。希望同学们能分享一些其他的数据集。
先看原始数据(其实原始数据里好多句子我都看不出来其中人物实体的关系):
霍启山 霍启刚 兄弟姐妹 两位弟弟:霍震霆与朱玲玲育有三子,大公子霍启山、二公子霍启刚、三公子霍启仁
先是两个实体,然后是两个实体之间的关系,最后是两个实体所在的句子,都用空格分开。
所以数据处理先将这4部分分开。
先将句子转换成词向量,或者叫字向量。具体方法是建立word2id词典,把每个字都转换成id。
然后记录句子中每个字距离两个实体的距离。比如前面的例子,霍启山是第一个实体,这里假设实体后面为正,汉字和标点符号都计算在内,句子开始“两”和实体一的距离是-20,“位”和实体一的距离是-19。。。最后一个字“仁”和实体一的距离为16。
每个字距离实体二的距离同上。
这样每个字都有了一个字向量和两个距离向量,将这三个向量结合起来,就可以作为模型的输入了