NLP關鍵詞提取方法總結及實現(xiàn)

向AI轉型的程序員都關注了這個號??????
機器學習AI算法工程?? 公眾號:datayx
一、關鍵詞提取概述
關鍵詞是能夠表達文檔中心內容的詞語,常用于計算機系統(tǒng)標引論文內容特征、信息檢索、系統(tǒng)匯集以供讀者檢閱。關鍵詞提取是文本挖掘領域的一個分支,是文本檢索、文檔比較、摘要生成、文檔分類和聚類等文本挖掘研究的基礎性工作。
從算法的角度來看,關鍵詞提取算法主要有兩類:無監(jiān)督關鍵詞提取方法和有監(jiān)督關鍵詞提取方法。
1、無監(jiān)督關鍵詞提取方法
不需要人工標注的語料,利用某些方法發(fā)現(xiàn)文本中比較重要的詞作為關鍵詞,進行關鍵詞提取。該方法是先抽取出候選詞,然后對各個候選詞進行打分,然后輸出topK個分值最高的候選詞作為關鍵詞。根據(jù)打分的策略不同,有不同的算法,例如TF-IDF,TextRank,LDA等算法。
無監(jiān)督關鍵詞提取方法主要有三類:基于統(tǒng)計特征的關鍵詞提?。═F,TF-IDF);基于詞圖模型的關鍵詞提取(PageRank,TextRank);基于主題模型的關鍵詞提取(LDA)
基于統(tǒng)計特征的關鍵詞提取算法的思想是利用文檔中詞語的統(tǒng)計信息抽取文檔的關鍵詞;
基于詞圖模型的關鍵詞提取首先要構建文檔的語言網絡圖,然后對語言進行網絡圖分析,在這個圖上尋找具有重要作用的詞或者短語,這些短語就是文檔的關鍵詞;
基于主題關鍵詞提取算法主要利用的是主題模型中關于主題分布的性質進行關鍵詞提??;
2、有監(jiān)督關鍵詞提取方法
將關鍵詞抽取過程視為二分類問題,先提取出候選詞,然后對于每個候選詞劃定標簽,要么是關鍵詞,要么不是關鍵詞,然后訓練關鍵詞抽取分類器。當新來一篇文檔時,提取出所有的候選詞,然后利用訓練好的關鍵詞提取分類器,對各個候選詞進行分類,最終將標簽為關鍵詞的候選詞作為關鍵詞。
3、無監(jiān)督方法和有監(jiān)督方法優(yōu)的缺點
無監(jiān)督方法不需要人工標注訓練集合的過程,因此更加快捷,但由于無法有效綜合利用多種信息 對候選關鍵詞排序,所以效果無法與有監(jiān)督方法媲美;而有監(jiān)督方法可以通過訓練學習調節(jié)多種信息對于判斷關鍵詞的影響程度,因此效果更優(yōu),有監(jiān)督的文本關鍵詞提取算法需要高昂的人工成本,因此現(xiàn)有的文本關鍵詞提取主要采用適用性較強的無監(jiān)督關鍵詞提取。
4、關鍵詞提取常用工具包
jieba
Textrank4zh (TextRank算法工具)
SnowNLP? (中文分析)簡體中文文本處理
TextBlob (英文分析)
二、TF-IDF關鍵詞提取算法及實現(xiàn)
TF-IDF算法的詳細介紹及實現(xiàn)方法總結參看博客:TF-IDF算法介紹及實現(xiàn)
三、TextRank關鍵詞提取算法實現(xiàn)
TextRank算法的詳細介紹及實現(xiàn)方法總結參看博客:TextRank算法介紹及實現(xiàn)
四、LDA主題模型關鍵詞提取算法及實現(xiàn)
1、LDA(Latent Dirichlet Allocation)文檔主題生成模型
主題模型是一種統(tǒng)計模型用于發(fā)現(xiàn)文檔集合中出現(xiàn)的抽象“主題”。主題建模是一種常用的文本挖掘工具,用于在文本體中發(fā)現(xiàn)隱藏的語義結構。
LDA也稱三層貝葉斯概率模型,包含詞、主題和文檔三層結構;利用文檔中單詞的共現(xiàn)關系來對單詞按主題聚類,得到“文檔-主題”和“主題-單詞”2個概率分布。
通俗理解LDA主題模型原理
https://blog.csdn.net/v_JULY_v/article/details/41209515
2、基于LDA主題模型的關鍵詞提取算法實現(xiàn)



運行結果:

五、Word2Vec詞聚類的關鍵詞提取算法及實現(xiàn)
1、Word2Vec詞向量表示
利用淺層神經網絡模型自動學習詞語在語料庫中的出現(xiàn)情況,把詞語嵌入到一個高維的空間中,通常在100-500維,在高維空間中詞語被表示為詞向量的形式。
特征詞向量的抽取是基于已經訓練好的詞向量模型。
2、K-means聚類算法
聚類算法旨在數(shù)據(jù)中發(fā)現(xiàn)數(shù)據(jù)對象之間的關系,將數(shù)據(jù)進行分組,使得組內的相似性盡可能的大,組間的相似性盡可能的小。
算法思想是:首先隨機選擇K個點作為初始質心,K為用戶指定的所期望的簇的個數(shù),通過計算每個點到各個質心的距離,將每個點指派到最近的質心形成K個簇,然后根據(jù)指派到簇的點重新計算每個簇的質心,重復指派和更新質心的操作,直到簇不發(fā)生變化或達到最大的迭代次數(shù)則停止。
3、基于Word2Vec詞聚類關鍵詞提取方法的實現(xiàn)過程
主要思路是對于用詞向量表示的詞語,通過K-Means算法對文章中的詞進行聚類,選擇聚類中心作為文本的一個主要關鍵詞,計算其他詞與聚類中心的距離即相似度,選擇topK個距離聚類中心最近的詞作為關鍵詞,而這個詞間相似度可用Word2Vec生成的向量計算得到。
具體步驟如下:
對語料進行Word2Vec模型訓練,得到詞向量文件;
對文本進行預處理獲得N個候選關鍵詞;
遍歷候選關鍵詞,從詞向量文件中提取候選關鍵詞的詞向量表示;
對候選關鍵詞進行K-Means聚類,得到各個類別的聚類中心(需要人為給定聚類的個數(shù));
計算各類別下,組內詞語與聚類中心的距離(歐幾里得距離或曼哈頓距離),按聚類大小進行降序排序;
對候選關鍵詞計算結果得到排名前TopK個詞語作為文本關鍵詞。
?
注:第三方工具包Scikit-learn提供了K-Means聚類算法的相關函數(shù),本文用到了sklearn.cluster.KMeans()函數(shù)執(zhí)行K-Means算法,sklearn.decomposition.PCA()函數(shù)用于數(shù)據(jù)降維以便繪制圖形。
六、信息增益關鍵詞提取算法及實現(xiàn)
信息增益算法的詳細介紹及實現(xiàn)方法總結參看博客:信息增益算法介紹及實現(xiàn)
七、互信息關鍵詞提取算法及實現(xiàn)
1、互信息(Mutual Information,MI)
在概率論和信息論中,兩個隨機變量的互信息或轉移信息(transinformation)是變量間相互依賴性的量度。不同于相關系數(shù),互信息并不局限于實值隨機變量,它更加一般且決定著聯(lián)合分布 p(X,Y) 和分解的邊緣分布的乘積 p(X)p(Y) 的相似程度?;バ畔⑹嵌攘績蓚€事件集合之間的相關性(mutual dependence)。
互信息被廣泛用于度量一些語言現(xiàn)象的相關性。在信息論中,互信息常被用來衡量兩個詞的相關度,也用來計算詞與類別之間的相關性。
2、互信息計算公式

?3、互信息算法實現(xiàn)

運行結果:?

兩者表達意思是一樣的,都是表示得知特征 X 的信息而使得類 Y 的信息的不確定性減少的程度。
注:
標準化互信息(Normalized Mutual Information,NMI)可以用來衡量兩種聚類結果的相似度。
標準化互信息Sklearn實現(xiàn):metrics.normalized_mutual_info_score(y_train, x_train[:, i])。
點互信息(Pointwise Mutual Information,PMI)這個指標來衡量兩個事物之間的相關性(比如兩個詞)。
八、卡方檢驗關鍵詞提取算法及實現(xiàn)
1、卡方檢驗
卡方是數(shù)理統(tǒng)計中用于檢驗兩個變量獨立性的方法,是一種確定兩個分類變量之間是否存在相關性的統(tǒng)計方法,經典的卡方檢驗是檢驗定性自變量對定性因變量的相關性。
2、基本思路
原假設:兩個變量是獨立的
計算實際觀察值和理論值之間的偏離程度
如果偏差足夠小,小于設定閾值,就接受原假設;否則就否定原假設,認為兩變量是相關的。
3、計算公式

其中,A為實際值,T為理論值??ǚ綑z驗可用于文本分類問題中的特征選擇,此時不需要設定閾值,只關心找到最為相關的topK個特征?;舅枷耄罕容^理論頻數(shù)和實際頻數(shù)的吻合程度或者擬合優(yōu)度問題。
4、基于sklearn的卡方檢驗實現(xiàn)


九、基于樹模型的關鍵詞提取算法及實現(xiàn)
1、樹模型
主要包括決策樹和隨機森林,基于樹的預測模型(sklearn.tree 模塊和 sklearn.ensemble 模塊)能夠用來計算特征的重要程度,因此能用來去除不相關的特征(結合 sklearn.feature_selection.SelectFromModel)
sklearn.ensemble模塊包含了兩種基于隨機決策樹的平均算法:RandomForest算法和Extra-Trees算法。這兩種算法都采用了很流行的樹設計思想:perturb-and-combine思想。這種方法會在分類器的構建時,通過引入隨機化,創(chuàng)建一組各不一樣的分類器。這種ensemble方法的預測會給出各個分類器預測的平均。
RandomForests 在隨機森林(RF)中,該ensemble方法中的每棵樹都基于一個通過可放回抽樣(boostrap)得到的訓練集構建。另外,在構建樹的過程中,當split一個節(jié)點時,split的選擇不再是對所有features的最佳選擇。相反的,在features的子集中隨機進行split反倒是最好的split方式。sklearn的隨機森林(RF)實現(xiàn)通過對各分類結果預測求平均得到,而非讓每個分類器進行投票(vote)。
Ext-Trees 在Ext-Trees中(詳見ExtraTreesClassifier和 ExtraTreesRegressor),該方法中,隨機性在劃分時會更進一步進行計算。在隨機森林中,會使用侯選feature的一個隨機子集,而非查找最好的閾值,對于每個候選feature來說,閾值是抽取的,選擇這種隨機生成閾值的方式作為劃分原則。
2、樹模型的關鍵詞提取算法實現(xiàn)
(1)部分代碼實現(xiàn)1

(2)部分代碼實現(xiàn)2


十、總結
本文總結了本人在實驗過程中所用到的常用關鍵詞抽取方法,實驗數(shù)據(jù)是基于公司的內部數(shù)據(jù),但此篇總結只是方法上的講解和實現(xiàn),沒有針對某一具體數(shù)據(jù)集做相應的結果分析。從實驗中可以很明顯看出有監(jiān)督關鍵詞抽取方法通常會顯著好于無監(jiān)督方法,但是有監(jiān)督方法依賴一定規(guī)模的標注數(shù)據(jù)。
參考:
1、NLP關鍵詞抽取常見算法
https://blog.csdn.net/Sakura55/article/details/85122966
2、gensim?models.ldamodel
https://radimrehurek.com/gensim/models/ldamodel.html
3、卡方檢驗原理及應用
https://blog.csdn.net/qq_39303465/article/details/79223843
4、特征選擇 (feature_selection)
https://www.cnblogs.com/stevenlk/p/6543628.html
5、隨機森林算法總結及調參
https://www.cnblogs.com/wj-1314/p/9628303.html
6、句子相似度計算
https://blog.csdn.net/reigns_/article/details/80983031
原文地址?https://asialee.blog.csdn.net/article/details/96454544
機器學習算法AI大數(shù)據(jù)技術
?搜索公眾號添加:?datanlp
長按圖片,識別二維碼
閱讀過本文的人還看了以下文章:
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《深度學習入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼
python就業(yè)班學習視頻,從入門到實戰(zhàn)項目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個項目玩轉深度學習:基于TensorFlow的實踐詳解》完整版PDF+附書代碼
PyTorch深度學習快速實戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機器學習實戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘實戰(zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)
李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計學習方法》最新資源全套!
重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別
【Keras】完整實現(xiàn)‘交通標志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學習圖像分類
VGG16遷移學習,實現(xiàn)醫(yī)學圖像識別分類工程項目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結構gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特征工程
不斷更新資源
深度學習、機器學習、數(shù)據(jù)分析、python
?搜索公眾號添加:?datayx??
