去停用词插图

去停用词,这个概念听起来可能有点专业,但其实意思很简单。想象一下,你写了一篇文章或者一段话,里面有很多“的”、“了”、“在”、“是”这样的词,它们对于句子的结构很重要,但在很多情况下,对于理解文章的主要意思或者进行文本分析时,这些词并不提供太多有用的信息。这些频繁出现但又对内容理解帮助不大的词,我们就叫它们“停用词”。

“去停用词”,顾名思义,就是把这些不太重要的词从文本中去掉的过程。这样做的好处是,可以让文本变得更加精简,同时让重要的、有实际意义的词汇更加突出,方便我们或者机器更好地理解和分析文本的主要内容。

举个例子,如果你有一段话:“我今天在公园里看到了一个红色的气球。” 去停用词后,可能会变成:“我今天公园看到红色气球。” 虽然句子变得不那么通顺了,但对于某些文本分析任务来说,这样处理后的文本可能更容易处理,因为去掉了那些对分析意义不大的词汇。

所以,简单来说,去停用词就像是给文本“瘦身”,去掉那些虽然常见但对理解内容帮助不大的词,让文本的重点更加突出。

去停用词插图1

 

使用NLTK去停用词

逐行分析

  1. import nltk:导入NLTK库。
  2. from nltk.corpus import stopwords:从NLTK库中导入停用词模块。
  3. from nltk.tokenize import word_tokenize:从NLTK库中导入分词函数。
  4. nltk.download('punkt') 和 nltk.download('stopwords'):下载分词器和停用词资源(这是第一次使用时需要做的)。
  5. text = "This is a sample sentence, showing off the stop words filtration.":定义示例文本。
  6. words = word_tokenize(text):使用word_tokenize函数将文本拆分成单词列表。
  7. stop_words = set(stopwords.words('english')):加载英文停用词列表,并将其转换为一个集合(set),以便快速查找。
  8. filtered_words = [word for word in words if word.lower() not in stop_words]:使用列表推导式去停用词。对于words列表中的每个单词,如果它(转换为小写后)不在stop_words集合中,则将其添加到filtered_words列表中。
  9. print(filtered_words):打印去停用词后的单词列表。

使用SpaCy去停用词

逐行分析

  1. import spacy:导入SpaCy库。
  2. nlp = spacy.load("en_core_web_sm"):加载英文模型(这里使用的是小型模型en_core_web_sm)。
  3. text = "This is a sample sentence, showing off the stop words filtration.":定义示例文本。
  4. doc = nlp(text):使用SpaCy模型处理文本,生成一个Doc对象。
  5. filtered_words = [token.text for token in doc if not token.is_stop]:使用列表推导式去停用词。对于doc中的每个token(即单词或标点符号等),如果它不是停用词(token.is_stopFalse),则将其文本(token.text)添加到filtered_words列表中。
  6. print(filtered_words):打印去停用词后的单词列表。

(仅供参考)