Python 使用 Jieba 分词库分析用户评价并绘制柱状图
Python 使用 Jieba 分词库分析用户评价并绘制柱状图
本文将使用 Python 的 Jieba 分词库对用户评价文本进行分词并统计词频,最终绘制柱状图展示高频词。
import jieba
import matplotlib.pyplot as plt
file = open('pingjia.txt', 'r', encoding='utf-8')
txt = file.read()
words = jieba.lcut(txt)
count = {}
jieba.del_word(',')
jieba.del_word(':')
jieba.del_word('!')
for word in words:
if len(word) < 1:
continue
else:
count[word] = count.get(word, 0) + 1
exclude = ['可以', '的', '。', ':', '', '这样']
for key in list(count.keys()):
if key in exclude:
del count[key]
top_words = sorted(count.items(), key=lambda x: x[1], reverse=True)[:10] # 取出频率前10的词
x = [word[0] for word in top_words]
y = [word[1] for word in top_words]
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('用户评价分析')
plt.xlabel('评价')
plt.ylabel('数量')
plt.bar(x, y)
plt.show()
代码分析:
- 使用
jieba.lcut(txt)对文本进行分词 - 使用
count字典统计词频 - 使用
jieba.del_word()删除一些常见符号 - 使用
exclude列表剔除一些无意义词语 - 使用
sorted排序词频并取出前 10 个词 - 使用
matplotlib绘制柱状图
问题分析:
代码中使用 jieba.del_word() 删除了一些无意义词语,但最终柱状图中可能仍然存在这些词语。这可能是因为:
jieba.del_word()操作可能没有生效。需要确保删除操作在分词之前执行,或者使用jieba.load_userdict()加载自定义词典来实现删词。- 这些词语在文本中出现的频率较高,导致即使删掉了也仍然出现在频率前 10 的词中。建议增加
exclude列表,筛选更多的无意义词语,或使用其他方法进行词语过滤。
建议:
- 建议在代码中添加
jieba.load_userdict()加载自定义词典,将需要删除的词语加入到词典中,并确保在分词之前加载词典。 - 建议增加
exclude列表,筛选更多的无意义词语,例如:'了', '的', '是', '在', '就', '也', '和', '很', '都', '这', '那', '个' 等词语。 - 可以考虑使用更专业的词语过滤方法,例如使用停用词库、词性标注等方法,更加精确地过滤无意义词语。
总结:
本代码展示了使用 Python 的 Jieba 分词库对用户评价文本进行分词并统计词频,最终绘制柱状图展示高频词的方法。同时分析了代码中删词操作可能失效的原因并给出建议。希望能对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/n0f9 著作权归作者所有。请勿转载和采集!