关系抽取需要从文本中抽取两个或多个实体之间的语义关系,主要方法有下面几类:
基于模板的方法(hand-written patterns)
基于触发词/字符串
基于依存句法
监督学习(supervised machine learning)
机器学习
深度学习(Pipeline vs Joint Model)
半监督/无监督学习(semi-supervised and unsupervised)
Bootstrapping
Distant supervision
Unsupervised learning from the web
规则抽取
目的:找出尽可能多的拥有"is - a"关系的实体对(实体1,is - a,实体2) 比如我们有一些文章:
" .... apple is a fruit ..... "
" .... fruit such as apple .... "
" .... fruit including apple , banala .... "
拿到上述文章时,我们要先设计一些规则,例如:
X is a Y
Y such as X
Y including X
然后通过这些规则我们可以对上述文章进行关系抽取,建立以下关系:
方法优点
比较准确
对于垂直场景,比较适合(具有针对性)
方法缺点
信息缺乏覆盖率(low recall rate)
人力成本较高
很难设计(规则冲突、重叠)
PCNN
下图清晰了显示了PCNN的整个网络架构,原文链接在这里,下面我对着下图介绍一下PCNN的实现过程:
数据预处理:首先对数据进行位置编码,按句子中各个词离entity的距离进行编码。
例如:“As we known,Steve Jobswas the co-founder ofApple Incwhich is a great company in America.”
由于句子中有两个entity,所以这条句子就会产生两个和句子长度相同的编码。
pos_1:[-4,-3,-2,-1,0,1,2,3......] ,其中0就是Steve Jobs的位置。
pos_2:[-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3......] 其中0就是Apple Inc的位置。
切分句子:其中最主要的就是将一条文本数据在两个entity处各切一刀将文本且成了3段。
比如 As we known,Steve Jobswas the co-founder ofApple Incwhich is a great company in America,将被切成:
As we known,Steve Jobs
Steve Jobswas the co-founder ofApple Inc
Apple Incwhich is a great company in America.
注意,位置向量也同样进行了切分操作。
特征提取:将位置特征和文本特征拼接之后,然后将上面三个数据分别通过CNN 提取特征,
关系分类:提取出来的特征通过maxpooling层之后进行拼接后送入softmax层,最终得到relation的分类。
pcnn.png
从上面PCNN的流程我们可以发现,这个网络结构很注重entitiy之间的距离信息,位置信息,以及entitiy之间或者左右的信息。其实这些都是是关系抽取中最重要的特征。
一般来说两个entitiy之间距离越近,则他们有关系的可能性越大。
而透露出entities之间有关系的词一般会出现在两个entity之间,左侧,或者右侧。
例如:Steve Jobswas the co-founder ofApple Inc, 关系词 co-founder就在两个entity之间
网友评论