Python - Duygu Analizi

Anlamsal Analiz, izleyicinin genel görüşünü analiz etmekle ilgilidir. Bir habere, filme veya tartışılan bir konuyla ilgili herhangi bir tweet'e tepki olabilir. Genellikle bu tür reaksiyonlar sosyal medyadan alınır ve NLP aracılığıyla analiz edilmek üzere bir dosyaya sıkıştırılır. Önce olumlu ve olumsuz kelimeleri tanımlamanın basit bir örneğini ele alacağız. Ardından, bu kelimeleri kullanan cümlelerin bir parçası olarak bu kelimeleri analiz etmek için bir yaklaşım benimseyin. Nltk'den sentiment_analyzer modülünü kullanıyoruz. Analizi önce bir kelimeyle, ardından da bigrams olarak adlandırılan çiftli kelimelerle gerçekleştiriyoruz. Son olarak, aşağıdaki gibi olumsuz duygu içeren kelimeleri işaretliyoruz:mark_negation işlevi.

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

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -

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