限定域文本语料的短语挖掘(Phrase Mining)
一只小狐貍帶你解鎖NLP/ML/DL秘籍
正文來源:丁香園大數(shù)據(jù)
前言
短語挖掘(Phrase Mining)的目的在于從大量的文本語料中提取出高質(zhì)量的短語,是NLP領(lǐng)域中基礎(chǔ)任務(wù)之一。短語挖掘主要解決專業(yè)領(lǐng)域(如醫(yī)療、科技等)的專業(yè)詞典不足的問題,減少人工整理成本。
?
大家都知道,jieba分詞是中文分詞領(lǐng)域比較好的工具[1,2],其在分詞時(shí)使用的方法是根據(jù)已統(tǒng)計(jì)的詞庫,利用前綴詞典對(duì)句子切分,根據(jù)所有切分的結(jié)果構(gòu)建有向無環(huán)圖的方式尋找最優(yōu)的切分路徑。對(duì)于存在未登錄詞其使用的方式是根據(jù)序列標(biāo)注的結(jié)果,使用Viterbi算法計(jì)算最優(yōu)的狀態(tài)序列。使用jieba分詞可以解決一些普適化的需求,但是對(duì)于某些特定的專業(yè)領(lǐng)域,要達(dá)到較好的分詞要求,需要整理一批質(zhì)量較高的專業(yè)領(lǐng)域詞典。但是呢,我們可用到的數(shù)據(jù)往往是大量無標(biāo)注的文本,如果人工去整理成本會(huì)很高,所以我們可以通過什么方法可以自動(dòng)提取一些高質(zhì)量的短語呢(●'?'●)?
?
以醫(yī)療領(lǐng)域為例,丁香園大數(shù)據(jù)團(tuán)隊(duì)是一個(gè)處理醫(yī)療大數(shù)據(jù)的團(tuán)隊(duì),每天要處理大量的醫(yī)療文本數(shù)據(jù),例如論壇文本,醫(yī)學(xué)論文,診斷報(bào)告等(里面會(huì)不會(huì)也有小夕的數(shù)據(jù)呢????)。這些專業(yè)醫(yī)療領(lǐng)域的數(shù)據(jù)和平時(shí)日常的數(shù)據(jù)有很大的不同,會(huì)有大量我們聽起來怕怕的專業(yè)術(shù)語⊙﹏⊙∥,抽取的高質(zhì)量的短語無疑對(duì)優(yōu)化檢索內(nèi)容,taxonomy construction構(gòu)建上下位層次結(jié)構(gòu)、主題模型等等都非常的重要。
無監(jiān)督抽取方法
根據(jù)丁香園log數(shù)據(jù)匯總發(fā)現(xiàn),很多疾病詞和癥狀詞來源于一些特定詞的排列組合,比方說牛奶過敏,急性鼻炎,是一些NN和形容詞/動(dòng)詞的組合,其實(shí)就是淺層句法分析的結(jié)果,例如:"新生兒急性鼻炎應(yīng)該如何治療",coreNLP給出的結(jié)果如下圖所示:
? ? ? ? ? ? ?
其中新生兒急性鼻炎是一個(gè)名詞短語(NP),是由NN + JJ + NN組成的,傳統(tǒng)的方式是根據(jù)POS規(guī)則模版[3]對(duì)phrase進(jìn)行提取。但是在實(shí)際操作過程中又會(huì)存在一些問題,比方說"如何治療花粉過敏"這句話中的Phrase應(yīng)該是花粉過敏,但是治療和花粉合并成了動(dòng)詞短語。但是如果要窮盡所有的POS pattern,并不是一件容易的事情,而且pattern之間可能會(huì)存在一些沖突,于是pattern之間排序又成了另一個(gè)坑┑( ̄Д  ̄)┍。
2012年Matrix67提出了《互聯(lián)網(wǎng)時(shí)代的社會(huì)語言學(xué):基于SNS的文本數(shù)據(jù)挖掘》一種基于統(tǒng)計(jì)學(xué)角度的新詞挖掘算法,通過計(jì)算凝固度和左右臨字信息熵抽取新詞,效果灰常不錯(cuò)o(* ̄▽ ̄*)ブ。
《西游記》抽取結(jié)果如下所示:
行者,八戒,師傅,三藏,大圣,唐僧,沙僧,和尚,菩薩,怎么,長(zhǎng)老,老孫,兩個(gè),甚么,國王,徒弟...
《資本論》抽取結(jié)果:
資本,生產(chǎn),價(jià)值,勞動(dòng),商品,貨幣,部分,工人,形式,價(jià)格,利潤(rùn),我們,作為,剩余價(jià)值,過程...
可以用在丁香論壇的醫(yī)患對(duì)話日志上卻差強(qiáng)人意,這個(gè)方法抽取大量用戶俗語。
可以,如果,治療,需要,醫(yī)生,情況,建議,檢查,什么,這個(gè),問題,現(xiàn)在,癥狀,目前,或者,醫(yī)院...
于是考慮去除停用詞后再試一試,發(fā)現(xiàn)效果確實(shí)有所改善,算法找到一些靠譜的詞匯比方說肝硬化,肝癌,拉肚子,大便不成型,痔瘡出血,紅色小疙瘩...。可是呢,這樣的操作對(duì)出現(xiàn)頻率低的短語不是很友好,很有可能被閾值過濾掉,人工給定閾值,沒有一個(gè)很好的參照標(biāo)準(zhǔn),數(shù)據(jù)中可能會(huì)存在很多的噪音,無法較好的篩選出有用的短語。
2014年韓家煒團(tuán)隊(duì)的學(xué)生Ahmed El-Kishky提出一種基于頻繁模式挖掘和統(tǒng)計(jì)的方法TopMine,無監(jiān)督的對(duì)語料進(jìn)行Phrase Mining。這項(xiàng)工作的主要目的是對(duì)文本進(jìn)行主題挖掘。在這篇論文中將主題挖掘分為兩個(gè)步驟,第一步根據(jù)Phrase Mining抽取的結(jié)果對(duì)文本進(jìn)行分割,第二部根據(jù)分割后的文本約束Topic模型。在Phrase Mining中,根據(jù)上下文信息衡量合并后的score,判斷是否對(duì)token進(jìn)行合并,偽代碼如下所示:
? ? ? ? ? ? ?
通過給定閾值的方式進(jìn)行迭代,其中score作為判斷合并條件計(jì)算公式如下所示:
? ? ? ? ? ? ?
其舉了一個(gè)很有意思的例子,比方說:Markov Blanket Feature Selection for Support Vector Machines這句話來說如果只根據(jù)Vector可能只會(huì)把文章劃分為數(shù)學(xué)或者物理Topic中,但是顯然Support Vector Machines是一個(gè)整體,根據(jù)支撐向量機(jī)可以將其劃分為計(jì)算機(jī)的主題下:
? ? ? ? ? ? ?
Kavita Ganesan2018年提出《How to incorporate phrases into Word2Vec – a text mining approach》和2019年蘇神給出了一個(gè)無監(jiān)督挖掘方案《分享一次專業(yè)領(lǐng)域詞匯的監(jiān)督挖掘》有相似之處,只不過蘇神再基礎(chǔ)上加入一些平行語料,根據(jù)停用詞確定phrase邊界,用PMI等設(shè)定閾值方式抽取新詞,進(jìn)行分詞,并構(gòu)建詞向量模型。選取一些種子詞匯作為初始詞,根據(jù)抽取新詞的詞向量計(jì)算種子詞之間的相似度,設(shè)定閾值的方式將相似度高的詞加入到候選集中,對(duì)于無監(jiān)督短語挖掘是一種比較新穎的思路,因?yàn)樵~向量包含豐富的上下文語義信息,通過上下文信息計(jì)算相似度,將新詞進(jìn)行聚類,這種方式可以較好的篩選出一些高質(zhì)量的phrase。但是在第一步分詞時(shí),根據(jù)閾值所發(fā)現(xiàn)的新詞邊界不好控制,會(huì)存在大量噪音,比方說,在《西游記》中會(huì)抽取出,行者笑道,那妖精,的和尚等詞匯,所以在最后一步需要加入了一些規(guī)則進(jìn)行過濾。
弱/遠(yuǎn)程監(jiān)督抽取方法
韓家煒團(tuán)隊(duì)關(guān)于Phrase Mining團(tuán)隊(duì)的三部曲,剛才已經(jīng)簡(jiǎn)單的介紹了其中之一TopMine,其主要目的是對(duì)語料庫中的文本Topic進(jìn)行挖掘,其中利用Phrase Mining的方法對(duì)文本進(jìn)行分割。其另外兩部SegPhrase和AutoPhrase分別使用弱監(jiān)督和遠(yuǎn)程監(jiān)督的方式對(duì)phrase進(jìn)行抽取并進(jìn)行質(zhì)量監(jiān)測(cè)。
SegPhrase
韓教授的學(xué)生劉佳硉認(rèn)為TopMine的方法是完全無監(jiān)督的,那么是不是選用一些少量的帶標(biāo)簽的數(shù)據(jù),可能會(huì)在很大程度上提高抽取結(jié)果。其認(rèn)為高質(zhì)量的短語是可以優(yōu)化分詞結(jié)果的,而高質(zhì)量的分詞結(jié)果也可以優(yōu)化phrase抽取的結(jié)果,將分詞和高質(zhì)量短語相結(jié)合。
? ? ? ? ? ? ?
原始計(jì)算頻率時(shí),并沒有考慮真正分詞的結(jié)果,只是統(tǒng)計(jì)詞出現(xiàn)的頻率,例如support vector machine出現(xiàn)了在預(yù)料中出現(xiàn)了100次,但是根據(jù)分詞結(jié)果進(jìn)行修正(rectified)后,其只出現(xiàn)了80次,同樣的vector machine修正后只出現(xiàn)了6次。那么vector machine不算是一個(gè)phrase。
例如:A standard feature vector machine learning setup is used to describe在這句話中,存在vector machine但是根據(jù)上下文語義進(jìn)行分詞時(shí),其分詞結(jié)果應(yīng)該是feature vector和machine learning
于是接下來的工作中,根據(jù)頻繁短語監(jiān)測(cè)生成短語候選集,再根據(jù)人工篩選出的高質(zhì)量的短語使用RandomForest構(gòu)建分類器模型,實(shí)驗(yàn)中發(fā)現(xiàn)選擇200-300個(gè)數(shù)據(jù)就可以滿足分類結(jié)果。其中特征選取如下表所示:
這篇論文在當(dāng)時(shí)的效果不錯(cuò),但是存在一個(gè)缺點(diǎn),文中說300個(gè)標(biāo)記詞匯就夠了,那么這300個(gè)標(biāo)記數(shù)據(jù)應(yīng)該如何選取?需要人工的去選擇一些高質(zhì)量的短語去構(gòu)造分類器,如果在一些特定的領(lǐng)域則需要一些專業(yè)領(lǐng)域人士對(duì)領(lǐng)域內(nèi)的數(shù)據(jù)進(jìn)行篩選。所以韓教授的學(xué)生商靜波提出了一種遠(yuǎn)監(jiān)督方法AutoPhrase自動(dòng)的對(duì)短語進(jìn)行挖掘。
AutoPhrase
2017年韓教授的學(xué)生商靜波提出一種遠(yuǎn)程監(jiān)督的方法進(jìn)行Phrase Mining,AutoPhrase使用wiki或Freebase等數(shù)據(jù)構(gòu)建高質(zhì)量詞典,代替SegPhrase人工打標(biāo)簽的過程。其在技術(shù)上以下兩個(gè)創(chuàng)新點(diǎn)。
Robust Positive-Only Distant Training:使用wiki和freebase作為顯眼數(shù)據(jù),根據(jù)知識(shí)庫中的相關(guān)數(shù)據(jù)構(gòu)建Positive Phrases,根據(jù)領(lǐng)域內(nèi)的文本生成Negative Phrases,構(gòu)建分類器后根據(jù)預(yù)測(cè)的結(jié)果減少負(fù)標(biāo)簽帶來的噪音問題。
POS-Guided Phrasal Segmentation:使用POS詞性標(biāo)注的結(jié)果,引導(dǎo)短語分詞,利用POS的淺層句法分析的結(jié)果優(yōu)化Phrase boundaries。
? ? ? ? ? ? ?
如上圖所示,根據(jù)frequent n-gram抽取phrase Candidates根據(jù)遠(yuǎn)程監(jiān)督的方式,根據(jù)wikipedia進(jìn)行過濾篩選出Positive Pool和Noisy Negative Pool,對(duì)于Positive Pool來說,其信源比較準(zhǔn)確,于是Positive Pool的抽取結(jié)果肯定是置信度極高的,而Negative Pool是存在噪音的,因?yàn)榭赡苡幸恍㏄hrase不存在WikiPedia中,因此文中提到用一種集成學(xué)習(xí)的方式降低噪音。
? ? ? ? ? ? ?
構(gòu)建多組基本的分類器,分別從Positive Pool和Negative Pool中隨機(jī)抽取出K個(gè)candidates全部,而在負(fù)樣本中存在perturbed training set見圖中的δ,為了盡可能低的降低訓(xùn)練誤差的基礎(chǔ)分類器,構(gòu)建一顆未進(jìn)行剪枝的決策樹的方式,當(dāng)在perturbed training set中沒有兩個(gè)positive和negative phrase共享相同的特征值時(shí),我們認(rèn)為此時(shí)的決策樹可以達(dá)到100%的訓(xùn)練準(zhǔn)確率。最后通過ranking的方式輸出排序的結(jié)果。這種方法的結(jié)果Segphrase相比有著顯著的提升。
?
開始搞事情
看了很多的方法,磨拳擦掌開始搞一個(gè)屬于自己的Phrase mining了,借鑒之前的方法,發(fā)現(xiàn)很多都是從統(tǒng)計(jì)學(xué)角度構(gòu)建一批先驗(yàn)知識(shí),比方說計(jì)算語料中的PMI和一些KL散度等等進(jìn)行抽取。但是如果獲得的數(shù)據(jù)是一些短文本數(shù)據(jù),又將如何提取這些特征呢?我們直接用AutoPhrase的方法套用?仿佛又不是很合適,首先,無法保證分詞的效果;其次,stanford POS的淺層句法分析的結(jié)果并不適用于所有領(lǐng)域,比如花粉過敏。
根據(jù)丁香園本身的業(yè)務(wù)需求和之前提到的一些方法對(duì)特征和分類器模型進(jìn)行了修改,并沒有使用stanford提供的淺層句法分析的結(jié)果,而是根據(jù)知識(shí)庫目前現(xiàn)有的一些醫(yī)療數(shù)據(jù)構(gòu)建了n-gram模型作為特征,再借鑒遠(yuǎn)監(jiān)督的方式根據(jù)知識(shí)庫中已有的詞庫數(shù)據(jù),進(jìn)行詞性標(biāo)注,統(tǒng)計(jì)詞性標(biāo)注的結(jié)果作為特征,再根據(jù)bert構(gòu)建的字向量作為分割的特征。
同樣類似于AutoPhrase的方式構(gòu)建數(shù)據(jù)集,Positive Pool中的數(shù)據(jù)來源于目前知識(shí)庫已有的醫(yī)療數(shù)據(jù),Negative Pool中的數(shù)據(jù)來自N-gram隨機(jī)選取的非庫中的數(shù)據(jù),再根據(jù)一些規(guī)則和N-gram的概率等閾值信息簡(jiǎn)單的過濾了一些負(fù)樣本中的臟數(shù)據(jù)。使用gbdt(Gradient Boosting Decision Tree)構(gòu)建分類器模型。目前抽取效果如下所示:
? ? ? ? ? ? ?
在抽取結(jié)果中可以看到,一句話中可以抽取多個(gè)phrase,對(duì)于分詞來講,不同方式組合phrase會(huì)生成不同的分詞格式,根據(jù)score閾值進(jìn)行過濾,根據(jù)phrase抽取結(jié)果,查詢所有的抽取組合,根據(jù)組合結(jié)果不同,通過phrase長(zhǎng)度和個(gè)數(shù)進(jìn)行約束,公式如下所示:
下圖為最后輸出排序的結(jié)果:
總結(jié)
這篇文章調(diào)研了關(guān)于Phrase Mining構(gòu)建的方法來解決在特定專業(yè)領(lǐng)域中存在未登錄詞和個(gè)性化分詞問題。 Phrase Mining只是將非結(jié)構(gòu)化文本轉(zhuǎn)化為半結(jié)構(gòu)化文本的第一步,之后還需要在其基礎(chǔ)上進(jìn)行實(shí)體鏈接和知識(shí)圖譜的構(gòu)建。Phrase Mining可以根據(jù)數(shù)據(jù)的不斷擴(kuò)充對(duì)模型不斷的優(yōu)化,在其優(yōu)化的同時(shí),也對(duì)后續(xù)任務(wù)有著決定性的幫助。
可
能
喜
歡
跨平臺(tái)NLP/ML文章索引
萬萬沒想到,我的煉丹爐壞了
詞搜索引擎--項(xiàng)詞典與倒排索引優(yōu)化
如何與GPU服務(wù)器優(yōu)雅交互
不要忘了關(guān)注小夕~星標(biāo)?小夕哦~
參考文獻(xiàn)
[1] 結(jié)巴分詞2--基于前綴詞典及動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)分詞
[2] 結(jié)巴分詞3--基于漢字成詞能力的HMM模型識(shí)別未登錄詞
[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] 中文基本復(fù)合名詞短語語義關(guān)系體系及知識(shí)庫構(gòu)建
[9] How to incorporate phrases into Word2Vec – a text mining approach
你的每一個(gè)“在看”我都當(dāng)成了喜歡
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的限定域文本语料的短语挖掘(Phrase Mining)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google | 突破瓶颈,打造更强大的
- 下一篇: 文本分类有哪些论文中很少提及却对性能有重