停用词究竟有何妙用:优化分词、精进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)

重新运行后

更加合理。

相关推荐
李日华大战鸡红9 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
KeyAction666610 小时前
AI改写战争规则,也在改写商业规则:体系对抗时代已经到来
大数据·人工智能
Qyr9910 小时前
2026年全球二极管模组行业市场规模全景研判:竞争格局与发展趋势全解析
大数据·人工智能
外收内放11 小时前
Python基础语法练习题(57-58)
开发语言·python
朝朝辞暮i12 小时前
VLA 系统学习第 3 课:从一次机器人示范,到真正送进神经网络的 Batch
人工智能·python·深度学习·神经网络·vla
小小小米粒12 小时前
重置本地git
大数据·git·elasticsearch
小鹿的周先生12 小时前
第11章-Structured-Output
开发语言·人工智能·python
梦想画家12 小时前
SQLMesh 告警落地实践:SQL 模型跑挂了,如何自动发邮件并推送自建业务系统
大数据·数据开发·sqlmesh
大大大大晴天12 小时前
每天认识一个组件:Apache Calcite
大数据
梦在远山后12 小时前
通过 WSS 让 Server 安全调用 Desktop 本地工具(下01):Ticket、人工确认、幂等与断线对账
python·langchain·agent