首页 文章

句子的情感分析 - 积极,消极和中立

提问于
浏览
2

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

谢谢!

2 回答

  • 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获得相同的度量 .

  • 0

    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很好地根据情绪,特殊角色和表情符号来判断出情绪 .

相关问题