我只是对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')]
以及通过删除停止单词的处理。
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))
输出的一部分是:
(['i', 'looking', 'forward', 'concert'], 'negative')
我正在努力理解为什么停止单词包括"不",这会影响推文的情感。
我的理解是,停止单词在情感方面没有价值。
那么,我的问题是为什么"不"列表中包含"不"?
句子中的停止字是"通常"或没有用的"通常"。正如斯坦福NLP集团所说的:
有时,在帮助选择与用户需求的文档相匹配的文档中似乎几乎没有价值的一些非常常见的单词被完全排除在词汇范围之外。这些单词称为停止单词
为什么"不"一词?:仅仅是因为它经常出现在英语词汇中,并且"通常"很少或没有重要性,例如,如果您正在执行这些停止词几乎没有或没有用的文本摘要,并且这全部由频率分布确定单词(例如tf-idf
。
那你能做什么?好吧,这是一个非常广泛的话题,称为否定处理。这是一个非常广阔的领域,具有许多不同的方法。我最喜欢的一个是在删除停止字或计算词向量之前简单地附加或成功的否定子句。例如,您可以将not looking
转换为not_looking
,然后在计算并转换为向量空间时会大不相同。您可以在此处找到类似的代码来做类似的事情。
我希望这会有所帮助!