- 本次选取词频分析的文章是国家发布的一个新冠肺炎疫情社区防控的指导方案,这篇文章主要讲了如何在社区进行疫情防控,首先将这篇文章复制下来,以"utf-8"格式保存为".txt"文件
下面是最终保存的结果图:
def read_txt(path):
'''读文件'''
txt = open(path, 'r', encoding='utf-8').read()
for x in ' ,。“‘’”:!、《》;? 」「…":':
txt = txt.replace(x, "")
txt = txt.replace("\n","")
return txt
def get_words(txt):
'''用jieba进行分词'''
new_words = ['新冠肺炎', '社区防控', '委员会', '组织领导', '医学观察', '精准化', '精细化']
del_words = ['做好', '对于', '逐步', '做到', '推动', '根据', '要求', '返回']
for i in new_words:
jieba.add_word(i)
for i in del_words:
jieba.del_word(i)
words = jieba.lcut(txt)
return words
def deal_with_words(words):
'''统计词频'''
dic = {}
for i in words:
if len(i) > 1:
dic[i] = words.count(i)
words_list = list(dic.items())
words_list.sort(key= lambda x:x[1], reverse=True)
print ('字符\t词频')
print ('=============')
for i in range(30):
word, count = words_list[i]
print("{0:<10}{1:>5}".format(word, count))
以下是最终打印出来的结果:前面是分割出来的词,后面是出现的次数。
字符 词频
=============
社区 83
工作 40
防控 35
社区防控 33
疫情 26
人员 25
管理 23
服务 21
居民 20
生活 16
组织 16
物资 16
措施 14
机制 12
健康 12
参与 11
医学观察 10
地区 10
隔离 10
配送 10
新冠肺炎 9
实施 9
群众 9
完善 9
社区服务 9
机构 8
志愿者 8
加强 8
信息 8
高风险 8
def create_word_cloud(words):
'''绘制词云'''
txt = ' '.join(words)
wc = WordCloud(font_path='./fonts/simhei.ttf',width=800, height=600, mode='RGBA', background_color=None).generate(txt)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
下面是最终生成的词云图:
通过词云和统计的词频可以发现“社区”、“工作”、“防控”、“居民服务”等关键词比较突出,大致可以总结出这篇文章主要是谈社区防控的,并且对居民生活要有保障物资,各地应该是要有相应的措施,后面的“健康”、“医学观察”、“地区”、“隔离”、“配送”则表明要求关注居民的健康问题,如果发现有人有发热状况要立即进行隔离并进行医学观察,给居民配送物资等,基本上就是社区防控与服务居民的方案指导。
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
def read_txt(path):
'''读文件'''
txt = open(path, 'r', encoding='utf-8').read()
for x in ' ,。“‘’”:!、《》;? 」「…":':
txt = txt.replace(x, "")
txt = txt.replace("\n","")
return txt
def get_words(txt):
'''用jieba进行分词'''
new_words = ['新冠肺炎', '社区防控', '委员会', '组织领导', '医学观察', '精准化', '精细化']
del_words = ['做好', '对于', '逐步', '做到', '推动', '根据', '要求', '返回']
for i in new_words:
jieba.add_word(i)
for i in del_words:
jieba.del_word(i)
words = jieba.lcut(txt)
return words
def deal_with_words(words):
'''统计词频'''
dic = {}
for i in words:
if len(i) > 1:
dic[i] = words.count(i)
words_list = list(dic.items())
words_list.sort(key= lambda x:x[1], reverse=True)
print ('字符\t词频')
print ('=============')
for i in range(30):
word, count = words_list[i]
print("{0:<10}{1:>5}".format(word, count))
def create_word_cloud(words):
'''绘制词云'''
txt = ' '.join(words)
wc = WordCloud(font_path='./fonts/simhei.ttf',width=800, height=600, mode='RGBA', background_color=None).generate(txt)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
def main():
'''主函数'''
txt = read_txt('疫情指导方案.txt')
words = get_words(txt)
deal_with_words(words)
create_word_cloud(words)
if __name__ == '__main__':
main()