NLP自然語言處理:關鍵詞提取

 

 

 

基於 TF-IDF 算法的關鍵詞抽取

import jieba.analyse

  • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
    • sentence 爲待提取的文本
    • topK 爲返回幾個 TF/IDF 權重最大的關鍵詞,默認值爲 20
    • withWeight 爲是否一併返回關鍵詞權重值,默認值爲 False
    • allowPOS 僅包括指定詞性的詞,默認值爲空,即不篩選

提取例子:

import jieba.analyse as analyse
import pandas as pd
df = pd.read_csv('./origin_data/technology_news.csv')
df = df.dropna()
lines = df.content.values.tolist()
content = "".join(lines)
print("  ".join(analyse.extract_tags(content, topK=30, withWeight=False, allowPOS=())))

 

基於 TextRank 算法的關鍵詞抽取

  • jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默認過濾詞性。
  • jieba.analyse.TextRank() 新建自定義 TextRank 實例

算法論文:http://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf

基本思想:

  • 將待抽取關鍵詞的文本進行分詞
  • 以固定窗口大小(默認爲5,通過span屬性調整),詞之間的共現關係,構建圖
  • 計算圖中節點的PageRank,注意是無向帶權圖

TextRank的核心就是PageRank,PageRank介紹:https://www.jianshu.com/p/f6d66ab97332

提取例子:

import jieba.analyse as analyse
import pandas as pd
df = pd.read_csv("./origin_data/military_news.csv", encoding='utf-8')
df = df.dropna()
lines=df.content.values.tolist()
content = "".join(lines)

print("  ".join(analyse.textrank(content, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))))
print("---------------------我是分割線----------------")
print("  ".join(analyse.textrank(content, topK=20, withWeight=False, allowPOS=('ns', 'n'))))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章