Python 自然语言处理停用词

And*_*aly 5 python text analysis nltk

我只是在用 Python 对 NLP 进行一些研究,我发现了一些奇怪的东西。

关于以下负面推文的审查:

neg_tweets = [('I do not like this car', 'negative'),
          ('This view is horrible', 'negative'),
          ('I feel tired this morning', 'negative'),
          ('I am not looking forward to the concert', 'negative'),<---
          ('He is my enemy', 'negative')]
Run Code Online (Sandbox Code Playgroud)

并通过删除停用词进行一些处理。

clean_data = []
stop_words = set(stopwords.words("english"))

for (words, sentiment) in pos_tweets + neg_tweets:
words_filtered = [e.lower() for e in words.split() if e not in stop_words]
clean_data.append((words_filtered, sentiment))
Run Code Online (Sandbox Code Playgroud)

部分输出是:

 (['i', 'looking', 'forward', 'concert'], 'negative')
Run Code Online (Sandbox Code Playgroud)

我正在努力理解为什么停用词包括“不”,这会影响推文的情绪。

我的理解是停用词在情感方面没有价值。

所以,我的问题是为什么“不”包含在停用词列表中?

Rud*_*hal 5

句子中的停用词“通常”几乎没有用处或没有用处。正如斯坦福 NLP 小组所说:

有时,一些极其常见的单词在帮助选择符合用户需求的文档方面似乎没有什么价值,却被完全排除在词汇表之外。这些词称为停用词

为什么要用“不”字呢?:仅仅因为它在英语词汇中出现得非常频繁,并且“通常”很少或根本不重要,例如,如果您正在做文本摘要,其中这些停用词几乎没有用处,并且完全由以下内容的频率分布决定:这样的词tf-idf

所以,你可以做什么?嗯,这是一个非常广泛的主题,称为否定处理。这是一个非常广泛的领域,有许多不同的方法。我最喜欢的方法之一是在删除停用词或计算词向量之前简单地附加前面或后面的否定子句。例如,您可以转换not lookingnot_looking,当计算和转换为向量空间时将有很大不同。您可以在此处的SO 答案中找到执行类似操作的代码。

我希望这有帮助!