句子的情感分析 - 正面,负面和中立

时间:2015-12-09 23:16:54

标签: python-3.x nltk sentiment-analysis

我正在使用NLTK在Python中设计文本分类器。每个句子中考虑的一个特征是它的情绪。我想用没有任何情绪(中性句子)的正面或负面情绪来判断句子。使用电影评论语料库和朴素贝叶斯分类器仅产生正面和负面标签。我尝试在nltk.sentiment.utils中使用demo_liu_hu_lexicon,但该函数不返回任何值,而是将其打印到输出并且非常慢。有没有人知道一个图书馆根据情绪对句子赋予某种权重?

谢谢!

2 个答案:

答案 0 :(得分:4)

试试textblob module

from textblob import TextBlob
text = '''
These laptops are horrible but I've seen worse. How about lunch today? The food was okay.
'''

blob = TextBlob(text)
for sentence in blob.sentences:
    print(sentence.sentiment.polarity)
# -0.7
# 0.0
# 0.5

它使用nltk库来确定极性 - 这是一个浮动度量,范围从-1到1的情绪。中性句子的极性为零。您应该可以直接从nltk获得相同的度量。

答案 1 :(得分:1)

Vader是基于规则的情感分析工具,适用于社交媒体文本以及常规文本。

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyser = SentimentIntensityAnalyzer()

def print_sentiment_scores(tweets):
    vadersenti = analyser.polarity_scores(tweets)
    return pd.Series([vadersenti['pos'], vadersenti['neg'], vadersenti['neu'], vadersenti['compound']])

text = 'This goes beyond party lines.  Separating families betrays our values as Texans, Americans and fellow human beings'

print_sentiment_scores(text)

The results are:
0    0.2470
1    0.0000
2    0.7530
3    0.5067

通过将词典中每个单词的化合价总和求出,并根据规则进行调整,然后归一化为-1(最极端为负)和+1(最极端为正)之间,来计算复合得分。如果您想要给定句子的情感的单维测量,这是最有用的度量。称其为“标准化加权综合得分”是准确的

尽管积极情绪是通过复合分数> = 0.05得出的,但我们始终可以通过更改这些分数来确定句子的正面,负面和中立性

我个人发现Vader Sentiment能够很好地根据情感,特殊字符和表情符号来识别情感。