
24
|
第
1
章
NLTK 和 spaCy 的停用词列表都包含“I”和“don
’
t”(“do not”也一样)。
如果你删除这两个停用词,那么就只剩下“like ice cream.”。这种预处理会对
情感分析造成严重的影响。本节后面介绍的 TF-IDF 加权会自动降低频繁出现
的单词的权重,但依然会将这些词条保留在词汇表中。
另外,我们可以将
80%
以上的文档中出现的单词视为停用词,这些单词可以作为固
定停用词列表的补充,也可以代替停用词列表。这些常见词会导致区分内容的难度
加大。向量化器
scikit-learn
的参数
max_df
可以做这样的处理,详情请参见第
5
章
的介绍。还有一种方法是根据单词的类型(词性)进行过滤。我们将在第
4
章中详
细解释这个概念。
1.5.3
通过一行代码处理流水线
我们再来看一看包含语料库文档的数据框。我们想新建一个名叫
tokens
的列,其中
包含分词后的小写文本,而且每个文档都没有停用词。为此,我们来进一步扩展处
理流水线。在这个例子中,我们将所有文本转换成小写,然后进行分词,最后再删
除停用词。我们只需简单地扩展流水线即可添加其他操作:
pipeline = [str.lower, tokenize, remove_stop]
def prepare(text, pipeline):
tokens = text
for transform in pipeline:
tokens = transform(tokens)
return tokens
如果我们将上述所有代码放到一个函数中,就会非常适合 ...