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

重新运行后

更加合理。

相关推荐
SunnyDays101142 分钟前
Python 轻松实现替换或修改 PDF 文字
python·替换pdf文字·修改pdf·修改pdf文字
Just_Paranoid1 小时前
【Settings】恢复出厂设置密码校验
android·python·settings·sha256·hmac-sha256
西猫雷婶3 小时前
pytorch基本运算-Python控制流梯度运算
人工智能·pytorch·python·深度学习·神经网络·机器学习
子午3 小时前
Python的uv包管理工具使用
开发语言·python·uv
java1234_小锋3 小时前
Scikit-learn Python机器学习 - 分类算法 - 朴素贝叶斯
python·机器学习·scikit-learn
凡梦千华3 小时前
Django时区感知
后端·python·django
程序猿 小项目大搞头4 小时前
即梦批量生成图片软件使用运营大管家-即梦图片批量生成器
python
dpxiaolong4 小时前
RK3588 Android12默认移除导航栏
开发语言·python
max5006005 小时前
基于多元线性回归、随机森林与神经网络的农作物元素含量预测及SHAP贡献量分析
人工智能·python·深度学习·神经网络·随机森林·线性回归·transformer
Pocker_Spades_A5 小时前
Python快速入门专业版(二十九):函数返回值:多返回值、None与函数嵌套调用
服务器·开发语言·python