导读:本期聚焦于小伙伴创作的《Python如何通过构建自定义词库和优化停用词处理提升jieba分词在景区评论词云图准确性》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python如何通过构建自定义词库和优化停用词处理提升jieba分词在景区评论词云图准确性》有用,将其分享出去将是对创作者最好的鼓励。

景区评论文本中往往包含大量特定景点名称、地方特色词汇,比如“夫子庙”“趵突泉”“玻璃栈道”这类专属名词,默认的jieba分词词典没有收录这些内容,很容易出现错误切分,比如把“玻璃栈道”拆成“玻璃”“栈道”,最终生成的词云图无法准确体现游客的关注重点。除了分词不准,默认的停用词表也可能过滤掉部分有实际意义的词汇,或者保留大量无价值的语气词、虚词,进一步影响词云效果。

Python如何通过构建自定义词库和优化停用词处理提升jieba分词在景区评论词云图准确性

一、构建景区专属自定义词库

自定义词库的核心作用是让jieba识别到景区特有的词汇,避免错误切分。首先需要整理景区相关的专属词汇,包括景点名称、特色项目、地方美食、常见评价术语等,比如“莫高窟”“文创雪糕”“排队时长”这类词汇。

1. 自定义词库格式规范

jieba支持的自定义词典为纯文本格式,每行对应一个词汇,格式为词语 词频 词性,其中词频和词性可选,词频越高分词时优先级越高,词性可以标注为n(名词)、v(动词)等。示例如下:

# 景区自定义词库示例 user_dict.txt
夫子庙 100 n
秦淮河游船 100 n
文创冰淇淋 50 n
排队两小时 30 n
体验感拉满 20 a

2. 加载自定义词库

在Python代码中通过jieba的load_userdict方法加载自定义词库,加载后分词时会优先匹配词库中的内容:

import jieba

# 加载自定义词库
jieba.load_userdict("user_dict.txt")

# 测试分词效果
text = "今天去夫子庙玩,坐了秦淮河游船,还吃了文创冰淇淋,就是排队两小时太久了"
seg_list = jieba.lcut(text)
print(seg_list)
# 输出: ['今天', '去', '夫子庙', '玩', ',', '坐', '了', '秦淮河游船', ',', '还', '吃', '了', '文创冰淇淋', ',', '就是', '排队两小时', '太', '久', '了']

二、优化停用词处理规则

默认的停用词表通常包含通用虚词、标点,但景区评论中还有大量无意义的语气词、重复出现的无意义词汇,需要针对性优化停用词表,同时避免误删有实际价值的词汇。

1. 基础停用词表构建

先收集通用的中文停用词,再补充景区评论特有的无意义词汇,比如“啊”“哦”“哈哈”“那个”这类语气词,以及“景区”“地方”这类出现频率极高但无区分度的词汇:

# 基础停用词表,可保存为stopwords.txt
stopwords = [
    "的", "了", "是", "在", "我", "有", "和", "就", "不", "人",
    "啊", "哦", "哈哈", "那个", "这个", "景区", "地方", "感觉"
]

# 从文件加载停用词(如果保存为文件)
with open("stopwords.txt", "r", encoding="utf-8") as f:
    stopwords = [line.strip() for line in f.readlines()]

2. 动态迭代优化停用词

先对评论做一轮分词,统计高频词汇,把出现频率高但无实际分析价值的词汇加入停用词表,同时检查是否有被误判为停用词的有意义词汇,比如“贵”这类评价词不能加入停用词:

from collections import Counter

# 假设all_comments是所有景区评论的列表
all_comments = [
    "夫子庙的灯会太好看了,就是人太多",
    "秦淮河游船体验感拉满,推荐大家来",
    "排队两小时游玩十分钟,太不值了"
]

# 第一轮分词统计词频
word_counter = Counter()
for comment in all_comments:
    seg_list = jieba.lcut(comment)
    # 先过滤基础停用词
    filtered = [word for word in seg_list if word not in stopwords and len(word) > 1]
    word_counter.update(filtered)

# 打印高频词,判断是否需要补充停用词
print(word_counter.most_common(10))
# 如果“太”这类词出现频率极高且无意义,可加入停用词表

三、完整分词与词云生成流程

结合自定义词库和优化的停用词处理,完成从评论分词到词云图生成的完整流程:

import jieba
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter

# 1. 加载自定义词库
jieba.load_userdict("user_dict.txt")

# 2. 加载优化后的停用词表
with open("stopwords.txt", "r", encoding="utf-8") as f:
    stopwords = set([line.strip() for line in f.readlines()])

# 3. 分词并过滤停用词
all_comments = [
    "今天去夫子庙玩,坐了秦淮河游船,还吃了文创冰淇淋,就是排队两小时太久了",
    "夫子庙灯会太漂亮了,秦淮河游船也值得坐,就是文创冰淇淋有点贵",
    "体验感拉满,下次还要来夫子庙看灯会"
]

word_counter = Counter()
for comment in all_comments:
    seg_list = jieba.lcut(comment)
    # 过滤:长度大于1、不在停用词表、不是纯数字/标点
    filtered = [
        word for word in seg_list
        if len(word) > 1 and word not in stopwords and not word.isdigit() and not all(not c.isalnum() for c in word)
    ]
    word_counter.update(filtered)

# 4. 生成词云图
wc = WordCloud(
    font_path="SimHei.ttf",  # 中文需要指定字体,避免乱码
    background_color="white",
    width=800,
    height=400
)
wc.generate_from_frequencies(word_counter)

# 5. 展示词云
plt.figure(figsize=(10, 5))
plt.imshow(wc)
plt.axis("off")
plt.show()

四、效果验证与调整

生成词云后需要验证效果,重点检查:是否存在专属词汇被拆分的情况,如果有就补充到自定义词库;是否存在无意义词汇出现在词云中,如果有就加入停用词表。经过2-3轮迭代调整后,分词准确率会明显提升,生成的词云图也能更精准地反映游客对景区的真实评价重点。

Pythonjieba分词自定义词库停用词处理词云图修改时间:2026-05-28 21:48:49

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。