本文共 2427 字,大约阅读时间需要 8 分钟。
分词的应用场景还是蛮多的,比如电商里面的产品用户评价,每个商品的评价数很多,由于是大量的文本,需要从这些文本找出评价的关键字,这个时候分词就能派上用场;再比如,做文本分析,热点词统计都会用到分词。
整体思路就是利用python中的jieba库,对每一行文字进行分词处理,处理之后的结果放在list(列表)中。遍历列表,重复的值就计数,留下唯一的值作为key。
import jieba #分词import xlwt #Excel库import pandas as pd #pandas库import matplotlib as mpl #matplotlib库由各种可视化类构成from wordcloud import WordCloud #词云import matplotlib.pyplot as plt #matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式
mpl.rcParams["font.sans-serif"] = ['Microsoft YaHei']#配置字体plt.rcParams["axes.labelsize"] = 16 #轴域大小plt.rcParams["xtick.labelsize"] =14 #x轴字体大小plt.rcParams["ytick.labelsize"] =14 #y轴字体大小plt.rcParams["legend.fontsize"]=12 #图例字体大小plt.rcParams["figure.figsize"]=[15,9] #图形大小
如果不清楚figure、axes、xtick等概念,可以看下图
data =pd.read_excel('/Users/song/Documents/test.xlsx')data = pd.DataFrame(data)
word_list = []#分词结果放在word_list列表中key_list = []#对word_list列表中的分词结果,进行循环处理,去重后的值作为keyfinal = ‘' #自定义字符串,主要用来做词云stopwords = [',','。','、','!','(',')','(',')',',','.','!','1','2',' '] # 停止词for n in range(data.shape[0]): seg_list = list(jieba.cut(data['计划事项'][n])) for seg in seg_list: if seg not in stopwords: final = final + seg + ' ' word_list.append(seg)
word_dict={}#定义一个字典with open(r'/Users/song/Downloads/weiyi.txt','w') as fw: for item in word_list: if item not in word_dict: word_dict[item] = 1 else: word_dict[item] += 1 orderList=list(word_dict.values()) orderList.sort(reverse=True) for i in range(len(orderList)): for key in word_dict: if word_dict[key]==orderList[i]: fw.write(key+' '+str(word_dict[key])+'\n') #写入txt文档 key_list.append(key) word_dict[key]=0
结果
客户 1238
拜访 1055 走访 1048 市场 687 服务 558 产品 500 技术 483 展会 405
wbk = xlwt.Workbook() #定义一个workbook对象sheet = wbk.add_sheet("wordCount")#新建一个sheet并命名for i in range(len(key_list)): sheet.write(i, 1, label = orderList[i]) sheet.write(i, 0, label = key_list[i])wbk.save(r'/Users/song/Downloads/wordCount.xls’)
结果
my_wordcloud = WordCloud(font_path='/Library/Fonts/Arial Unicode.ttf',width=1000,height=600).generate(final) #font_path指定中文编码,否则不能显示中文 plt.imshow(my_wordcloud) #显示词云plt.axis('off') #关掉坐标轴plt.savefig(r'/Users/song/Downloads/ciyun.png') #保存生成的词云图plt.show()
结果类似下图,我隐去了真实案例生成的词云图