關(guān)系抽取需要從文本中抽取兩個或多個實體之間的語義關(guān)系,主要方法有下面幾類:
基于模板的方法(hand-written patterns)
基于觸發(fā)詞/字符串
基于依存句法
監(jiān)督學習(supervised machine learning)
機器學習
深度學習(Pipeline vs Joint Model)
半監(jiān)督/無監(jiān)督學習(semi-supervised and unsupervised)
Bootstrapping
Distant supervision
Unsupervised learning from the web
規(guī)則抽取
目的:找出盡可能多的擁有"is - a"關(guān)系的實體對(實體1,is - a,實體2) 比如我們有一些文章:
" .... apple is a fruit ..... "
" .... fruit such as apple .... "
" .... fruit including apple , banala .... "
拿到上述文章時,我們要先設(shè)計一些規(guī)則,例如:
X is a Y
Y such as X
Y including X
然后通過這些規(guī)則我們可以對上述文章進行關(guān)系抽取,建立以下關(guān)系:

方法優(yōu)點
比較準確
對于垂直場景,比較適合(具有針對性)
方法缺點
信息缺乏覆蓋率(low recall rate)
人力成本較高
很難設(shè)計(規(guī)則沖突、重疊)
PCNN
下圖清晰了顯示了PCNN的整個網(wǎng)絡架構(gòu),原文鏈接在這里,下面我對著下圖介紹一下PCNN的實現(xiàn)過程:
數(shù)據(jù)預處理:首先對數(shù)據(jù)進行位置編碼,按句子中各個詞離entity的距離進行編碼。
例如:“As we known,Steve Jobswas the co-founder ofApple Incwhich is a great company in America.”
由于句子中有兩個entity,所以這條句子就會產(chǎn)生兩個和句子長度相同的編碼。
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的位置。
切分句子:其中最主要的就是將一條文本數(shù)據(jù)在兩個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.
注意,位置向量也同樣進行了切分操作。
特征提取:將位置特征和文本特征拼接之后,然后將上面三個數(shù)據(jù)分別通過CNN 提取特征,
關(guān)系分類:提取出來的特征通過maxpooling層之后進行拼接后送入softmax層,最終得到relation的分類。

pcnn.png
從上面PCNN的流程我們可以發(fā)現(xiàn),這個網(wǎng)絡結(jié)構(gòu)很注重entitiy之間的距離信息,位置信息,以及entitiy之間或者左右的信息。其實這些都是是關(guān)系抽取中最重要的特征。
一般來說兩個entitiy之間距離越近,則他們有關(guān)系的可能性越大。
而透露出entities之間有關(guān)系的詞一般會出現(xiàn)在兩個entity之間,左側(cè),或者右側(cè)。
例如:Steve Jobswas the co-founder ofApple Inc, 關(guān)系詞 co-founder就在兩個entity之間