2019年政府工作報告中的關鍵詞
snownlp:
['發(fā)展', '改革', '企業(yè)', '推進', '經濟', '政策', '建設', '服務', ……]
jieba:
['改革', '發(fā)展', '推進', '加強', '加快', '深化', '創(chuàng)新', '建設', ……]
2019年政府工作報告中的詞頻統計
snownlp | jieba
發(fā)展 133 | 發(fā)展 127
改革 105 | 改革 89
經濟 65 | 推進 56
推進 57 | 企業(yè) 50
政策 56 | 加強 50
企業(yè) 55 | 經濟 45
加強 50 | 建設 44
建設 47 | 加快 40
社會 44 | 推動 40
創(chuàng)新 43 | 創(chuàng)新 39
市場 41 | 政府 38
加快 40 | 支持 37
推動 40 | 全面 36
政府 39 | 完善 36
全面 38 | 中國 35
支持 38 | 政策 35
中國 37 | 堅持 32
服務 36 | 深化 31
完善 36 | 促進 30
基本 31 | 就業(yè) 29
堅持 31 | 服務 29
深化 31 | 基本 28
就業(yè) 30 | 繼續(xù) 27
繼續(xù) 30 | 我們 27
促進 30 | 提高 26
工作 29 | 社會 25
提高 27 | 工作 24
我們 27 | 市場 24
問題 27 | 群眾 24
人民 26 | 問題 23
----
利用SnowNLP的代碼
# author:傳習者戚
# email:qijiuzhu@tsinghua.org.cn
# 2019年3月
from snownlp import SnowNLP
import time
# 計時開始
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
print('{} START'.format(time.strftime(TIME_FORMAT)))
# +++++++++++++++++++++++++++++++++
# 讀取文章內容,數據格式是列表list
with open("2019工作報告.txt", "r", encoding="utf-8") as f:
text_list = f.readlines()
text_string = "".join(t for t in text_list) # 將列表轉為文本字符串str
# 中文字符串處理類
s = SnowNLP(text_string)
# 統計關鍵詞
keywords = s.keywords(15) # 統計關鍵詞的方法:s.keywords(n) 前n個關鍵詞
keywords = [keyword for keyword in keywords if len(keyword) != 1]
print("關鍵詞:", keywords)
#
# 分詞
words = s.words # 分詞列表
w = list()
w.append(words) # 分詞列表,列表元素為列表
s = SnowNLP(w)
tf = s.tf # 詞頻
for dictionary in tf:
for k, v in sorted(dictionary.items(), key=lambda d: d[1], reverse=True):
if len(k) > 1:
print("%s\t\t%d" % (k, v))
# +++++++++++++++++++++++++++++++++
print()
# 計時結束
print('{} STOP'.format(time.strftime(TIME_FORMAT)))
利用Jieba的代碼
import jieba
import jieba.analyse
import time
# 計時開始
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
print('{} START'.format(time.strftime(TIME_FORMAT)))
# +++++++++++++++++++++++++++++++++
# 讀取文章內容,數據格式是列表list
with open("2019工作報告.txt", "r", encoding="utf-8") as f:
text_list = f.readlines()
text_string = "".join(t for t in text_list) # 將列表轉為文本字符串str
# 關鍵詞提取
keywords = jieba.analyse.extract_tags(text_string, 8)
print("【關鍵詞】", keywords)
# 詞頻統計
print("\n詞頻統計:\n")
seg_list = jieba.lcut(text_string, cut_all=False) # 中文分詞
word_freq = {}
for word in seg_list:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
freq_word = []
for word, freq in word_freq.items():
if len(word) != 1: # 去除標點及單字
freq_word.append((word, freq))
freq_word.sort(key=lambda x: x[1], reverse=True)
for word, freq in freq_word[:30]:
print(word, freq)
# +++++++++++++++++++++++++++++++++
print()
# 計時結束
print('{} STOP'.format(time.strftime(TIME_FORMAT)))