概述
-
了解如何在Python中删除停用词与文本标准化,这些是自然语言处理的基本技术
-
探索不同的方法来删除停用词,以及讨论文本标准化技术,如词干化(stemming)和词形还原(lemmatization)
-
在Python中使用NLTK,spaCy和Gensim库进行去除停用词和文本标准化
介绍
多样化的自然语言处理(NLP)是真的很棒,我们以前从未想象过的事情现在只是几行代码就可做到。这真的令人开心。
但使用文本数据会带来一系列挑战。机器在处理原始文本方面有着较大的困难。在使用NLP技术处理文本数据之前,我们需要执行一些称为预处理的步骤。
错过了这些步骤,我们会得到一个不好的模型。这些是你需要在代码,框架和项目中加入的基本NLP技术。
我们将讨论如何使用一些非常流行的NLP库(NLTK,spaCy,Gensim和TextBlob)删除停用词并在Python中执行文本标准化。
目录
-
什么是停用词?
-
为什么我们需要删除停用词?
-
我们何时应该删除停用词?
-
删除停用词的不同方法
-
使用NLTK
-
使用spaCy
-
使用Gensim
-
文本标准化简介
-
什么是词干化和词形还原?
-
执行词干化和词形还原的方法
-
使用NLTK
-
使用spaCy
-
使用TextBlob
什么是停用词?
在任何自然语言中停用词是最常用的词。为了分析文本数据和构建NLP模型,这些停用词可能对构成文档的意义没有太多价值。
通常,英语文本中使用的最常用词是"the","is","in","for","where","when","to","at"等。
考虑这个文本,"There is a pen on the table"。现在,单词"is","a","on"和"the"在解析它时对语句没有任何意义。而像"there","book"和"table"这样的词是关键词,并告诉我们这句话是什么意思。
一般来说在去除停用词之前要执行分词操作。
以下是一份停用词列表,可能对你有用
a about after all also always am an and any are at be been being but by came can cant come
为什么我们需要删除停用词?
这是一个你必须考虑到的非常重要的问题
在NLP中删除停用词并不是一项严格的规则。这取决于我们正在进行的任务。对于文本分类等(将文本分类为不同的类别)任务,从给定文本中删除或排除停用词,可以更多地关注定义文本含义的词。
正如我们在上一节中看到的那样,单词there,book要比单词is,on来得更加有意义。
但是,在机器翻译和文本摘要等任务中,却不建议删除停用词。
以下是删除停用词的几个主要好处:
-
在删除停用词时,数据集大小减小,训练模型的时间也减少
-
删除停用词可能有助于提高性能,因为只剩下更少且唯一有意义的词。因此,它可以提高分类准确性
-
甚至像Google这样的搜索引擎也会删除停用词,以便从数据库中快速地检索数据
我们什么时候应该删除停用词?
我把它归纳为两个部分:删除停用词的情况以及当我们避免删除停用词的情况。
删除停用词
我们可以在执行以下任务时删除停用词:
-
文本分类
-
垃圾邮件过滤
-
语言分类
-
体裁(Genre)分类
-
标题生成
-
自动标记(Auto-Tag)生成
避免删除停用词
-
机器翻译
-
语言建模
-
文本摘要
-
问答(QA)系统
删除停用词的不同方法
1.使用NLTK删除停用词
NLTK是文本预处理的自然语言工具包。这是我最喜欢的Python库之一。NLTK有16种不同语言的停用词列表。
你可以使用以下代码查看NLTK中的停用词列表:
import nltk
from nltk.corpus import stopwords
set(stopwords.words('english'))
现在,要使用NLTK删除停用词,你可以使用以下代码块
# 下面的代码是使用nltk从句子中去除停用词
# 导入包
import nltk
from nltk.corpus i