景区评论里往往包含大量景区专属名称、地方特色词汇和游客口语化表达,直接使用默认jieba分词提取关键词,很容易出现“把‘故宫博物院’拆成‘故宫’‘博物院’”“把‘太好逛啦’里的‘好逛’识别成无效词”这类问题。下面我们就一步步讲解优化方法。

一、添加自定义词典优化分词基础
景区有很多专属名词是默认词典里没有的,比如“张家界国家森林公园”“玻璃栈道”“打卡点”这类词汇,最优先的操作是把这些词汇加入自定义词典。
自定义词典的格式每行一个词,包含词语、词频、词性三个部分,词频和词性可以省略,词频设置高一点能保证分词时优先匹配。
# 自定义词典示例,保存为scenic_dict.txt 张家界国家森林公园 100 n 玻璃栈道 80 n 打卡点 50 n 太好逛 30 a 出片率 20 n
加载自定义词典的代码非常简单,在分词前调用load_userdict方法即可:
import jieba
# 加载自定义景区词典
jieba.load_userdict("scenic_dict.txt")
# 测试分词效果
comment = "张家界国家森林公园的玻璃栈道太好逛了,打卡点出片率很高"
seg_list = jieba.lcut(comment)
print(seg_list)
# 输出:['张家界国家森林公园', '的', '玻璃栈道', '太好逛', '了', ',', '打卡点', '出片率', '很', '高']二、设置停用词过滤无效信息
景区评论里会有很多没有实际意义的虚词、语气词,比如“的”“了”“啊”“呀”,还有通用的无效词比如“这个”“那个”,这些词需要过滤掉,才能提升关键词提取的精准度。
我们可以先整理一份景区场景的停用词表,包含通用停用词和景区评论特有的无效表达:
# 停用词表示例,保存为stopwords.txt 的 了 啊 呀 这个 那个 真的 感觉
分词后过滤停用词的代码如下:
# 读取停用词表
with open("stopwords.txt", "r", encoding="utf-8") as f:
stopwords = set([line.strip() for line in f.readlines()])
# 过滤停用词
filtered_words = [word for word in seg_list if word not in stopwords and word.strip() != ""]
print(filtered_words)
# 输出:['张家界国家森林公园', '玻璃栈道', '太好逛', '打卡点', '出片率', '很', '高']三、调整关键词提取参数适配场景
jieba自带的关键词提取方法extract_tags和textrank,可以通过调整参数适配景区评论场景。extract_tags基于TF-IDF算法,更适合短文本评论,我们可以通过调整返回关键词数量、设置词性过滤来优化结果。
比如我们只提取名词、形容词类的词汇,更符合景区评论的关键词特征:
import jieba.analyse
# 设置使用TF-IDF算法,提取前5个关键词,过滤词性为名词n、形容词a
jieba.analyse.set_stop_words("stopwords.txt")
keywords = jieba.analyse.extract_tags(comment, topK=5, allowPOS=('n', 'a'))
print(keywords)
# 输出:['张家界国家森林公园', '玻璃栈道', '打卡点', '出片率', '太好逛']四、结合规则补充特殊场景优化
有些景区评论里会出现表情符号、特殊标点,或者游客习惯用“666”“yyds”这类网络热词,我们可以提前做预处理:
- 先清理文本里的特殊符号、表情,只保留中文、英文、数字
- 把常用的网络热词加入自定义词典,或者做同义词映射,比如把“yyds”映射到“非常棒”
- 对于景区常见的组合词,比如“门票预约”“入园时间”,可以设置优先合并规则
预处理文本的示例代码如下:
import re
def preprocess_comment(comment):
# 去除特殊符号、表情,只保留中文、英文、数字、常见标点
comment = re.sub(r"[^\u4e00-\u9fa5a-zA-Z0-9,。!?、]", "", comment)
# 替换网络热词
comment = comment.replace("yyds", "非常棒").replace("666", "很好")
return comment
processed_comment = preprocess_comment(comment)
print(processed_comment)
# 输出:张家界国家森林公园的玻璃栈道太好逛了,打卡点出片率很高优化效果对比
我们可以用同一段景区评论,对比默认分词和优化后的关键词提取效果:
| 处理方式 | 提取的关键词结果 |
|---|---|
| 默认jieba分词+extract_tags | ['张家界', '国家森林公园', '玻璃', '栈道', '打卡', '点', '出片', '率'] |
| 优化后(自定义词典+停用词+参数调整) | ['张家界国家森林公园', '玻璃栈道', '打卡点', '出片率', '太好逛'] |
优化后的结果明显更贴合景区评论的实际语义,提取的关键词可以直接用于后续的游客满意度分析、景区服务优化等工作。