Python - Stimmungsanalyse
Bei der semantischen Analyse geht es darum, die allgemeine Meinung des Publikums zu analysieren. Es kann eine Reaktion auf eine Nachricht, einen Film oder einen Tweet über eine diskutierte Angelegenheit sein. Im Allgemeinen werden solche Reaktionen aus sozialen Medien entnommen und in eine Datei eingebettet, die über NLP analysiert werden soll. Wir werden zunächst einfach positive und negative Wörter definieren. Nehmen Sie dann einen Ansatz, um diese Wörter als Teil von Sätzen mit diesen Wörtern zu analysieren. Wir verwenden das sentiment_analyzer-Modul von nltk. Wir führen die Analyse zuerst mit einem Wort und dann mit gepaarten Wörtern durch, die auch Bigrams genannt werden. Schließlich markieren wir die Wörter mit negativer Stimmung, wie in der Definition definiertmark_negation Funktion.
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()
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe -
** 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']