同じ内容のコメントカードが小さなグループを作り、その横に独立した確認パネルがある。
同じ言葉の繰り返しはパターンを見つける手がかりになりますが、スパムである証拠にはなりません。

公開データのエクスポート行の構造を理解する

公開コメントをエクスポートすると、構造化されていないソーシャルメディア上のやり取りが、調査や整理に使える整ったデータ行になります。各行には、文字列として保存されるcommentId、contentId、text、authorId、authorUrl、parentCommentId、rootCommentId、isReply、publishedAt、scrapedAtといったフィールドが含まれます。これらの生データは変更せずに保存する必要があります。元のテキストを変更したり、識別子を削除したりすると、人が公正に確認するために必要な追跡記録が失われるためです。

公開投稿のデータを集める際は、Facebook Comments Scraperを使うと、1回の実行で1〜100件の公開コンテンツのリンクからデータ行を収集できます。このActorは、利用可能な全レコードを収集するオプションを選択しない限り、結果件数の上限まで公開コメントを収集します。データベースが返す各commentIdは、特定のコメントまたは返信を識別する一意の文字列値です。

生データを扱うツールは、投稿内容の管理や規制を行わないことを覚えておいてください。このActorは元のテキストを収集しますが、ボットの識別、スパムの検出、ユーザーの意図の分析、意見の分類、返信の送信、自動アラートの発行は行いません。実際の分析や判断はすべて、人による確認を含む独自の手順で行う必要があります。また、生データのエクスポートでは、原因不明の理由でauthorIdやpublishedAtが欠損することがあります。そのため、投稿者IDの欠損を、その投稿者がボットや偽アカウントである証拠として扱ってはいけません。

コメントIDを使って重複収集されたレコードを統合する

データ分析の最初の手順は、完全に同じcommentIdを持つ重複レコードを統合することです。数日間にわたってエクスポートを複数回実行することが多いため、同じ文字列のcommentIdが複数のダウンロードファイルに含まれることがよくあります。

文字列のcommentIdで重複を排除すると、同じエクスポート行を何度も数えず、実際に確認された別々のコメントを数えられます。たとえば、commentId 987654321が2つの異なるエクスポートファイルに含まれている場合、それらの行を統合すると、確認済みの1件のレコードが残ります。この重複排除によって、異なるコメント間でテキストの繰り返しを調べる前に、重複のない分析の基礎データが得られます。

この仕組みを理解するために、2回の収集で合計12行の生データが得られた架空の商品投稿を考えてみましょう。

  • 収集したエクスポートの生データ行の合計:12
  • 複数回の収集間で統合した、commentIdが重複する行:2
  • 残った、確認済みの重複のないコメント:10

これらの件数を照合すると、テキストの繰り返しを分析する対象として、重複のない10件のコメントレコードが得られます。

異なるコメントID間で繰り返されるテキストをグループ化する

重複するコメントIDを統合したら、次は、同一またはほぼ同一のテキストを持つ、文字列の異なるコメントIDをグループ化します。ここでは、コメントの識別と投稿者の識別を区別することが重要です。コメントIDが異なるからといって、別のアカウントから投稿されたとは限りません。1つの投稿者アカウントが同じテキストのコメントを別々に複数回投稿する場合もあれば、異なる複数のアカウントがまったく同じ文言を投稿する場合もあります。

異なるコメントID間でテキストを比較する際は、小文字への変換や余分な空白の除去といった最小限の照合処理を行うと、同じメッセージをグループ化しやすくなります。ただし、単語全体や特定の記号を削除し、文の意味を変えてしまうような強い整形処理は避ける必要があります。たとえば、「I do not recommend this item」(この商品はおすすめしません)という文から「not」を削除するルールでは、「I do recommend this item」(この商品をおすすめします)となります。これではユーザーの意見が完全に逆転し、誤検出につながります。

繰り返される文言を適切に扱うために、テキストの繰り返しを次の3つの主な区分に分けます。

  1. 異なるコメントID間での同一テキスト:別々のコメントレコード間で文言が完全に一致するものです。公式のプレゼント企画、写真コンテスト、署名キャンペーンでは、同じアカウントから投稿される場合も、異なるアカウントから投稿される場合もあります。
  2. ほぼ同一のテキスト:軽微な誤字やわずかな語順の違いがある文言です。通常はコピー&ペーストや定型文による回答で生じます。
  3. 文脈に沿った繰り返し:「これはいくらですか?」や「すてきな写真ですね!」など、多くの異なる投稿に自然に現れる一般的な文言です。

架空のコメントデータセットの内訳

架空の投稿例で確認された、重複のない10件のコメントに、これらの区分を適用してみましょう。

異なるコメントID間で繰り返されるテキストのグループ化
コメントのグループコメントIDテキストが一致するとした理由確認された件数文脈の確認は必要か人による確認結果
想定どおりのプレゼント企画への応募c101, c102, c103, c104企画の応募方法で指定された文言と完全に一致異なる4件のID必要(投稿に記載されたルールと照合する)正当なキャンペーン応募として残す
求められていない宣伝リンクc201, c202, c203外部ウェブサイトのリンクと宣伝文句が同一異なる3件のID必要(投稿の話題とスレッドの流れを確認する)目視確認の待ちリストに入れる
一般的なユーザー間のやり取りc301, c302, c303内容がそれぞれ異なるユーザーの質問や商品への意見異なる3件のID不要通常の確認待ちリストに残す

このデータセットには、確認された重複のない10件のコメントがすべて含まれています。内訳は、想定どおりのプレゼント企画への応募が4件、確認対象となった宣伝コメントが3件、一般的なやり取りのコメントが3件です。

これらの行をグループ化すると、文脈が重要な理由が分かります。自動スクリプトが、繰り返される文言をすべてスパムとして検出すると、企画への応募4件も誤って対象になります。その結果、プレゼント企画の応募方法に従っただけの本物のファンに不満を抱かせてしまいます。

人が安全に確認するための作業手順を整える

適切な確認手順では、プロフィールの一覧を作ったり、ユーザー個人の詳細情報を追跡したりするのではなく、個人情報の使用を最小限に抑えてパターンごとの件数を集計します。重複を除いたコメントID数と、実際に確認された投稿者IDの重複を除いた数を合わせて数えることに重点を置きましょう。不要な個人情報を集めずに、通常とは異なるパターンを見つけられます。

1つのスレッドに複数回投稿するアカウントが、必ずしもボットとは限りません。実際のコミュニティ参加者でも、追加の質問をしたり、ほかの購入者と会話したり、スタッフに返信したりする際に、複数のコメントを投稿することはよくあります。投稿内容の管理や規制に関する判断をする前に、必ず元の投稿と前後の会話スレッドを読んでください。文脈を確認すると、繰り返される文言がコミュニティに役立つ活動なのか、望ましくない宣伝投稿なのかを判断できます。

作業手順を整理するために、データに関する各作業の範囲を明確に分けておきましょう。基本的なファイルのエクスポート、日付による絞り込み、一般的な意見の分類は、Facebookコメントから顧客の意見を分析するガイドで説明しています。公開エンゲージメントの計算式、フォロワー数、公開カウンターの計測については、公開データによるFacebook投稿の成果指標で扱っています。これらのテーマを分けることで、確認対象リストを、繰り返されるテキストの安全な確認に集中させられます。

確認対象リストには、コメントのグループ、コメントID、テキストが一致するとした理由、確認された件数、文脈に関するメモ、人による最終判断をすべて含めます。タイムスタンプが欠損している場合は、正確な投稿速度を計算しようとしないでください。また、根拠のない固定的なしきい値をスパムの確信度に適用したり、自動算出された確率スコアを使ったりすることは避けてください。最終段階では、必ず人が確認する必要があります。

出典と参考資料

著者 Chronometrica · 更新日

ページの先頭へ ↑