A Python implementation of the Rapid Automatic Keyword Extraction (RAKE) algorithm as described in: Rose, S., Engel, D., Cramer, N., & Cowley, W. (2010). Automatic Keyword Extraction from Individual Documents. In M. W. Berry & J. Kogan (Eds.), Text Mining: Theory and Applications: John Wiley & Sons.
了解該算法中的設計思維,關鍵詞抽取的側重點,對於后續的文本處理任務有很大幫助
開源地址:https://github.com/zelandiya/RAKE-tutorial
http://www.hlt.utdallas.edu/~saidul/code.html
https://pypi.org/project/yake/
Example use
from nlp_rake import rake stoppath = 'data/stoplists/SmartStoplist.txt' rake_object = rake.Rake(stoppath, 5, 3, 4) sample_file = open("data/docs/fao_test/w2167e.txt", 'r', encoding="iso-8859-1") text = sample_file.read() keywords = rake_object.run(text) # 3. print results print("Keywords:", keywords)
其它常見的關鍵詞提取算法
- 基於TF-IDF算法的關鍵詞抽取
import jieba.analyse
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 為待提取的文本
topK 為返回幾個 TF/IDF 權重最大的關鍵詞,默認值為 20
withWeight 為是否一並返回關鍵詞權重值,默認值為 False
allowPOS 僅包括指定詞性的詞,默認值為空,即不篩選
jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 為 IDF 頻率文件
關鍵詞提取所使用逆向文件頻率(IDF)文本語料庫可以切換成自定義語料庫的路徑
用法:jieba.analyse.set_idf_path(file_name) # file_name為自定義語料庫的路徑
關鍵詞提取所使用停止詞(Stop Words)文本語料庫可以切換成自定義語料庫的路徑
用法: jieba.analyse.set_stop_words(file_name) # file_name為自定義語料庫的路徑
- 基於TextRank算法的關鍵詞提取
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’)) 直接使用,接口相同,注意默認過濾詞性。
jieba.analyse.TextRank() 新建自定義 TextRank 實例
基本思想:
將待抽取關鍵詞的文本進行分詞
以固定窗口大小(默認為5,通過span屬性調整),詞之間的共現關系,構建圖
計算圖中節點的PageRank,注意是無向帶權圖