我目前正在开发一个项目,我想从文本中提取情感。由于我使用的是conceptnet5(一种语义网络),因此我不能简单地在包含否定词的句子中添加单词前缀,因为这些单词根本不会出现在conceptnet5 的API 中。
这是一个例子:
这部电影不太好。
因此,我认为我可以使用 wordnet 的引理功能来替换包含否定词(例如(not,...))的句子中的形容词。
在前面的示例中,算法将检测wasn't
并将其替换为was not
。
此外,它会检测否定词not
,并替换good
与它的反义词bad
。
该句子如下:
这部电影太糟糕了。
虽然我发现这不是最优雅的方式,而且在很多情况下它可能会产生错误的结果,但我仍然想以这种方式处理否定,因为坦率地说,我不知道有什么更好的方法。
考虑到我的问题:不幸的是,我没有找到任何库可以让我替换所有出现的附加否定词(wasn't
=> was not
)。
我的意思是我可以通过用正则表达式替换出现的事件来手动完成此操作,但那样我就会陷入英语语言的困境。
因此我想问你们中的一些人是否知道一个库、函数或更好的方法这可以帮助我。
目前我正在使用 pythonnltk
,仍然似乎它不包含这样的功能,但我可能是错的。
提前致谢 :)
类似的情况wasn't
可以通过标记化简单地解析(tokens = nltk.word_tokenize(sentence)
): wasn't
会变成was
and n't
.
但否定意义也可以由“准否定词,如几乎、勉强、很少”和“隐含否定词,如失败、阻止、不情愿、否认、缺席”形成,看看这张纸 http://www.academypublication.com/issues/past/tpls/vol03/07/17.pdf。更详细的分析可以在 Christopher Potts 的文章中找到。论否定的否定性 https://web.stanford.edu/~cgpotts/papers/potts-salt20-negation.pdf.
考虑到您最初的问题,据我所知,情感分析、大多数现代方法都不会明确处理否定;相反,他们使用高阶 n 元语法的监督方法。那些实际处理否定的人通常会在否定和标点符号之间的所有单词后面附加特殊的前缀 NOT_。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)