停用词究竟有何妙用:优化分词、精进LDA模型

引言:

在自然语言处理领域,文本数据的处理是一项至关重要的任务。而在处理文本数据时,分词是一个必不可少的步骤,它将文本拆分成有意义的词语或短语,为后续的文本分析和挖掘奠定了基础。然而,传统的分词方法往往会将一些并不具备实质信息的词语也一并纳入考量,而这些词语往往被称为停用词。

停用词是指在文本处理过程中被忽略的词语,因为它们通常是高频出现且缺乏实际含义的词汇,如"的"、"了"、"和"等。在构建文本分析模型时,停用词的存在可能会干扰模型的准确性和效率,影响到对文本数据的深入理解和挖掘。

因此,建立一个有效的停用词库并将其应用于文本分析过程中变得至关重要。本文将探讨如何通过建立停用词库来优化分词,从而提升主题模型中的LDA(Latent Dirichlet Allocation)模型的性能。

剔除停用词的好处

除停用词在自然语言处理中是一个重要的步骤,它有以下几个好处

  1. 提高处理效率:停用词通常是频繁出现的功能词或无实际意义的词语,例如介词、连词、冠词、代词等。这些词汇对于文本的含义分析没有太大贡献,且会占据大量的存储空间和计算资源。因此,剔除停用词可以简化文本数据并提高处理效率。
  2. 减少噪声:剔除停用词可以减少文本中的噪声,使得后续的文本分析更加准确和有效。
  3. 突出关键信息:通过剔除停用词,可以使得文本中的关键词更加突出,有助于提取和理解文本的主题和关键信息。

需要注意的地方

  1. 避免过度剔除:过度剔除停用词可能会导致一些重要的语境信息丢失。例如,在情感分析中,一些常见的停用词如 "not"、"no" 等可能被保留,因为它们可以改变句子的情感倾向。
  2. 灵活处理:在某些特定的任务中,可能需要保留一些特定的停用词。例如,在问答系统中,一些常见的停用词如 "what"、"when"、"where" 等可能被保留,因为它们可以提供关于问题的重要上下文。
  3. 根据任务需求选择停用词表:不同的任务可能需要不同的停用词表。在选择停用词表时,需要综合考虑语言的特点、任务的领域和目标等因素。

实例

深入Spark与LDA:大规模文本主题分析实战 - 掘金 (juejin.cn)

上述博客对景区游客评价文本进行了初步分析和LDA建模,但是因为建模效果并不好,下面我们将从建立停用词词库来优化分词以达到优化模型的角度来展示。

在此之前停用表选择的是nltk的中文停用词表,但主题提取后的效果并不好,还是出现了停用词"一个",于网上搜索资料在GitHub中找到以下开源库: github.com/goto456/sto...

于博客中找到以下停用词表,拥有上千条停用词 最全中文停用词表(可直接复制)_停用词库-CSDN博客 将其放在项目中

将nltk替换为本地的停用词表

python 复制代码
# stop_words = set(stopwords.words('chinese'))
# 使用本地停用词表替换nltk的停用词表
with open('/opt/code/tour/stop_words_Chinese', 'r', encoding='utf-8') as f:
    stop_words = set(f.read().splitlines())


broadcastVar = spark.sparkContext.broadcast(stop_words)

重新运行后

更加合理。

相关推荐
梨子串桃子_1 天前
推荐系统学习笔记 | PyTorch学习笔记
pytorch·笔记·python·学习·算法
发哥来了1 天前
AI视频生成企业级方案选型指南:2025年核心能力与成本维度深度对比
大数据·人工智能
文言一心1 天前
LINUX离线升级 Python 至 3.11.9 操作手册
linux·运维·python
北邮刘老师1 天前
智能体治理:人工智能时代信息化系统的全新挑战与课题
大数据·人工智能·算法·机器学习·智能体互联网
诗词在线1 天前
中国古代诗词名句按主题分类有哪些?(爱国 / 思乡 / 送别)
人工智能·python·分类·数据挖掘
高锰酸钾_1 天前
机器学习-L1正则化和L2正则化解决过拟合问题
人工智能·python·机器学习
天天睡大觉1 天前
Python学习11
网络·python·学习
智航GIS1 天前
11.11 Pandas性能革命:向量化操作与内存优化实战指南
python·pandas
geneculture1 天前
融智学形式本体论:一种基于子全域与超子域的统一认知架构
大数据·人工智能·哲学与科学统一性·信息融智学·融智时代(杂志)