python编程请教我使用jieba分词后该如何取得前十位高频词并且制作成柱状图确保能够正确运行并且注意中文乱码情况并且删除无效词组
以下是一份示例代码,可以实现你所需的功能:
import jieba
import matplotlib.pyplot as plt
from collections import Counter
# 读取文本文件
with open('example.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 对文本进行分词
words = jieba.cut(text)
# 过滤无效词组和单个字
stop_words = ['的', '了', '是', '我', '你', '他', '她', '它', '我们', '你们', '他们', '她们', '它们']
words = [word for word in words if len(word) > 1 and word not in stop_words]
# 统计词频并选取前十位
freq = Counter(words)
top_words = dict(freq.most_common(10))
# 绘制柱状图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体,避免乱码
plt.bar(top_words.keys(), top_words.values())
plt.title('前十位高频词')
plt.xlabel('词语')
plt.ylabel('出现次数')
plt.show()
解释一下代码的主要部分:
- 读取文本文件,假设文件名为
example.txt。 - 对文本进行分词,使用
jieba.cut()函数,得到一个生成器对象。 - 过滤无效词组和单个字,这里使用一个简单的列表来存储需要过滤的词语。
- 使用
collections.Counter()函数统计词频,并使用most_common()方法选取前十位高频词。 - 绘制柱状图,使用
matplotlib.pyplot库的函数来实现。其中,plt.rcParams['font.sans-serif'] = ['SimHei']这一行代码用来设置中文字体,避免乱码。
需要注意的是,这份代码中仅仅是一个示例,实际使用中还需要根据具体情况进行调整。例如,需要修改文件名、过滤的无效词组、绘图的标题等等
原文地址: https://www.cveoy.top/t/topic/eUAg 著作权归作者所有。请勿转载和采集!