今日の AI 主導の状況では、機械学習、AI、チャットボットがかつてないペースで業界を変革しています。
業務に AI を統合しようとする企業が増えていますが、こうしたシステムの構築方法は見落とされがちです。主な要素は? データです。機械学習モデルの良し悪しは、トレーニングに使用したデータ次第です。しかし、このデータはどこから来るのでしょうか?
私たちが頼りにするデータの大部分は公開されており、ソーシャルメディアの投稿、ユーザーレビュー、その他のオンラインコンテンツによく見られます。感情分析の場合、最も豊富なデータソースの1つはTwitterで、リアルタイムのユーザー生成コンテンツを継続的にストリーミングしています。しかし、このデータをいかに効果的かつクリーンに収集するかが課題です。
Twitter データを使用した感情分析プロジェクトに取り組み始めたとき、最初は Twitter API の使用を検討しました。しかし、すぐに重大な制限に遭遇しました。無料レベルの API では、過去 7 日間のツイートにしかアクセスできないのです。包括的な感情分析、特に数週間または数か月にわたるトレンド トピックや政治イベントの場合、この制限により、利用可能なデータの範囲と品質が大幅に制限されます。
より高い API 層にアップグレードすることも選択肢の 1 つでしたが、私のような小規模プロジェクトではコストが高すぎました。そのため、従来のスクレイピング (CAPTCHA、冗長性、不完全なレコードなど、独自の課題が伴う) を通じて手動でデータを収集するか、別のソリューションを見つけるかという 2 つの選択肢が残されました。
ここで Bright Data が役に立ちます。Bright Data は、クリーンでスケーラブルな過去の Twitter データセットを提供することで、これらの問題をシームレスに解決します。API の制限に縛られることなく、通常の煩わしさなしに、プロジェクト用の多様で高品質なデータにアクセスできるようになりました。
この記事では、Bright Data のマーケットプレイスを活用して感情分析用の高品質な Twitter データを取得する方法について説明し、私の経験を共有します。
まずは Bright Data の Web サイトにアクセスし、無料アカウントを作成してください。ログインすると、データ マーケットプレイスに移動し、Twitter に関連するものも含め、さまざまな構築済みデータセットにアクセスできます。
データセットを選択したら、ローカルマシンに直接ダウンロードするか、API経由でアクセスできます。この簡単なプロセスにより、高品質のデータをすぐに使用できるようになります。私はTwitter投稿データセットを使用しました。
生の Twitter データには通常、ユーザー情報、画像の URL、その他の非テキスト データなど、感情分析には関係のないメタデータが多数含まれています。感情分析が適用されるツイートのテキストと、リポストやいいねなどの関連するエンゲージメント メトリックに焦点を当てます。
import pandas as pd df = pd.read_csv("path_to_your_dataset.csv") df.head()
次のステップは、欠損値を処理して無関係な列を削除することでデータをクリーンアップすることです。
df_clean = df[['user_posted', 'description', 'date_posted', 'reposts', 'likes']] df_clean = df_clean.dropna(subset=['description']) df_clean = df_clean.drop_duplicates(subset=['description']) df_clean.head()
データをクリーンアップして関連するテキストが揃ったので、感情分析に取り掛かります。感情分析とは、言葉の背後にある感情的な調子、つまりツイートが肯定的か否定的か中立的かを判断することを意味します。
私は、ソーシャル メディアのテキスト用に特別に設計された、 VADER (Valence Aware Dictionary and Sentiment Reasoner) という人気のライブラリを使用しました。これは、スラングや絵文字などの非公式な言語の処理に最適です。
以下のコードスニペットはVADERを使用して感情分析を実行します。
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer analyzer = SentimentIntensityAnalyzer() def get_sentiment(text): sentiment = analyzer.polarity_scores(text) return sentiment['compound'] df_clean['sentiment'] = df_clean['description'].apply(get_sentiment) df_clean.head()
感情スコアが計算されると、分布を分析してツイートが平均してどの程度肯定的または否定的であるかを確認できます。これにより、特定のトピックまたはイベントに関する全体的な世間の感情についての洞察が得られます。ヒストグラムまたはワードクラウドを使用して感情分布を視覚化し、主要な感情を識別することもできます。
このグラフを見ると、感情の広がりがポジティブ、ネガティブ、または中立のいずれに傾いているかがよくわかります。この場合、中立的なツイートが頻繁に見られます。
各ツイートの感情スコアがわかったので、次のステップは、感情と「いいね!」やリポストなどのエンゲージメント指標の間に相関関係があるかどうかを調べることです。ソーシャル メディア分析では、肯定的な感情が高まればエンゲージメントも高まる (「いいね!」やリポストが増える) と予想されます。しかし、本当にそうなのでしょうか?
これを調べるために、感情スコアとエンゲージメント指標の相関関係を計算すると、次のようになります。
Correlation between sentiment and likes: 0.022806738610786123
Correlation between sentiment and reposts: 0.008885789875330416
私のデータ分析から得られた相関値が弱いことを考えると、感情とエンゲージメントの間には強いつながりがないことがわかります。感情と「いいね!」の相関は 0.02 で、感情とリポストの相関はわずか 0.008 でした。これらの値は、「いいね!」やリポストなどのエンゲージメント指標がツイートの感情に大きく影響されないことを示唆しています。
感情とエンゲージメントの相関関係が弱いことは、他の要因が影響していることを示しています。感情分析は世論を理解するのに役立ちますが、エンゲージメントは次のような追加の要因によって左右される可能性があります。
感情分析は、人々がトピックについてどう感じているかを理解するための貴重なツールですが、エンゲージメントを予測する信頼できるツールであるとは限りません。ユーザーの行動についてより深い洞察を得るには、コンテンツのタイミング、関連性、ユーザーの影響など、他の要素を考慮することが不可欠です。