Twitterでの感情分析を始める
'Twitter感情分析の開始'
センチメント分析は、テキストデータをその極性(ポジティブ、ネガティブ、ニュートラルなど)に基づいて自動的に分類するプロセスです。企業は、ツイートのセンチメント分析を活用して、顧客が自社製品やサービスについてどのように話しているかを把握し、ビジネスの意思決定に洞察を得ること、製品の問題や潜在的なPR危機を早期に特定することができます。
このガイドでは、Twitterでのセンチメント分析を始めるために必要なすべてをカバーします。コーダーと非コーダーの両方向けに、ステップバイステップのプロセスを共有します。コーダーの場合、Inference APIを使用してツイートのセンチメント分析を簡単なコード数行でスケールして行う方法を学びます。コーディング方法を知らない場合でも心配ありません!Zapierを使用してセンチメント分析を行う方法もカバーします。Zapierはツイートを収集し、Inference APIで分析し、最終的に結果をGoogle Sheetsに送信するためのノーコードツールです⚡️
一緒に読んで興味があるセクションにジャンプしてください🌟:
- センチメント分析とは何ですか?
- コーディングを使用したTwitterセンチメント分析の方法は?
- コーディングを使用せずにTwitterセンチメント分析を行う方法は?
準備ができたら、楽しんでください!🤗
センチメント分析とは何ですか?
センチメント分析は、機械学習を使用して人々が特定のトピックについてどのように話しているかを自動的に識別する方法です。センチメント分析の最も一般的な用途は、テキストデータの極性(つまり、ツイートや製品レビュー、サポートチケットが何かについてポジティブ、ネガティブ、またはニュートラルに話しているかを自動的に識別すること)の検出です。
例として、@Salesforceをメンションしたいくつかのツイートをチェックして、センチメント分析モデルによってどのようにタグ付けされるかを確認してみましょう:
-
“The more I use @salesforce the more I dislike it. It’s slow and full of bugs. There are elements of the UI that look like they haven’t been updated since 2006. Current frustration: app exchange pages won’t stop refreshing every 10 seconds” –> この最初のツイートは「ネガティブ」とタグ付けされます。
-
“That’s what I love about @salesforce. That it’s about relationships and about caring about people and it’s not only about business and money. Thanks for caring about #TrailblazerCommunity” –> 対照的に、このツイートは「ポジティブ」と分類されます。
-
“Coming Home: #Dreamforce Returns to San Francisco for 20th Anniversary. Learn more: http ://bit.ly/3AgwO0H via @Salesforce” –> 最後に、このツイートは意見や極性を含んでいないため、「ニュートラル」とタグ付けされます。
最近まで、ブランドや製品、サービスに関するツイートを分析するのは非常に手作業で困難なプロセスでした。関連するツイートを手動で確認し、センチメントに基づいてラベル付けする必要がありました。想像できるように、これはスケーラビリティに欠け、費用がかかり、非常に時間がかかるだけでなく、人為的なエラーのリスクもあります。
幸いにも、AIの最近の進歩により、機械学習モデルを使用してツイートのセンチメント分析が人間と同等の精度で行えるようになりました。機械学習を使用することで、企業はリアルタイムに24時間365日ツイートを分析し、スケールして数秒で数千のツイートを分析し、必要な洞察を得ることができます。
なぜTwitterでセンチメント分析を行うのですか?企業はさまざまなユースケースでこれを使用しますが、最も一般的なユースケースは、ユーザーフィードバックの分析と潜在的な問題の早期検出です。
Twitterでフィードバックを分析する
顧客の声を聞くことは、製品やサービスの改善点を把握するために重要です。アンケートや公開レビューなど、フィードバックの多くのソースがありますが、Twitterはオファリングについてのロウでフィルタリングされていないフィードバックを提供します。
Twitterでブランドについて人々がどのように話しているかを分析することで、新機能が好評かどうかを理解することができます。また、ターゲットオーディエンスにとって価格が明確かどうかを把握することもできます。さらに、オファリングのどの側面が最も好まれ、好まれていないかを見ることで、ビジネスの意思決定を行うことができます(例:ユーザーインターフェースのシンプルさが好まれているが、カスタマーサポートの遅さには不満がある)。
ツイッターメンションの監視で問題を検出する
Twitterは、製品やサービスを使用中に何かがうまくいかなかったときに、悪い顧客体験を共有し、不満を表現するデフォルトの方法になっています。これが企業がユーザーがTwitterで自社ブランドをメンションする方法を監視し、早期に問題を検出する理由です。
リアルタイムで入力されたメンションを分析するセンチメント分析モデルを実装することで、突然のネガティブなメンションの急増に自動的にアラートを受けることができます。ほとんどの場合、これは即座に対処する必要がある継続中の状況によって引き起こされます(例:サーバーの停止によるアプリの動作不良、またはカスタマーサポート担当者との非常に悪い体験)。
さて、センチメント分析とは何か、なぜ便利なのかについては説明しましたので、では実際にツイートのセンチメント分析を行ってみましょう!💥
コードを使ったTwitterのセンチメント分析方法
現在、Twitterでのセンチメント分析を始めるのは非常に簡単で直感的です🙌
わずか数行のコードで、ツイートを自動的に取得し、センチメント分析を実行し、結果を可視化することができます。そして、これらのすべてのことをわずか数分で学ぶことができます!
このセクションでは、Notionをメンションしたツイートのセンチメント分析を行うクールなプロジェクトを紹介します。
まず、Twitter APIを使用して、@NotionHQをメンションしたツイートを取得するために、オープンソースのPythonライブラリであるTweepyを使用します。そして、センチメント分析のためにInference APIを使用します。センチメント分析の結果を取得したら、その結果を可視化して興味深い洞察を得ることができます。
このチュートリアルに従うためには、このGoogle Colabノートブックを使用できます。
それでは始めましょう!💪
- 依存関係のインストール
最初に、必要な依存関係をインストールする必要があります。ツイートの収集にはTweepy、チャートの作成にはMatplotlib、最も一般的なキーワードを使用した可視化にはWordCloudを使用します。
!pip install -q transformers tweepy matplotlib wordcloud
- Twitterの認証情報の設定
次に、Twitter APIの認証情報を設定する必要があります。これにより、Twitterと認証し、APIを使用して自動的にツイートを収集することができます。
import tweepy
# Twitter APIキーとシークレットを追加
consumer_key = "XXXXXX"
consumer_secret = "XXXXXX"
# Twitterとの認証を処理する
auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)
# Twitter APIのラッパーを作成する
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
- Tweepyを使用したツイートの検索
それでは、Twitterからデータを収集する準備が整いました!🎉 Tweepy Cursorを使用して、Notionをメンションした1,000件のツイートを自動的に収集します。
# ページネーションとレート制限の処理を行うヘルパー関数
def limit_handled(cursor):
while True:
try:
yield cursor.next()
except tweepy.RateLimitError:
print('レート制限に達しました。15分以上スリープします')
time.sleep(15 * 61)
except StopIteration:
break
# ツイートの検索に使用する用語を定義する
query = '@NotionHQ'
query = query + ' -filter:retweets'
# Twitter APIから取得するツイートの数を定義する
count = 1000
# Tweepyを使用してツイートを検索する
search = limit_handled(tweepy.Cursor(api.search,
q=query,
tweet_mode='extended',
lang='en',
result_type="recent").items(count))
# Tweepyを使用して検索結果を処理する
tweets = []
for result in search:
tweet_content = result.full_text
tweets.append(tweet_content) # ツイートの内容のみを保存する。
- センチメント分析を使用したツイートの分析
データが揃ったので、センチメント分析でツイートを分析する準備ができました!💥
簡単にAPIコールを介して機械学習モデルを統合するためのInference APIを使用します。Inference APIを使用すると、機械学習のためのインフラストラクチャの構築やモデルの拡張性に関する問題を気にせず、最新のオープンソースモデルをセンチメント分析に利用することができます。MLOpsの手間を省きながら、センチメント分析のための最新かつ最高のモデルを提供できます。🤩
Inference APIを使用するためには、まずモデルID
とHugging Face APIトークン
を定義する必要があります:
-
モデルID
は、予測を行うために使用するモデルを指定するためのものです。Hugging Faceには、ツイートのセンチメント分析を特定のモデルに対して微調整した、複数の言語で利用できる400以上のモデルがあります。このチュートリアルでは、twitter-roberta-base-sentiment-latestという、約1億2400万件のツイートでトレーニングされ、センチメント分析用に微調整されたモデルを使用します。 -
また、
Hugging Faceトークン
も指定する必要があります。無料で取得できますので、こちらでサインアップして、トークンをこのページにコピーしてください。
モデル = "cardiffnlp/twitter-roberta-base-sentiment-latest"
hf_token = "XXXXXX"
次に、モデルID
とhf_token
を使用してAPI呼び出しを作成します:
API_URL = "https://api-inference.huggingface.co/models/" + モデル
headers = {"Authorization": "Bearer %s" % (hf_token)}
def 分析(data):
payload = dict(inputs=data, options=dict(wait_for_model=True))
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
これで、各ツイートの感情分析を行う準備が整いました。🔥🔥🔥
tweets_analysis = []
for tweet in tweets:
try:
sentiment_result = 分析(tweet)[0]
top_sentiment = max(sentiment_result, key=lambda x: x['score']) # スコアが高い感情を取得
tweets_analysis.append({'tweet': tweet, 'sentiment': top_sentiment['label']})
except Exception as e:
print(e)
- 感情分析の結果を調べる
Notionに関してTwitter上で人々がポジティブに話しているのか、ネガティブに話しているのかを知りたいですか?また、Notionに関してポジティブまたはネガティブに話している場合、ユーザーは何について話しているのでしょうか?感情分析の結果を調べ、データの可視化を使用して結果を探求しましょう!
まず、各感情にラベル付けされたツイートの例を見て、これらのツイートの異なる極性を把握しましょう:
import pandas as pd
# データをデータフレームに読み込む
pd.set_option('max_colwidth', None)
pd.set_option('display.width', 3000)
df = pd.DataFrame(tweets_analysis)
# 各感情を持つツイートを表示する
display(df[df["sentiment"] == 'Positive'].head(1))
display(df[df["sentiment"] == 'Neutral'].head(1))
display(df[df["sentiment"] == 'Negative'].head(1))
結果:
@thenotionbar @hypefury @NotionHQ それは本当にスマートですね。つまり、トップコンテンツの再帰的なリサイクルで自動的に100%実行される投稿キューを設定しましたか? 感情:ポジティブ
@itskeeplearning @NotionHQ ギャラリーカードをリンクさせる方法は? 感情:ニュートラル
@NotionHQ 最近、ウェブに表示されない問題に直面していますが、アプリには表示されています。これはすべてのページに発生します。 https://t.co/3J3AnGzDau. 感情:ネガティブ
次に、ポジティブ、ネガティブ、ニュートラルとタグ付けされたツイートの数を数えます:
sentiment_counts = df.groupby(['sentiment']).size()
print(sentiment_counts)
驚くべきことに、Notionに関するツイートのほとんどはポジティブです:
sentiment
Negative 82
Neutral 420
Positive 498
次に、各感情を相対的な割合で視覚化するためのパイチャートを作成しましょう:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6,6), dpi=100)
ax = plt.subplot(111)
sentiment_counts.plot.pie(ax=ax, autopct='%1.1f%%', startangle=270, fontsize=12, label="")
すべてのツイートのうち、50%がポジティブで、わずか8.2%がネガティブであることがわかるのは素晴らしいです:
Notionに言及するツイートの感情分析結果
最後に、各感情に対して最も使用されている単語を表示するためにワードクラウドを作成しましょう:
from wordcloud import WordCloud
from wordcloud import STOPWORDS
# ポジティブなツイートのワードクラウド
positive_tweets = df['tweet'][df["sentiment"] == 'Positive']
stop_words = ["https", "co", "RT"] + list(STOPWORDS)
positive_wordcloud = WordCloud(max_font_size=50, max_words=50, background_color="white", stopwords = stop_words).generate(str(positive_tweets))
plt.figure()
plt.title("ポジティブなツイート - ワードクラウド")
plt.imshow(positive_wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# ネガティブなツイートのワードクラウド
negative_tweets = df['tweet'][df["sentiment"] == 'Negative']
stop_words = ["https", "co", "RT"] + list(STOPWORDS)
negative_wordcloud = WordCloud(max_font_size=50, max_words=50, background_color="white", stopwords = stop_words).generate(str(negative_tweets))
plt.figure()
plt.title("ネガティブなツイート - ワードクラウド")
plt.imshow(negative_wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
興味深いことに、ポジティブなツイートの中で目立つ単語には「ノート」、「cron」、「有料」があります:
ポジティブなツイートのワードクラウド
対照的に、「figma」、「エンタープライズ」、「アカウント」はネガティブなツイートの中で最も使用される単語のいくつかです:
ネガティブなツイートのワードクラウド
楽しかったですね?
わずか数行のコードで、Tweepyを使用してNotionに言及するツイートを自動的に収集し、推論APIを使用してそれらを感情分析モデルで分析し、最終的に結果を分析するための視覚化を作成することができました。 💥
さらにやりたいですか?次のステップとして、2番目のテキスト分類器を使用して、各ツイートをテーマやトピックで分類することができます。これにより、各ツイートには感情とトピックの両方のラベルが付けられ、より詳細な洞察を得ることができます(例:Notionの使いやすさについてユーザーが称賛しているが、価格やカスタマーサポートについて不満を抱いているなど)。
コーディングなしでTwitterの感情分析を行う方法
感情分析を始めるためには、開発者である必要はありませんし、コーディングの知識も必要ありません。 🤯
数分で簡単に感情分析を行うことができる素晴らしいノーコードソリューションがあります。
このセクションでは、ユーザーが使いやすいユーザーインターフェースで5,000以上のアプリを接続できるノーコードツールであるZapierを使用します。TwitterでNotionに言及するとトリガーされるZapを作成します。その後、Zapは推論APIを使用してツイートを感情分析モデルで分析し、最終的に結果をGoogle Sheetsに保存します:
- ステップ1(トリガー):ツイートの取得。
- ステップ2:感情分析でツイートを分析。
- ステップ3:結果をGoogle Sheetsに保存。
心配しないでください、それほど時間はかかりません;10分以内に、Zapを作成してアクティベートし、Google Sheetsに感情分析の結果が表示されるようになります。
さあ、始めましょう! 🚀
ステップ1:ツイートの取得
始めるには、Zapを作成し、Zapの最初のステップである「トリガー」ステップを設定する必要があります。この場合、TwitterでNotionに言及するとZapがトリガーされるように設定する必要があります。設定するためには、以下の手順に従ってください:
- まず、「Twitter」を選択し、「Choose app & event」で「Search mention」をイベントとして選択します。
- 次に、TwitterアカウントをZapierに接続します。
- このトリガーのために「NotionHQ」という検索用語を指定してトリガーを設定します。
- 最後に、トリガーがツイートを収集し、正常に実行されることを確認するためにトリガーをテストします。
Zapのステップ1
ステップ2:感情分析でツイートを分析
Notionに言及するツイートを収集できるようになったので、感情分析を行うための2番目のステップを追加しましょう。 🤗
ここでは、機械学習モデルを統合するための使いやすいAPIであるInference APIを使用します。Inference APIを使用するためには、「モデルID」と「Hugging Face APIトークン」を定義する必要があります:
-
「モデルID」は、Inference APIにどのモデルを使用して予測を行うかを指定するためのものです。このガイドでは、twitter-roberta-base-sentiment-latestという、約1億2,400万件のツイートでトレーニングされ、感情分析のために微調整された感情分析モデルを使用します。異なるモデルを使用したい場合は、Hugging Face Hubで利用可能な400以上の感情分析モデルを探索することができます(例:別の言語のツイートの感情分析を行うなど)。
-
また、無料で入手できるHugging Faceトークンも指定する必要があります。こちらでサインアップしてトークンをコピーしてください。
モデルIDとHugging FaceトークンIDを取得したら、Zapに戻って、以下の手順に従ってzapの2番目のステップを設定します:
- まず、「Code by Zapier」を選択し、「Choose app and event」で「Run python」を選択します。
- 「Set up action」で、ツイートの「フルテキスト」を「input_data」として追加する必要があります。その後、この28行のPythonコードを「Code」セクションに追加する必要があります。このコードにより、ZapがInference APIを呼び出して感情分析を行います。このコードをzapに追加する前に、次のことを確認してください:
- 行5を変更してHugging Faceトークンを追加してください。つまり、
hf_token = "ADD_YOUR_HUGGING_FACE_TOKEN_HERE"
の代わりに、hf_token = "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"
のように変更する必要があります。 - 異なる感情分析モデルを使用したい場合は、行4を変更して新しいモデルのIDを指定する必要があります。たとえば、デフォルトのモデルではなく、このモデルを使用してスペイン語のツイートの感情分析を行う場合は、この行
model = "cardiffnlp/twitter-roberta-base-sentiment-latest"
をmodel = "finiteautomata/beto-sentiment-analysis"
に変更します。
- 行5を変更してHugging Faceトークンを追加してください。つまり、
- 最後に、このステップをテストして予測が正常に実行されることを確認します。
ステップ2: Zap上の2番目の手順
ステップ3: Google Sheetsに結果を保存する
Zapの最後の手順として、感情分析の結果をGoogle Sheetsのスプレッドシートに保存し、結果を可視化します。📊
まず、Google Sheetsで新しいスプレッドシートを作成し、次の列を定義します:
- ツイート: この列にはツイートのテキストが含まれます。
- 感情: 感情分析の結果のラベルを含みます(例: positive, negative, neutral)。
- スコア: モデルの予測の信頼度を示す値を格納します。
- 日付: ツイートの日付が含まれます(グラフやチャートの作成に便利です)。
次に、この最後の手順を設定するための指示に従ってください:
- アプリとしてGoogle Sheetsを選択し、「スプレッドシート行を作成」を「アプリとイベントを選択」で選択します。
- 次に、Google SheetsアカウントをZapierに接続します。
- 次に、アクションを設定する必要があります。まず、Google Driveの値(例: マイドライブ)を指定し、次にスプレッドシートを選択し、最後にZapierが自動的に新しい行を書き込むワークシートを選択します。これを完了したら、スプレッドシートの各列をマッピングする必要があります。マッピングする値は、Zapが新しい行を自動的に書き込む際に使用する値です。前述の列を作成した場合、次のようになります(列 → 値):
- ツイート → フルテキスト(Zapのステップ1の値)
- 感情 → 感情ラベル(ステップ2の値)
- スコア → 感情スコア(ステップ2の値)
- 日付 → 作成日(ステップ1の値)
- 最後に、この最後の手順がスプレッドシートに新しい行を追加できるかどうかをテストします。動作が確認できたら、スプレッドシート上のこの行を削除できます。
ステップ3: Zap上の3番目の手順
4. Zapをオンにする
この時点で、Zapのすべての手順が完了しました!🔥
これで、ツイートを収集し、感情分析を行い、結果をGoogle Sheetsに保存するためにZapをオンにするだけです。⚡️
オンにするには、画面の下部にある「公開」ボタンをクリックするだけです:
Zapをオンにする
数分後、スプレッドシートがツイートと感情分析の結果で埋められていくのを見ることができます。また、ツイートが入ってくるにつれてリアルタイムに更新されるグラフも作成できます:
Google Sheetsにツイートが表示される
すごいですね?🚀
まとめ
Twitterは、人々がさまざまなトピックについての思いを共有する公共の広場です。政治、スポーツ、テクノロジーについて話す人々、新しいアプリについてのフィードバックを共有するユーザー、航空会社にキャンセルされたフライトについてクレームをする乗客など、Twitter上のデータ量は膨大です。感情分析を使用すると、リアルタイムでデータを解析し、ビジネスの意思決定に役立つ洞察を明らかにすることができます。
幸いにも、Inference APIのようなツールを使用すると、Twitterでの感情分析を始めるのは非常に簡単です。コードの書き方を知っているかどうか、機械学習の経験があるかどうかに関係なく、数分でリアルタイムでツイートを収集し、最先端の感情分析モデルで分析し、クールな可視化で結果を探索するプロセスを設定できます。🔥🔥🔥
質問がある場合は、Hugging Faceフォーラムで質問することができます。Hugging Faceコミュニティが助けを提供し、他の人もディスカッションを見ることで恩恵を受けることができます。また、Discordサーバーに参加して私たちやHugging Faceコミュニティと話すこともできます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles