Python - analiza nastrojów

Analiza semantyczna polega na analizie ogólnej opinii odbiorców. Może to być reakcja na wiadomość, film lub dowolny tweet dotyczący omawianej sprawy. Zazwyczaj takie reakcje są pobierane z mediów społecznościowych i umieszczane w pliku, który ma być analizowany przez NLP. Najpierw zajmiemy się prostym przypadkiem definiowania słów pozytywnych i negatywnych. Następnie podejmij próbę przeanalizowania tych słów jako części zdań wykorzystujących te słowa. Używamy modułu sentiment_analyzer firmy nltk. Najpierw przeprowadzamy analizę jednym słowem, a następnie parami, zwanymi również bigramami. Na koniec oznaczamy słowa negatywnym sentymentem, zgodnie z definicją zawartą wmark_negation funkcjonować.

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()

Po uruchomieniu powyższego programu otrzymujemy następujące dane wyjściowe -

** 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']