Python による自然言語処理の例: 感情分析
人工知能の発展に伴い、自然言語処理 (NLP) はさまざまな分野でますます注目を集めています。中でも感情分析は NLP 応用の重要な方向性です。センチメント分析を使用すると、製品、サービス、イベントに対するユーザーの感情的傾向を分析でき、企業が消費者のニーズをより深く理解し、マーケティング戦略の策定を促進するのに役立ちます。この記事ではPythonで感情分析を行った例を紹介します。
Python で感情分析を実行するには、サードパーティ ライブラリの Natural Language Toolkit (NLTK) と TwitterAPI を使用する必要があります。 pip を使用して、次の 2 つのライブラリをインストールできます。
pip install nltk pip install TwitterAPI
センチメント分析を実行する前に、テキストを前処理する必要があります。テキストを一律に小文字に変換し、句読点、数字、ストップワードなどの無関係な情報を削除できます。前処理コードは次のとおりです。
import re from nltk.corpus import stopwords def clean_text(text): text = text.lower() # 将文本转换成小写字母 text = re.sub(r'[^ws]', '', text) # 去除标点符号 text = re.sub(r'd+', '', text) # 去除数字 stop_words = set(stopwords.words('english')) words = text.split() words = [w for w in words if w not in stop_words] # 去除停用词 text = ' '.join(words) return text
次に、感情分析モデルを構築する必要があります。感情分析は教師あり学習であるため (つまり、ラベル付きデータが必要です)、モデルの構築にはラベル付きトレーニング データが必要です。ここでは、NLTK の映画レビュー データセットが使用されています。このデータセットには、肯定的または否定的な感情的傾向を持つ 1000 件のレビューが含まれています。これらのコメントにはフラグが付けられています。
import nltk from nltk.corpus import movie_reviews import random documents = [(list(movie_reviews.words(fileid)), category) for category in movie_reviews.categories() for fileid in movie_reviews.fileids(category)] random.shuffle(documents)
トレーニング データを取得した後、nltk の NaiveBayesClassifier を使用して単純ベイズ分類器を構築できます。コードは次のとおりです。
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words()) word_features = list(all_words.keys())[:2000] def document_features(document): document_words = set(document) features = {} for word in word_features: features['contains({})'.format(word)] = (word in document_words) return features featuresets = [(document_features(d), c) for (d,c) in documents] train_set, test_set = featuresets[200:], featuresets[:200] classifier = nltk.NaiveBayesClassifier.train(train_set)
この分類器はナイーブ ベイズ アルゴリズムに基づいており、分類にトレーニング データの特性を使用します。この例では、語形を特徴付ける「contains (word)」関数が使用されています。この関数は、文書に単語が含まれているかどうかをチェックします。
モデルの確立が完了したら、それを使用して感情分析を実行できます。この例では、Twitter API を使用して Twitter からツイートを取得し、そのツイートに対してセンチメント分析を実行します。
from TwitterAPI import TwitterAPI import json consumer_key = 'your consumer key' consumer_secret = 'your consumer secret' access_token_key = 'your access token key' access_token_secret = 'your access token secret' api = TwitterAPI(consumer_key, consumer_secret, access_token_key, access_token_secret) def analyze_tweet(tweet): tweet_text = tweet['text'] tweet_clean = clean_text(tweet_text) tweet_features = document_features(tweet_clean.split()) sentiment = classifier.classify(tweet_features) return sentiment keywords = 'Trump' for tweet in api.request('search/tweets', {'q': keywords, 'lang': 'en', 'count': 10}): sentiment = analyze_tweet(tweet) print(tweet['text']) print(sentiment) print(' ')
このコード スニペットは TwitterAPI を使用して、キーワード「トランプ」を含む最新の 10 件のツイートを取得します。そして、各ツイートに対して感情分析を行い、感情傾向を出力します。
Twitter に加えて、このモデルは他のテキスト データの感情分析にも使用できます。
結論
この記事では、Python での感情分析の例を紹介します。この例では、トレーニングされたナイーブ ベイズ分類器を使用してテキストを分類し、テキストの感情的傾向を判断するために使用できます。感情分析は、マーケティングやソーシャル メディアの監視などの分野で広く使用できます。
以上がPython での自然言語処理の例: 感情分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。