我正在使用NLTK在Python中设计一个文本分类器。每句话考虑的一个特征就是它的情感。我想要对具有积极或消极情绪的句子进行加权,而不是那些没有任何情绪的句子(中性句子)。使用电影评论语料库和朴素贝叶斯分类器只会产生正面和负面的标签。我尝试在nltk.sentiment.utils中使用demo_liu_hu_lexicon,但该函数不返回任何值,而是将其打印到输出,而且速度非常慢。有没有人知道有一个基于情感给句子赋予某种权重的库?
谢谢!
发布于 2016-02-11 06:33:06
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获得相同的度量。
发布于 2018-07-13 00:08:44
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得出的,但我们始终可以通过更改这些分数来确定句子的积极、消极和中立
我个人认为维达的情绪能够很好地理解基于情绪,特殊字符,表情符号的情绪。
https://stackoverflow.com/questions/34190860
复制相似问题