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()

代码分析:

  1. 使用 jieba.lcut(txt) 对文本进行分词
  2. 使用 count 字典统计词频
  3. 使用 jieba.del_word() 删除一些常见符号
  4. 使用 exclude 列表剔除一些无意义词语
  5. 使用 sorted 排序词频并取出前 10 个词
  6. 使用 matplotlib 绘制柱状图

问题分析:

代码中使用 jieba.del_word() 删除了一些无意义词语,但最终柱状图中可能仍然存在这些词语。这可能是因为:

  1. jieba.del_word() 操作可能没有生效。需要确保删除操作在分词之前执行,或者使用 jieba.load_userdict() 加载自定义词典来实现删词。
  2. 这些词语在文本中出现的频率较高,导致即使删掉了也仍然出现在频率前 10 的词中。建议增加 exclude 列表,筛选更多的无意义词语,或使用其他方法进行词语过滤。

建议:

  1. 建议在代码中添加 jieba.load_userdict() 加载自定义词典,将需要删除的词语加入到词典中,并确保在分词之前加载词典。
  2. 建议增加 exclude 列表,筛选更多的无意义词语,例如:'了', '的', '是', '在', '就', '也', '和', '很', '都', '这', '那', '个' 等词语。
  3. 可以考虑使用更专业的词语过滤方法,例如使用停用词库、词性标注等方法,更加精确地过滤无意义词语。

总结:

本代码展示了使用 Python 的 Jieba 分词库对用户评价文本进行分词并统计词频,最终绘制柱状图展示高频词的方法。同时分析了代码中删词操作可能失效的原因并给出建议。希望能对您有所帮助。

Python 使用 Jieba 分词库分析用户评价并绘制柱状图

原文地址: https://www.cveoy.top/t/topic/n0f9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录