WordCount程序任务:
程序 |
WordCount |
输入 |
一个包含大量单词的文本文件 |
输出 |
文件中每个单词及其出现次数(频数), 并按照单词字母顺序排序, 每个单词和其频数占一行,单词和频数之间有间隔 |
1.用你最熟悉的编程环境,编写非分布式的词频统计程序。
- 读文件
- 分词(text.split列表)
- 按单词统计(字典,key单词,value次数)
- 排序(list.sort列表)
- 输出
import re
import collections
import numpy as np
import jieba
import wordcloud
from PIL import Image
import matplotlib.pyplot as plt
#读文件
file_data=open('a.txt',encoding='utf-8')
string_data=file_data.read()
file_data.close()
#文本预处理
pattern=re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')
string_data=re.sub(pattern, '', string_data)
#文本分词
seg_list_exact=jieba.cut(string_data, cut_all=False)
object_list=[]
remove_words=[u'的', u',',u'和',u'是',u'随着',u'对于',u'对',u'等',u'能',u'都',u'媒体',u'如果',u'目前',u'需要',u'没有',u'输',u'赛季']
for word in seg_list_exact:
if word not in remove_words:
object_list.append(word)
#词频统计
word_counts=collections.Counter(object_list)
word_counts_top10=word_counts.most_common(10)
print(word_counts_top10)
#词频展示
mask=np.array(Image.open('F:\pyc\dashuju\jinqiu2.jpg'))
wordc=wordcloud.WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',mask=mask,max_words=100,max_font_size=100)
wordc.generate_from_frequencies(word_counts)
image_colors=wordcloud.ImageColorGenerator(mask)
wordc.recolor(color_func=image_colors)
plt.imshow(wordc)
plt.axis('off')
plt.show()