商品やイベントのマーケティングや、ニーズの把握のためにTwitterを活用したいと考えている人は多いのではないでしょうか。
Twitterに投稿されたテキストを分析することで、ターゲットのユーザーのニーズや意見などを把握することができます。
こうしたビジネスなどにTwitterを活用するためには、Twitterからツイートを収集し、機械学習(特に自然言語処理)の技術を用いて分析する必要があります。
しかし、一度こうした分析を始めてみると、TwitterのようなSNSの分析が一筋縄ではいかないことに気づくことも多いでしょう。
今回は自然言語処理を実際に活用し、研究している私の視点から、Twitterのテキスト分析でつまづきがちなポイントをご紹介します。
こうしたSNSの特徴を事前に知っておくことで、いざTwitterの分析を始めてから「しまった」と思わないように対策できます。
注意するべき点に加えて、それぞれをどうやって回避したらいいのかを、現役の自然言語処理の従事者としてワンポイントアドバイスもご紹介します。
なお、Twitter APIについては以下の記事を過去に書いていますので、そちらもぜひご覧ください。
Contents
API制限のために必要な量をそろえられない
まず、Twitterからツイートを収集する段階で最初に躓くポイントとして、API制限は誰しもがぶつかる壁と言えます。
現在のTwitterの規約は、数年前に比べてかなり厳しくなっており、短期間で分析のためのツイートを収集することが難しくなっています。
例えばある単語を含むツイート100万件を収集したい場合、APIのsearchクエリを使うことになります。
現在の規約では1リクエスト(APIにクエリを送信すること)あたり100件までのツイートが獲得でき、リクエストは15分あたり180回までと定められています。
この制限を超えてリクエストを行うと、いわゆるAPI制限と言われる規制を受けることになります。
単純計算で、一万回のリクエストが必要となるため、最低でも14時間ほど連続でリクエストし続ける必要があります。
もちろん、リクエストに対してサーバーがエラーを返す場合もあるため、実際にはさらに時間がかかります。
加えて、制限ぎりぎりの頻度で定期的にクエリを投げ続けていると、サーバーとの応答の差の関係であっさりと制限に引っかかり、一定期間のペナルティを受けることもあります。
ツイートの取得には想像している以上の時間がかかることを、事前に知ったうえでスケジュールを立てるのが良いでしょう。
また、将来的に必要になると分かっている情報であれば、できるだけ早い段階からクローラーを作成し、ツイートの取得を日常的に行うことが望ましいと言えます。
スパムアカウントやbotが多い
分析目的でツイートを収集してみると、かなりの量のスパムアカウントが存在していることに気づきます。
スパムアカウントだけではなく、一定時間ごとに決まった文章をツイートするbotも数多く存在しています。
こうしたアカウントは、分析目的でツイートを利用したい人たちにとってはノイズになってしまいます。
例えばAという商品の評判を調べたいとき、商品名でTwitter検索をおこってデータを集める方法が考えられます。
しかし、Aを取り扱っている量販店が毎日セール情報をツイートしており、そのツイートにAの商品名が含まれているために検索に引っかかってしまいます。
さらに悪いことに、量販店は支店ごとにTwitterを運営しており、各店舗が独自の文面でAを売り込むツイートをしています。
こうしたbotやスパムアカウントが数多く存在しているせいで、本来収集したいユーザーの生の声などが埋もれてしまうことが良くあります。
収集の段階でこうしたアカウントのデータが取れてしまうのは防ぎようがありませんが、収集後に特定ユーザーからのツイートをフィルタリングしたり、明らかに同じことを繰り返しツイートしているユーザーを除去することでデータクリーニングをする必要があります。
ユーザーのプロフィールは真実ではない
SNSの情報を分析するときに、ユーザー自身の情報が役に立つことがあります。
例えばある商品がどの地域で話題になっているのかを知りたいとき、ツイートしたユーザーのプロフィールから地域を取得できることがあります。
しかし、特にTwitterではプロフィール情報が役に立たないことがよくあります。
Facebookなどに比べるとはるかに匿名性が高いSNSであるため、プロフィールで記述している出身地や所在地、生年月日などが真実である可能性は低いと考えた方がいいでしょう。
さらにTwitterでは所在地などの情報が自由記述方式になっているため、全く関係のないことを書いている人も多く見受けられます。
こうした場合は、各ツイートに付与されている発信地情報(ユーザーが許可していない場合は使用できません)を代わりに使う方法が考えられます。
また、どうしても取得できない情報については、機械学習の手法を用いて推定するなどの工夫が必要になります。
ハッシュタグが間違っている
ハッシュタグもツイートを分析するうえで有益な情報となります。
Twitter APIで提供されている情報の中には、ツイートに含まれるハッシュタグに関するものも含まれています。
しかし、ユーザーによってはハッシュタグ機能を使えていないことがあります。
ハッシュタグは半角ハッシュ記号(#)によって認識されますが、全角ハッシュ(#)を使ってしまったりシャープ記号(♯)を使ってしまっているツイートも多くみられます。
また、ハッシュタグをスペースで区切らず連続で記述した場合、最後の一つ以外はハッシュタグとして認識されないという仕様もあります。
こうしたミスを考慮して、ユーザーが本来意図していたハッシュタグをルールなどによって復元する処理が必要になります。
形態素解析や係り受け解析が上手くいかない
ブログやTwitterのようなSNSに投稿されたテキストデータは一般に綺麗とはいえず、様々な自然言語処理の解析に失敗することが知られています。
テキスト分析をするときの第一歩として形態素解析や係り受け解析といった処理を下準備として行いますが、その下準備でそもそも失敗してしまうことが多くあります。
これは、形態素解析器や係り受け解析器が新聞記事のようなきれいなテキストデータを前提として作られているためで、顔文字や新語、砕けた表現を多く含むSNSのテキストデータに適用できないことが原因です。
形態素解析についてはNeoLogDなどの砕けた表現に強い形態素解析器用の辞書を使うことで、ある程度の対処ができるようになります。
また、単語の分割だけであればSentencePieceなどの単語分割方法を試すのが良いでしょう。