我正在使用NLTK在Python中设计文本分类器 . 每个句子中考虑的一个特征是它的情绪 . 我想用没有任何情绪的那些(中性句子)来判断具有正面或负面情绪的句子 . 使用电影评论语料库和朴素贝叶斯分类器仅产生正面和负面标签 . 我尝试在nltk.sentiment.utils中使用demo_liu_hu_lexicon,但该函数不返回任何值,而是将其打印到输出并且非常慢 . 有没有人知道一个图书馆根据情绪对句子赋予某种权重?
谢谢!
试试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获得相同的度量 .
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很好地根据情绪,特殊角色和表情符号来判断出情绪 .
2 回答
试试textblob module:
它使用nltk库来确定极性 - 这是一个浮动度量,范围从-1到1的情绪 . 中性句子的极性为零 . 您应该能够直接从nltk获得相同的度量 .
Vader是一种基于规则的情感分析工具,适用于社交媒体文本以及常规文本 .
通过对词典中每个单词的价数分数求和,根据规则进行调整,然后归一化为-1(最极端负数)和1(最极端正数)来计算复合分数 . 如果您想要对给定句子进行单一的一维度量度量,这是最有用的指标 . 将其称为“标准化,加权综合得分”是准确的
虽然积极情绪来自复合得分> = 0.05,但我们总是可以选择通过改变这些得分来确定句子的正面,负面和中立性 .
我个人觉得Vader Sentiment很好地根据情绪,特殊角色和表情符号来判断出情绪 .