Pythonを使った感情分析(Sentiment Analysis)のFlair

Pythonを使った感情分析のFlair

感情分析シリーズの次のブログ投稿へようこそ!今日は、Pythonライブラリの感情分析に使用される方法の1つであるFlairを探求します。

Photo by Brian Lundquist on Unsplash

収集したTwitterデータを使用して、映画「Extraction 2」の感情分析が行われました。このリンクからデータをkaggle.comでダウンロードすることができます。Twitterからデータを抽出し、前処理、TextBlobを使用した感情分析、Vaderを使用した感情分析を含む、感情分析シリーズの完全なリストをこのリンクで見つけることができます。

感情分析におけるFlair:強力なNLPライブラリ

Flairは、感情分析のタスクに焦点を当てたZalando Research [1]によって開発されたNLPライブラリです。これは、テキスト内の各単語またはトークンに対して感情ラベルを予測するためのモデルを訓練するために、シーケンスラベリングというディープラーニングの手法を使用しています [2]。これにより、モデルは文やドキュメント内の個々の単語やフレーズによって表現される感情を捉えることができます。Flairは、多言語の事前学習済みモデル[3]を提供しており、大規模な初期トレーニングを必要とせずに利用することができます。さらに、ユニークなデータセットを使用して事前学習済みモデルを微調整することも可能です。

Flairの主な利点は、複雑で混乱したテキストで伝えられる気分をより完全に理解するために、近くの単語や文の構造を考慮して文脈情報を抽出する能力です[2]。Flairを使用して入力の感情を予測するためには、テキストデータを事前処理する必要があります。ユーザーフレンドリーで直感的なAPIにより、感情分析機能をNLPアプリケーションに統合することが容易になります。Flairは、ソーシャルメディアモニタリング、顧客フィードバック分析、意見マイニングなど、さまざまなアプリケーションに正確な感情分析モデルを作成するための学者や開発者にとって有効なツールです[2]。

注意:Flairをインストールするには、pip install flairを使用できます。

classifier = TextClassifier.load('en-sentiment')for index, row in df.iterrows():    text = row['tokens']      sentence = Sentence(text)    classifier.predict(sentence)    sentiment = sentence.labels[0].value    score = sentence.labels[0].score    df.loc[index, 'sentiment'] = sentiment    df.loc[index, 'score'] = scoreprint(df.head())

以下は、Flairを使用した感情分析に使用される主なコードスニペットです。

# 事前学習済みの感情分析モデルをロードするclassifier = TextClassifier.load('en-sentiment')# DataFrameの各行に対して繰り返し処理を行う # :( 時間がかかります :(for index, row in df.iterrows():    text = row['tokens']      sentence = Sentence(text)        # 現在の文の感情を予測する    classifier.predict(sentence)        # 予測された感情とスコアを取得する    sentiment = sentence.labels[0].value    score = sentence.labels[0].score        # DataFrameを感情とスコアで更新する    df.loc[index, 'sentiment'] = sentiment    df.loc[index, 'score'] = score# DataFrameの'sentiment'列を表示するprint(df['sentiment'])

このコードサンプルは、Flairパッケージを使用してDataFrameに感情を分類します。DataFrameの各エントリは、既にトレーニングされた感情分析モデルを使用して処理されます。分類器は、各テキストの感情とスコアの予測を決定するために使用されます。予測された感情とスコアは、DataFrameに追加されます。

上記のコードは、2つの新しい列を追加しました。

Image source: From the author.

可視化

次に、matplotlibライブラリをpltとしてインポートします。コードは、DataFrameの「sentiment」列の各感情カテゴリの出現回数を数え、その数をsentiment_counts変数に格納します。そして、棒グラフが作成されます。

import matplotlib.pyplot as plt# 各感情ラベルの出現回数を数えるsentiment_counts = df['sentiment'].value_counts()# 円グラフをプロットするplt.pie(sentiment_counts.values, labels=sentiment_counts.index, autopct='%1.1f%%')plt.title('感情分析結果')plt.show()# 各感情のカウント数を表示するfor sentiment, count in sentiment_counts.items():    print(f"{sentiment}: {count}")
画像の出典:著者から

結論

TwitterからスクラップしたExtraction 2の映画データを使って得られた感情分析の結果に基づき、以下の感情の数があります。

NEGATIVE(ネガティブ):6073

POSITIVE(ポジティブ):3926

ネガティブとポジティブの感情のみが含まれていることがわかります。興味深いことに、中立的な感情は無視されています。これには明らかな理由があります。Flairの事前学習済み感情分析モデルで使用される感情ラベルには通常、ポジティブとネガティブの感情が含まれていますが、中立的な感情は含まれていません。

中立的な感情ラベルを含むようにFlairの感情分析能力を拡張することができます。ただし、これには適切なデータセットの収集や注釈付け、および所望の感情分類タスクに特化したモデルのトレーニングが必要です。

上記の感情の数に基づくと、この映画はネガティブなフィードバックを受けたようですが、それは事前学習モデルに中立的な感情がないことが原因です。したがって、明確な分析を求める場合は、カスタムモデルを作成してさらなる分析を行うことが賢明です。

参考文献

[1] Zalando Research. (n.d.). Flair — a powerful NLP library. 参照元:https://github.com/zalandoresearch/flair

[2] Akbik, A., Blythe, D., & Vollgraf, R. (2018). Contextual String Embeddings for Sequence Labeling. 参照元:https://www.aclweb.org/anthology/C18-1139/

[3] Akbik, A., Bergmann, T., Blythe, D., Rasul, K., Schweter, S., Vollgraf, R., & Zalando SE. (2019). FLAIR: An Easy-to-Use Framework for State-of-the-Art NLP. 参照元:https://www.aclweb.org/anthology/N19-4010/

私のデータアナリストの道のりに参加するためにFOLLOW MEしてください。

プロジェクトの共同作業、知識共有、またはガイダンスについては、Twitterで繋がるか、[email protected]までメールでお問い合わせください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

「Adam Ross Nelsonによる自信のあるデータサイエンスについて」

データサイエンスの中で新たな分野が現れ、研究内容が理解しにくい場合は、専門家や先駆者と話すのが最善です最近、私たちは...

人工知能

「リオール・ハキム、Hour Oneの共同創設者兼CTO - インタビューシリーズ」

「Hour Oneの共同創設者兼最高技術責任者であるリオール・ハキムは、専門的なビデオコミュニケーションのためのバーチャルヒ...

人工知能

キャルレールの最高製品責任者、ライアン・ジョンソンへのインタビューシリーズ

ライアンは、初期のスタートアップからフォーチュン100の組織まで、多様なテクノロジーと製品開発のリーダーシップ経験を15年...

人工知能

スコット・スティーブンソン、スペルブックの共同創設者兼CEO- インタビューシリーズ

スコット・スティーブンソンは、Spellbookの共同創設者兼CEOであり、OpenAIのGPT-4および他の大規模な言語モデル(LLM)に基...

人工知能

「スノーケルAIのCEO兼共同創設者、アレックス・ラットナー - インタビューシリーズ」

アレックス・ラトナーは、スタンフォードAIラボを母体とする会社、Snorkel AIのCEO兼共同創設者ですSnorkel AIは、手作業のAI...

人工知能

「コーネリスネットワークスのソフトウェアエンジニアリング担当副社長、ダグ・フラーラー氏 - インタビューシリーズ」

ソフトウェアエンジニアリングの副社長として、DougはCornelis Networksのソフトウェアスタック全体、Omni-Path Architecture...