Python - 情绪分析

  • 简述

    语义分析是关于分析观众的一般意见。它可能是对一条新闻、电影或任何关于正在讨论的问题的推文的反应。通常,此类反应取自社交媒体并合并成一个文件,以通过 NLP 进行分析。我们将首先以定义正面和负面词的简单案例为例。然后采取一种方法来分析这些词作为使用这些词的句子的一部分。我们使用来自 nltk 的情感分析器模块。我们首先用一个词进行分析,然后用配对词(也称为二元组)进行分析。最后,我们将带有负面情绪的词标记为mark_negation函数。
    
    import nltk
    import nltk.sentiment.sentiment_analyzer 
    # Analysing for single words
    def OneWord(): 
       positive_words = ['good', 'progress', 'luck']
          text = 'Hard Work brings progress and good luck.'.split()                 
       analysis = nltk.sentiment.util.extract_unigram_feats(text, positive_words) 
       print(' ** Sentiment with one word **\n')
       print(analysis) 
    # Analysing for a pair of words  
    def WithBigrams(): 
       word_sets = [('Regular', 'fit'), ('fit', 'fine')] 
       text = 'Regular excercise makes you fit and fine'.split() 
       analysis = nltk.sentiment.util.extract_bigram_feats(text, word_sets) 
       print('\n*** Sentiment with bigrams ***\n') 
       print analysis
    # Analysing the negation words. 
    def NegativeWord():
       text = 'Lack of good health can not bring success to students'.split() 
       analysis = nltk.sentiment.util.mark_negation(text) 
       print('\n**Sentiment with Negative words**\n')
       print(analysis) 
        
    OneWord()
    WithBigrams() 
    NegativeWord() 
    
    当我们运行上述程序时,我们得到以下输出 -
    
     ** Sentiment with one word **
    {'contains(luck)': False, 'contains(good)': True, 'contains(progress)': True}
    *** Sentiment with bigrams ***
    {'contains(fit - fine)': False, 'contains(Regular - fit)': False}
    **Sentiment with Negative words**
    ['Lack', 'of', 'good', 'health', 'can', 'not', 'bring_NEG', 'success_NEG', 'to_NEG', 'students_NEG']