Python情感分析
语义分析指分析受众的一般观点。这可能是对一条新闻、电影或任何有关讨论主题的推文的反应。通常,这些反应是从社交媒体中获取并合并到文件中通过NLP进行分析的。我们首先需要定义积极和消极的单词,然后采取一种方法来分析这些单词作为句子的一部分。我们使用nltk中的sentiment_analyzer模块。我们首先使用一个词执行分析,然后使用成对的单词(也称为bigrams)进行分析。最后,我们使用mark_negation函数将带有消极情感的单词标记出来。
import nltk
import nltk.sentiment.sentiment_analyzer
# 分析单个单词
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)
# 分析一对单词
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
# 分析否定词
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']