目录
一、引言
1、什么是停用词?
停用词(Stop words)是指在文本分析或信息检索任务中,被认为对文本含义贡献较少或无实际意义的常见词语。这些词语通常是高频的、在文本中出现频率较高的普通词汇,例如英语中的"a", "an", "the", "is", "and"等。
停用词通常会被在文本预处理阶段被去除,因为它们通常不携带特定的语义信息,而仅代表着语言的结构和语法规则。通过去除停用词,可以减少文本数据的维度,降低噪音和冗余信息,从而更好地聚焦于文本所包含的关键信息。
在自然语言处理和文本挖掘任务中,去除停用词可以带来以下几个好处:
-
减少数据噪音:停用词通常是高频词汇,去除它们可以过滤掉文本中出现频率高、但携带较少信息的词汇,从而减少噪音干扰。
-
提高计算效率:去除停用词可以减少处理的文本数量,降低后续算法和模型的计算复杂度,加快处理速度。
-
改善模型性能:对于某些任务(如文本分类),停用词可能不包含对类别鉴别有用的信息,去除它们可以提高模型的性能。
停用词表是由人工事先定义的一个词表,其中包含了需要被过滤掉的停用词。在文本处理过程中,可以使用停用词表对文本进行匹配,并将匹配到的停用词从文本中删除。不同的任务和语言可能需要不同的停用词表,在特定应用中,可以根据需求自定义停用词表,也可以使用现有的通用停用词表库。
2、所需库
import jieba#中文库
注:若无jieba库(第三方库),可以打开控制台使用指令
pip install jieba
二、python代码实现
1.定义要处理的中文文本:
text = "这是一个带有一些停用词的例句,我们想要将它们移除。"
2.使用jieba库中的lcut方法将文本分词:
words = jieba.lcut(text)
lcut
方法将文本进行分词,并将结果存储在列表中
3.导入中文停用词表:
stop_words = set()
with open('stopwords.txt', 'r', encoding='utf-8') as f:
for line in f:
stop_words.add(line.strip())
在这个例子中,假设你已经准备了一个名为stopwords.txt(里面有许多已经设置的停用词)
的文本文件,其中包含了中文停用词表。你可以根据自己的需求准备一个停用词表。
4.创建一个新的列表,其中只包含不在停用词表中的词语:
filtered_words = [word for word in words if word not in stop_words]
这将过滤掉文本中的停用词,并将不在停用词表中的词语存储在列表中
5.可以选择将过滤后的词语重新组合成文本,如果需要的话:
filtered_text = ' '.join(filtered_words)
现在,将包含去除停用词后的中文文本。filtered_text
请确保你已经准备了合适的停用词表,并将其保存在文件中。stopwords.txt
6、完整代码
import jieba
# 定义要处理的中文文本
text = "这是一个带有一些停用词的例句,我们想要将它们移除。"
# 使用jieba库的lcut方法进行分词
words = jieba.lcut(text)
# 导入中文停用词表
stop_words = set()
with open('stopwords.txt', 'r', encoding='utf-8') as f:
for line in f:
stop_words.add(line.strip())
# 创建一个新的列表,其中只包含不在停用词表中的词语
filtered_words = [word for word in words if word not in stop_words]
# 可以选择将过滤后的词语重新组合成文本
filtered_text = ' '.join(filtered_words)
print(filtered_text)
三、总结
读入-->分词-->导入停词表-->过滤-->输出