使用NLTK找出否定副词

时间:2016-10-25 20:06:31

标签: python nltk sentiment-analysis

由于形容词和动词能够使用负前缀传达负面情绪,我需要从数百万句话中找出这些短语。例如"我不擅长这个。"即使"好"是一个积极的词。

我正在使用nltk标记所有句子。但是,我如何能够过滤掉负前缀?大多数否定前缀如no,not被标记为副词" RB"。这是否意味着我可以使用所有标记的副词作为否定前缀?而且我的数据也很庞大,这让我很难想出一个负前缀列表。

1 个答案:

答案 0 :(得分:1)

NLTK有一个result的API,但这可能无法帮助您完成任务。 Sentiwordnet带来了扭结。 E.g。

sentiwordnet

还有NLTK VADER algorithm中的http://www.nltk.org/howto/sentiment.html

>>> from nltk.corpus import sentiwordnet as swn
# Kind of useful.
>>> swn.senti_synsets('happy', 'a')
[SentiSynset('happy.a.01'), SentiSynset('felicitous.s.02'), SentiSynset('glad.s.02'), SentiSynset('happy.s.04')]
>>> swn.senti_synsets('happy', 'a')[0].synset.definition()
u'enjoying or showing or marked by joy or pleasure'
>>> swn.senti_synsets('happy', 'a')[0].pos_score()
0.875
>>> swn.senti_synsets('happy', 'a')[0].neg_score()
0.0
>>> swn.senti_synsets('happy', 'a')[0].obj_score()
0.125

# Not very useful...
>>> swn.senti_synsets('slow', 'a')
>>> swn.senti_synsets('slow', 'a')[0].synset.definition()
u'not moving quickly; taking a comparatively long time'
>>> swn.senti_synsets('slow', 'a')[0].pos_score()
0.0
>>> swn.senti_synsets('slow', 'a')[0].neg_score()
0.0
>>> swn.senti_synsets('slow', 'a')[0].obj_score()
1.0