内容正文:
第六章 分词、数据可视化
一、分词
中文分词是中文文本信息处理的基础,机器翻译、全文检索等涉及中文的相关应用中都离不开中文分词。因为英文词语与词语之间有明显的空格或符号,分词不涉及关键词提取方法,而中文词与词之间是紧密相连的,需要通过中文分词算法实现。
1.使用Python中文分词jieba模块实现分词
file = open("你是我的荣耀.txt",'r',encoding='utf-8')
txt = file.read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word)>=2: #过滤单字符
counts[word] = counts.get(word,0)+1 #注意get方法的使用
items = list(counts.items()) #将字典转为列表
items.sort(key=lambda x:x[1],reverse=True) #将统计结果降序排序
print(items[:10]) #输出词频最高的10个词
程序运行结果:
2.jieba库常用函数
函数
描述
cut(s,cut_all)
对字符串s分词,返回可迭代对象
cut_all设置分词模式,默认False精确模式
cut_all=True为全模式
lcut(s,cut_all)
和cut()相似,返回列表类型
cut_for_search(s)
搜索引擎模式
二、利用matplotlib模块绘图
matplotlib是一个绘图库,使用其中的pyplot子库所提供的函数可以快速绘图和设置图表的坐标轴、坐标轴刻度、图例等。
1.常用绘图函数
函数
说明
figure()
创建图表图像。直接调用绘图函数时会自动创建figure对象
plot()
绘制线形图
bar()
绘制垂直柱形图
bath()
绘制水平柱形图
scatter()
绘制散点图
title()
设置图表标题
xlim()、ylim()
设置X、Y轴的取值范围
xlabel()、ylabel()
设置X、Y轴的标签
legend()
显示图例
show()
显示创建的所有绘图对象
2.用分词结果绘制柱型图
import matplotlib.pyplot as plt
plt.rc("font",**{"family":"SimHei"}) #设置对中文坐标的支持
plt.figure(figsize=(8,4.5)) #创建一个图表对象
x = [i[0] for i in items[:20]] #取前20个词作为X轴
y = [i[1] for i in items[:20]] #前20个词的词频作为Y轴
plt.bar(x,y,label="词频",color="r") #生成柱形图
plt.ylim(0,1600) #设置y轴取值范围
plt.ylabel("词频") #设置y轴标签
for i in range(len(y)): #创建文本框,标识词频具体数值
plt.text(i,y[i],str(y[i]),ha="center",va="bottom")
plt.title("小说最高频率词汇前20") #设置图表标题
plt.legend() #显示图例
plt.show() #图像在显示屏上显示
运行结果:
三、标签云制作
标签云用词频表现文本特征,将关键词按照一定的顺序和规律排列,如频度递减、字母顺序等,并以文字大小形式代表词语的重要性。标签云广泛应用于报纸、杂志等传统媒体和互联网。
1.利用wordcloud制作词云
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
mk = np.array(Image.open("心.png")) #标签云模板图片
ciyun_word = [i[0] for i in items[:200]] #取前200个高频词
new_text = ' '.join(ciyun_word) #按照词频连接成字符串
wordscloud = WordCloud(background_color='white',
font_path = '汉仪乐喵体.ttf