游乐游手机版
首页/AI热点日报/热点详情

NLP中停用词怎么获取?6种实用方法全攻略整理

类型:热点整理2026-07-04
自然语言处理(NLP)中,如何让机器从海量文本里精准捕捉关键信息?一个看似微小却至关重要的步骤,就是停用词处理。不少人认为这不过是筛掉“的、了、是”这类词,但在实际应用中,它直接影响高频词提取的效果、词云图的展示质量乃至整个分析结果的可靠性。本文将从实战角度出发,分享停用词的处理技巧,以及如何快速获

自然语言处理(NLP)中,如何让机器从海量文本里精准捕捉关键信息?一个看似微小却至关重要的步骤,就是停用词处理。不少人认为这不过是筛掉“的、了、是”这类词,但在实际应用中,它直接影响高频词提取的效果、词云图的展示质量乃至整个分析结果的可靠性。本文将从实战角度出发,分享停用词的处理技巧,以及如何快速获取高质量的停用词库。

一、停用词概述

所谓停用词(stopwords),指的是在文本中频繁出现但携带的实际语义较少的词语。它们通常是功能词、虚词,甚至包括标点符号——中文里的“的”“是”“和”“了”“。”,英文里的“the”“is”“and”“...”等。这些词在句子结构中必不可少,但在文本分析时却容易成为噪声:它们会分散统计权重,导致算法将注意力浪费在无意义的词上。通过过滤停用词,既能降低数据复杂度、提升处理效率,也能让分析结果更聚焦于真正的主题词,从而提升文本挖掘的准确度。

二、停用词的典型应用场景

2.1 高频词提取

使用jieba.analyse提取高频词时,可以事先将停用词写入文本文件(例如stopwords.txt),然后通过一行代码挂载:

jieba.analyse.set_stop_words('stopwords.txt')

这样一来,“的、了、在”这类词就不会出现在高频词列表中,结果会显得更加干净、聚焦。

2.2 词云图生成

用wordcloud制作词云图时,停用词的作用同样显著。WordCloud对象提供了stopwords参数,只需传入需要屏蔽的词即可。不过在实际操作中,通常需要反复迭代——先加入一批停用词,观察效果,再补充一批,直到词云图真正凸显出有意义的主题词。

▲ 图1:加入停用词后的「淄博烧烤」词云图

▲ 图2:未加入停用词的「淄博烧烤」词云图

对比两图,效果一目了然:图2中混杂了大量“一个”“这个”“就是”“什么”等干扰词,严重影响了主题词的呈现;图1经过停用词过滤后,“淄博烧烤”“美食”“推荐”等核心词变得清晰突出。因此,停用词在文本可视化任务中绝非可有可无的环节,而是决定分析质量的关键步骤。

三、停用词的获取方法

3.1 自定义停用词表

学术界和工业界已公开了不少成熟的停用词表,例如中文停用词表、哈工大停用词表、百度停用词表、四川大学机器智能实验室停用词库等。直接选用现成词表,远比从头构建更高效。

以哈工大停用词表为例,读取代码十分简洁:

# 读取停用词(哈工大通用停用词表)
with open('hit_stopwords.txt', 'r') as f:
    stopwords_list = f.readlines()
stopwords_list = [i.strip() for i in stopwords_list]

print('停用词数量:', len(stopwords_list))
print('停用词列表:')
print(stopwords_list)

▲ 自定义停用词表展示

可见,这份中文停用词表覆盖相当全面,共包含767个词。常用的虚词、代词、介词基本都已囊括在内。

(此处删除原文中的公众号推广信息)

3.2 使用wordcloud调用停用词

wordcloud库自带了英文停用词库,通过STOPWORDS变量即可直接引用:

from wordcloud import STOPWORDS

print('停用词数量:', len(STOPWORDS))
print('停用词列表:')
print(STOPWORDS)

▲ 使用wordcloud调用停用词

wordcloud内置了192个常用英文停用词,在绘制英文词云时基本够用。

3.3 使用nltk调用停用词

nltk(Natural Language Toolkit)是NLP领域的老牌工具库,内置了多种语言的停用词表,支持直接下载使用。

3.3.1 nltk中文停用词

import nltk
from nltk.corpus import stopwords

nltk.download('stopwords')
stopwords_cn_list = stopwords.words('chinese')

print('中文停用词数量:', len(stopwords_cn_list))
print('中文停用词:\n', stopwords_cn_list)

▲ nltk中文停用词展示

结果:共841个中文停用词,比哈工大词表更多,覆盖面更广。

3.3.2 nltk英文停用词

import nltk
from nltk.corpus import stopwords

nltk.download('stopwords')
stopwords_en_list = stopwords.words('english')

print('英文停用词数量:', len(stopwords_en_list))
print('英文停用词:\n', stopwords_en_list)

▲ nltk英文停用词展示

nltk英文停用词共179个,虽然比wordcloud略少,但常见的a、an、the、is等均已包含。

3.4 使用sklearn调用停用词

sklearn主要用于机器学习,但其feature_extraction.text模块也内置了英文停用词表:

from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS

print('停用词数量:', len(ENGLISH_STOP_WORDS))
print('停用词列表:')
print(list(ENGLISH_STOP_WORDS))

▲ sklearn调用停用词展示

sklearn共提供318个英文停用词,比nltk版本更加丰富。

3.5 使用gensim调用停用词

gensim常用于主题建模和文本预处理,其parsing.preprocessing模块也内置了停用词表:

from gensim.parsing.preprocessing import STOPWORDS

print('停用词数量:', len(STOPWORDS))
print('停用词列表:')
print(list(STOPWORDS))

▲ gensim调用停用词展示

gensim共包含337个英文停用词,适合在主题模型等任务中直接使用。

3.6 使用spacy调用停用词

spacy是一款高性能NLP库,其语言模型内置了停用词集,可通过nlp.Defaults.stop_words获取:

import spacy

nlp = spacy.load("en_core_web_sm")
stopwords = nlp.Defaults.stop_words

print('停用词数量:', len(stopwords))
print('停用词列表:')
print(list(stopwords))

▲ spacy调用停用词展示

spacy共包含326个英文停用词,与sklearn数量接近,但具体词表略有差异。

以上列出的6种停用词获取方法,覆盖了中文与英文两种场景。在实际项目中,可以先用这些现成词表作为基础,再根据业务数据手动补充专属停用词——例如,某些领域的专有名词若成为干扰项,也应当加入停用词列表。经过多轮迭代后,文本分析的质量将显著提升。

来源:https://www.53ai.com/news/RAG/2025031865821.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。