Python - 情感分析
语义分析是关于分析受众的普遍看法。 它可能是对一条新闻、电影或任何关于正在讨论的问题的推文的反应。 通常,此类反应是从社交媒体中获取的,并合并到一个文件中,以便通过 NLP 进行分析。我们将以一个简单的案例为例,首先定义正面和负面的词。 然后采用一种方法将这些词作为句子的一部分使用这些词进行分析。 我们使用 nltk 的 sentiment_analyzer 模块。我们首先对一个词进行分析,然后对成对的词(也称为双字母词)进行分析。 最后,我们用 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']