比如一句話「健腎平喘湯聯合硫酸沙丁胺醇氣霧劑吸入治療慢性持續期哮喘臨床研究」。我想抽取出健腎平喘湯與慢性哮喘這兩個實體是有聯繫的,一直沒有找到好的辦法,看了上百篇文獻,由於演算法居多,對於具體的還是不太明白,在這裡請問大神。目前我知道的步驟是:1.分詞,這裡與NER結合,以降低分詞不當造成的影響,或者使用自定義詞典。然後可以對分詞後的結果進行詞性標註。2.使用句法分析器,如斯坦福工具等其他工具。後續的步驟就不清楚了。看到文章中有這樣的做法:1.將關係抽取轉換為分類的問題,構建分類模型;2.構建二元組或者三元組。由於本人是nlp初學者,剛剛接觸,很多都不是很懂,但是馬上就要開題了,很急的時間,想儘快摸索出一套可行的方法,請教大家後面具體的可以怎麼實現,如何進行關係抽取


看你要做的是開放關係抽取,還是限定關係抽取。如果是限定關係抽取,那麼可以作為分類問題來做,關係作為類標籤,包含產生關係的兩個對象的文本作為訓練樣本,剩下就是訓練樣本的特徵表示問題了。開放關係抽取,大多是基於一些啟發式的規則來做。


隨著計算機的普及以及互聯網的迅猛發展,大量的信息以電子文本的形式出現在人們面前。為了應對信息爆炸帶來的挑戰,迫切需要一些自動化的工具幫助人們在海量信息源中迅速找到真正需要的信息。信息抽取(Information?Extraction)研究正是在這種背景下產生的。信息抽取的主要目的是將無結構的文本轉化為結構化或半結構化的信息,並以資料庫的形式存儲,供用戶查詢以及進一步分析利用。信息抽取系統的主要功能是從文本中抽取出特定的事實信息,我們稱之為實體(Entity)。例如:時間(TIME)、組織機構(ORG)、人物(PER)以及武器(WEAPON)等等。

然而,在大多數的應用中,不但要識別文本中的實體,還要確定這些實體之間的關係,我們稱其為實體關係抽取。與實體抽取類似,實體關係的類型也是預先定義的,例如:地理位置關係(PHYS)、僱傭關係(EMP-ORG)等等。

通常,人們將關係抽取問題轉化為一個分類問題,即首先列出一個句子中所有的實體對,然後使用一個分類器決定哪些是我們真正需要的關係。

和分類問題通常的解決辦法一樣,人們最初也是使用知識庫的方法來解決該問題。但是,此方法需要專家構築大規模的知識庫,這不但需要有專業技能的專家,也需要付出大量勞動。

為了克服知識庫方法的缺點,人們後來使用機器學習的方法來解決此問題]。該方法不需要有專業技能的專家書寫知識庫,只需要有一定專業知識的人對任意兩個實體之間的關係做出是與不是我們需要的關係的判斷即可。然後以此為訓練數據,使用各種學習方法構造分類器。

通常的機器學習演算法需要構造特徵向量形式的訓練數據。然後使用各種機器學習演算法,如支持向量機(SVM)、Winnow等作為學習機構造分類器。這種方法被稱作基於特徵向量的學習演算法。

接著又出現了基於Kernel的學習演算法,它最早在支持向量機(SVM)方法中被引入,後來發現多種學習方法可以使用Kernel的形式來表示。它們又被稱作基於Kernel的學習演算法。在自然語言處理領域應用基於Kernel的學習演算法,與基於特徵向量的學習演算法不同, 其不需要構造特徵向量, 而是直接使用字元串的原始形式作為處理對象,需要做的只是計算任何兩個對象之間的 Kernel? (Similarity) 函數。 Zelenko等以及Culotta等使用Kernel的方法解決關係抽取問題,取得了較好的結果,他們使用的方法需要對處理對象進行淺層的句法分析。然而,Kernel的一個致命的缺點是訓練和預測的速度太慢,不適於處理大量的數據。

而北京理工大學大數據搜索與挖掘實驗室張華平主任研發的NLPIR大數據語義智能分析系統能夠智能識別文本中出現的人名、地名、機構名、媒體、作者及文章的主題關鍵詞,這是對語言規律的深入理解和科學預測,其所提煉出的詞語不需要在詞典庫中事先存在。NLPIR實體抽取系統採用基於角色標註演算法自動識別命名實體(演算法細節請參照:張華平,高凱,黃河燕,趙燕平《大數據搜索與挖掘》科學出社2014.5ISBN:978-7-03-040318-6),開發者可在此基礎上搭建多樣化的大數據挖掘應用。


第一步先命名實體識別,抽取出相關實體,可以參考開源代碼macanv/BERT-BiLSTM-CRF-NER。

第二步關係抽取,將實體對輸入,並提取實體間的關係,具體可參考THU的開源代碼OpenNRE,相關步驟及paper可以參考一下:

風霖:OpenNRE關係抽取入門& 緒論?

zhuanlan.zhihu.com圖標


更新一下,大概一周前吧,斯坦福manning組發表了一個新的工具:Stanza,涵蓋了66種語言,可以直接做NER(命名實體識別)。

https://github.com/stanfordnlp/stanza?

github.com

相關介紹文:

機器之心:Manning大神牽頭,斯坦福開源Python版NLP庫Stanza:涵蓋66種語言?

zhuanlan.zhihu.com圖標

實戰文:

hahakity:Stanza:中文自然語言處理福利?

zhuanlan.zhihu.com圖標

另外我自己在博客中也總結了NER相關,包括統計時代的HMM、CRF以及深度學習時代模型方法,還有部分經典論文的介紹:

北望你的安?

wangjiaan.cn


建議通過依存句法或者語義依存提取出詞序列的語義信息,再通過不同依存關係的篩選重組得到實體關係,構建元祖的方法個人感覺有點繞彎路了。具體可藉助一下NLTK、LTP等庫。


小白想問詞性標註怎麼弄呀


你好,我的導師最近也給我了類似的關係抽取但我項目,我也是剛入門,請問現在那些開源框架比如斯坦福的deepdive和浙大的openke好用嗎


推薦閱讀:
相关文章