热词分析在公众趋势分析、舆情分析有很宽广的应用,我们来看看怎么从一个TXT文件中分析出文章的热词出来,我们采用流行的第三方“结巴”包来实现。
首先安装第三方包(matplotlib,jieba,wordcloud,numpy)mmatplotlib主要来绘制热力云图,jieba来做热词分析,wordcloud词云展示,numpy做多维数组处理。
网上弄段代码:
import matplotlib
import matplotlib.pyplot as plt #数据可视化
import jieba #词语切割
import wordcloud #分词
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS #词云,颜色生成器,停止
import numpy as np #科学计算
from PIL import Image #处理图片
def ciyun():
#打开文本
textfile = open('input.txt').read() #读取文本内容
wordlist = jieba.cut_for_search(textfile)#切割词语
space_list = ' '.join(wordlist) # 链接词语
backgroud = np.array(Image.open('2.jpg')) #背景图片,只有黑白图才能按照形状生成词云
mywordcloud = WordCloud(width=4200, height=3600,
background_color= 'white',#背景颜色
mask=backgroud, #写字用的背景图,从图片中提取颜色
max_words=500, #最大词语数
stopwords=STOPWORDS,#停止的默认词语
font_path='simkai.ttf',#源码自带字体
max_font_size=100,#最大字体尺寸
random_state=50,#随机角度
scale=1).generate(space_list) #生成词云
image_color = ImageColorGenerator(backgroud)#生成词云的颜色
plt.imshow(mywordcloud) #显示词云
plt.axis('off') #关闭坐标(x,y轴)
plt.savefig('output.png') #保存图片
plt.show()#显示
def main():
ciyun()
if __name__ == '__main__':
main()
还是很顺利,没太多坑,文章放在input.txt里面,结果输出output.png,这段代码的主要流程是,先导入input.txt,然后用jieba分词,提取首500个热词,然后调用mywordcloud 展示并输出。下图是输出例子。