日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

限定域文本语料的短语挖掘(Phrase Mining)

發布時間:2024/7/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 限定域文本语料的短语挖掘(Phrase Mining) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一只小狐貍帶你解鎖NLP/ML/DL秘籍

正文來源:丁香園大數據

前言

短語挖掘(Phrase Mining)的目的在于從大量的文本語料中提取出高質量的短語,是NLP領域中基礎任務之一。短語挖掘主要解決專業領域(如醫療、科技等)的專業詞典不足的問題,減少人工整理成本。

?

大家都知道,jieba分詞是中文分詞領域比較好的工具[1,2],其在分詞時使用的方法是根據已統計的詞庫,利用前綴詞典對句子切分,根據所有切分的結果構建有向無環圖的方式尋找最優的切分路徑。對于存在未登錄詞其使用的方式是根據序列標注的結果,使用Viterbi算法計算最優的狀態序列。使用jieba分詞可以解決一些普適化的需求,但是對于某些特定的專業領域,要達到較好的分詞要求,需要整理一批質量較高的專業領域詞典。但是呢,我們可用到的數據往往是大量無標注的文本,如果人工去整理成本會很高,所以我們可以通過什么方法可以自動提取一些高質量的短語呢(●'?'●)?

?

醫療領域為例,丁香園大數據團隊是一個處理醫療大數據的團隊,每天要處理大量的醫療文本數據,例如論壇文本,醫學論文,診斷報告等(里面會不會也有小夕的數據呢????)。這些專業醫療領域的數據和平時日常的數據有很大的不同,會有大量我們聽起來怕怕的專業術語⊙﹏⊙∥,抽取的高質量的短語無疑對優化檢索內容,taxonomy construction構建上下位層次結構、主題模型等等都非常的重要。

無監督抽取方法

根據丁香園log數據匯總發現,很多疾病詞和癥狀詞來源于一些特定詞的排列組合,比方說牛奶過敏,急性鼻炎,是一些NN和形容詞/動詞的組合,其實就是淺層句法分析的結果,例如:"新生兒急性鼻炎應該如何治療",coreNLP給出的結果如下圖所示:

? ? ? ? ? ? ?

其中新生兒急性鼻炎是一個名詞短語(NP),是由NN + JJ + NN組成的,傳統的方式是根據POS規則模版[3]對phrase進行提取。但是在實際操作過程中又會存在一些問題,比方說"如何治療花粉過敏"這句話中的Phrase應該是花粉過敏,但是治療和花粉合并成了動詞短語。但是如果要窮盡所有的POS pattern,并不是一件容易的事情,而且pattern之間可能會存在一些沖突,于是pattern之間排序又成了另一個坑┑( ̄Д  ̄)┍。

2012年Matrix67提出了《互聯網時代的社會語言學:基于SNS的文本數據挖掘》一種基于統計學角度的新詞挖掘算法,通過計算凝固度和左右臨字信息熵抽取新詞,效果灰常不錯o(* ̄▽ ̄*)ブ。

《西游記》抽取結果如下所示:

行者,八戒,師傅,三藏,大圣,唐僧,沙僧,和尚,菩薩,怎么,長老,老孫,兩個,甚么,國王,徒弟...

《資本論》抽取結果:

資本,生產,價值,勞動,商品,貨幣,部分,工人,形式,價格,利潤,我們,作為,剩余價值,過程...

可以用在丁香論壇的醫患對話日志上卻差強人意,這個方法抽取大量用戶俗語

可以,如果,治療,需要,醫生,情況,建議,檢查,什么,這個,問題,現在,癥狀,目前,或者,醫院...

于是考慮去除停用詞后再試一試,發現效果確實有所改善,算法找到一些靠譜的詞匯比方說肝硬化,肝癌,拉肚子,大便不成型,痔瘡出血,紅色小疙瘩...。可是呢,這樣的操作對出現頻率低的短語不是很友好,很有可能被閾值過濾掉,人工給定閾值,沒有一個很好的參照標準,數據中可能會存在很多的噪音,無法較好的篩選出有用的短語。

2014年韓家煒團隊的學生Ahmed El-Kishky提出一種基于頻繁模式挖掘和統計的方法TopMine,無監督的對語料進行Phrase Mining。這項工作的主要目的是對文本進行主題挖掘。在這篇論文中將主題挖掘分為兩個步驟,第一步根據Phrase Mining抽取的結果對文本進行分割,第二部根據分割后的文本約束Topic模型。在Phrase Mining中,根據上下文信息衡量合并后的score,判斷是否對token進行合并,偽代碼如下所示:

? ? ? ? ? ? ?

通過給定閾值的方式進行迭代,其中score作為判斷合并條件計算公式如下所示:

? ? ? ? ? ? ?

其舉了一個很有意思的例子,比方說:Markov Blanket Feature Selection for Support Vector Machines這句話來說如果只根據Vector可能只會把文章劃分為數學或者物理Topic中,但是顯然Support Vector Machines是一個整體,根據支撐向量機可以將其劃分為計算機的主題下:

? ? ? ? ? ? ?

Kavita Ganesan2018年提出《How to incorporate phrases into Word2Vec – a text mining approach》和2019年蘇神給出了一個無監督挖掘方案《分享一次專業領域詞匯的監督挖掘》有相似之處,只不過蘇神再基礎上加入一些平行語料,根據停用詞確定phrase邊界,用PMI等設定閾值方式抽取新詞,進行分詞,并構建詞向量模型。選取一些種子詞匯作為初始詞,根據抽取新詞的詞向量計算種子詞之間的相似度,設定閾值的方式將相似度高的詞加入到候選集中,對于無監督短語挖掘是一種比較新穎的思路,因為詞向量包含豐富的上下文語義信息,通過上下文信息計算相似度,將新詞進行聚類,這種方式可以較好的篩選出一些高質量的phrase。但是在第一步分詞時,根據閾值所發現的新詞邊界不好控制,會存在大量噪音,比方說,在《西游記》中會抽取出,行者笑道,那妖精,的和尚等詞匯,所以在最后一步需要加入了一些規則進行過濾。

弱/遠程監督抽取方法

韓家煒團隊關于Phrase Mining團隊的三部曲,剛才已經簡單的介紹了其中之一TopMine,其主要目的是對語料庫中的文本Topic進行挖掘,其中利用Phrase Mining的方法對文本進行分割。其另外兩部SegPhrase和AutoPhrase分別使用弱監督和遠程監督的方式對phrase進行抽取并進行質量監測。

SegPhrase

韓教授的學生劉佳硉認為TopMine的方法是完全無監督的,那么是不是選用一些少量的帶標簽的數據,可能會在很大程度上提高抽取結果。其認為高質量的短語是可以優化分詞結果的,而高質量的分詞結果也可以優化phrase抽取的結果,將分詞和高質量短語相結合。

? ? ? ? ? ? ?

原始計算頻率時,并沒有考慮真正分詞的結果,只是統計詞出現的頻率,例如support vector machine出現了在預料中出現了100次,但是根據分詞結果進行修正(rectified)后,其只出現了80次,同樣的vector machine修正后只出現了6次。那么vector machine不算是一個phrase。

例如:A standard feature vector machine learning setup is used to describe在這句話中,存在vector machine但是根據上下文語義進行分詞時,其分詞結果應該是feature vector和machine learning

于是接下來的工作中,根據頻繁短語監測生成短語候選集,再根據人工篩選出的高質量的短語使用RandomForest構建分類器模型,實驗中發現選擇200-300個數據就可以滿足分類結果。其中特征選取如下表所示:

這篇論文在當時的效果不錯,但是存在一個缺點,文中說300個標記詞匯就夠了,那么這300個標記數據應該如何選取?需要人工的去選擇一些高質量的短語去構造分類器,如果在一些特定的領域則需要一些專業領域人士對領域內的數據進行篩選。所以韓教授的學生商靜波提出了一種遠監督方法AutoPhrase自動的對短語進行挖掘。

AutoPhrase

2017年韓教授的學生商靜波提出一種遠程監督的方法進行Phrase Mining,AutoPhrase使用wiki或Freebase等數據構建高質量詞典,代替SegPhrase人工打標簽的過程。其在技術上以下兩個創新點。

Robust Positive-Only Distant Training:使用wiki和freebase作為顯眼數據,根據知識庫中的相關數據構建Positive Phrases,根據領域內的文本生成Negative Phrases,構建分類器后根據預測的結果減少負標簽帶來的噪音問題。

POS-Guided Phrasal Segmentation:使用POS詞性標注的結果,引導短語分詞,利用POS的淺層句法分析的結果優化Phrase boundaries。

? ? ? ? ? ? ?

如上圖所示,根據frequent n-gram抽取phrase Candidates根據遠程監督的方式,根據wikipedia進行過濾篩選出Positive Pool和Noisy Negative Pool,對于Positive Pool來說,其信源比較準確,于是Positive Pool的抽取結果肯定是置信度極高的,而Negative Pool是存在噪音的,因為可能有一些Phrase不存在WikiPedia中,因此文中提到用一種集成學習的方式降低噪音。

? ? ? ? ? ? ?

構建多組基本的分類器,分別從Positive Pool和Negative Pool中隨機抽取出K個candidates全部,而在負樣本中存在perturbed training set見圖中的δ,為了盡可能低的降低訓練誤差的基礎分類器,構建一顆未進行剪枝的決策樹的方式,當在perturbed training set中沒有兩個positive和negative phrase共享相同的特征值時,我們認為此時的決策樹可以達到100%的訓練準確率。最后通過ranking的方式輸出排序的結果。這種方法的結果Segphrase相比有著顯著的提升。

?

開始搞事情

看了很多的方法,磨拳擦掌開始搞一個屬于自己的Phrase mining了,借鑒之前的方法,發現很多都是從統計學角度構建一批先驗知識,比方說計算語料中的PMI和一些KL散度等等進行抽取。但是如果獲得的數據是一些短文本數據,又將如何提取這些特征呢?我們直接用AutoPhrase的方法套用?仿佛又不是很合適,首先,無法保證分詞的效果;其次,stanford POS的淺層句法分析的結果并不適用于所有領域,比如花粉過敏。

根據丁香園本身的業務需求和之前提到的一些方法對特征和分類器模型進行了修改,并沒有使用stanford提供的淺層句法分析的結果,而是根據知識庫目前現有的一些醫療數據構建了n-gram模型作為特征,再借鑒遠監督的方式根據知識庫中已有的詞庫數據,進行詞性標注,統計詞性標注的結果作為特征,再根據bert構建的字向量作為分割的特征。

同樣類似于AutoPhrase的方式構建數據集,Positive Pool中的數據來源于目前知識庫已有的醫療數據,Negative Pool中的數據來自N-gram隨機選取的非庫中的數據,再根據一些規則和N-gram的概率等閾值信息簡單的過濾了一些負樣本中的臟數據。使用gbdt(Gradient Boosting Decision Tree)構建分類器模型。目前抽取效果如下所示:

? ? ? ? ? ? ?

在抽取結果中可以看到,一句話中可以抽取多個phrase,對于分詞來講,不同方式組合phrase會生成不同的分詞格式,根據score閾值進行過濾,根據phrase抽取結果,查詢所有的抽取組合,根據組合結果不同,通過phrase長度和個數進行約束,公式如下所示:

下圖為最后輸出排序的結果:

總結

這篇文章調研了關于Phrase Mining構建的方法來解決在特定專業領域中存在未登錄詞和個性化分詞問題。 Phrase Mining只是將非結構化文本轉化為半結構化文本的第一步,之后還需要在其基礎上進行實體鏈接和知識圖譜的構建。Phrase Mining可以根據數據的不斷擴充對模型不斷的優化,在其優化的同時,也對后續任務有著決定性的幫助。

  • 跨平臺NLP/ML文章索引

  • 萬萬沒想到,我的煉丹爐壞了

  • 詞搜索引擎--項詞典與倒排索引優化

  • 如何與GPU服務器優雅交互

不要忘了關注小夕~星標?小夕哦~

參考文獻

[1] 結巴分詞2--基于前綴詞典及動態規劃實現分詞

[2] 結巴分詞3--基于漢字成詞能力的HMM模型識別未登錄詞

[3] http://www.nltk.org/howto/chunk.html

[4] Scalable Topical Phrase Mining from Text Corpora

[5] Mining Quality Phrases from Massive Text Corpora

[6] Automated Phrase Mining from Massive Text Corpora

[7] TruePIE: Discovering Reliable Patterns in Pattern-Based Information Extraction

[8] 中文基本復合名詞短語語義關系體系及知識庫構建

[9] How to incorporate phrases into Word2Vec – a text mining approach

你的每一個“在看”我都當成了喜歡

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的限定域文本语料的短语挖掘(Phrase Mining)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。