電報のキーワードトレンド
Telegram チャット プラットフォーム上でのヘイトスピーチ、偽情報、関心のあるナラティブの出現を調査するための分析ツール。このツールにはコンテンツの管理やフィルタリングがないため、注意して使用してください。エクスポートされるコンテンツについてはお客様の責任となります。
つまり、このツールを使用すると、キーワード/フレーズのリストを使用してフォローしているすべてのチャネルを検索し、一致するすべての結果をさまざまな形式でグラフ表示して返すことができます。また、オプションでメディアをダウンロードするため、メディア検索エンジンとしても使用できます (現在、この機能にはいくつかのバグがあるため、網羅的なメディア検索ツールとしては使用しないでください)。
ロシアによるウクライナ全面侵攻中のヘイトスピーチを調査する、動作中のツールのスクリーンショット
主な特長
- このツールは、特定のトピックをカバーする多くのチャネルをフォローするソックパペットで動作するように設計されています。
- api_values.txtファイルを編集することで、別のアカウントを使用するように API の詳細を変更できます。
- このツールは、Google トレンドのように機能するように設計されており、毎日のキーワードの量と長期にわたるマップを表示します。
- 日付フィルタリングを使用すると、検索をより短い期間に絞り込むことができます。空白のままにすると、データの最大範囲に自動的にスケールされます。
- このツールは Telegram 検索を使用するため、特にロシア語の検索に適しており、一般に語尾を適切に処理します。
- 主要な用語ごとに個別のグラフを生成します。
- 比較のために同じグラフ上で検索内のすべてのキーワードを表示する集計グラフを生成します。
- グラフを表示するレポート PDF を作成し、データの監査と証拠の検証のための完全なコードを印刷します。
- すべての主要な統計情報 (実行日、検索されたチャンネル、チャンネルごとの相対ボリュームなど) を含む TXT ファイルの概要を出力します。
- オプションで結果を得るためにメディアをダウンロードします (これにより、ツールの実行に必要な時間が大幅に (本当に大幅に) 長くなります)
- ダウンロードされたメディアのファイル名はchannelid_postidなので、オリジナルを簡単に見つけることができます。
このスクリプトは、ユーザーがメンバーになっている Telegram チャネルで、指定された検索語を含むメッセージを検索します。検索結果を HTML および CSV 形式でエクスポートし、レポートを生成し、1 日あたりのメッセージ数をプロットします。
Google トレンドとほぼ同じ方法で検索語の傾向を監視するように設計されています。これは、特定のイベントに続くヘイトスピーチや議論/物語の出現を特定するのに非常に役立ちます。
この現在のバージョンでは、データに大幅な調整は行われていません。たとえば、グラフには、すべてのメッセージの出現率に合わせて調整された用語の出現率が表示されません。これは、用語の急激なスパイクが一般的なアクティビティの急激なスパイクと混同されないように、さらなる分析を実施する必要があることを意味します。このため、グラフ出力はさらなる調査と統計分析の必要性を示すものとして扱う必要があります。
ロシアによるウクライナ全面侵攻中のヘイトスピーチを調査した結果の例
この画像は、調査対象のチャネルで特定の用語の使用がどのように急増したかを示す結果の例です。
生成されたレポートの例
この画像はレポートの結果の例で、コードの概要を示し、最後にスクリプトを印刷する PDF ドキュメントです。これは、どのような変更が行われたり、どのバージョンのスクリプトが使用されたりしても、正確なプロセスを精査できることを意味します。
txt 統計レポートで生成された情報の一部のスクリーンショット
このツールは、英語とロシア語の検索用語でテストされています。
警告:このツールは、フォローしているグループのリストを検索元のリストとして使用します。個人的なチャット/グループが含まれる場合があります。 OPSEC のために、バーナー アカウントを使用し、調査固有のチャットのみをフォローすることをお勧めします。
インストール
ターミナルまたはコマンド プロンプトで次のコマンドを実行して、tg-keyword-trends リポジトリのクローンを作成します。
git clone https://github.com/thomasjjj/tg-keyword-trends.git
tg-keyword-trends ディレクトリに移動します。
cd tg-keyword-trends
pip を使用して、必要な Python 依存関係をインストールします。
pip install -r requirements.txt
特徴
- グラフは最も古い投稿と最新の投稿に合わせてスケールを調整します。
- さらなる処理のために生成された CSV。
- リンクを開くために生成される HTML ファイル。
- 調査結果を監査できるように、スクレイピングの主要な詳細 (日付、アクセスしたチャネルなど) を文書化したレポートを生成します。
- メディアのダウンロード
使用法:
- 検索語を 1 行に 1 つずつ .txt ファイルに追加します。すぐにファイルの場所を入力するよう求められます。
- Telegram API の詳細を必ず準備してください [https://my.telegram.org/auth]
- スクリプトは、ユーザーがメンバーになっているすべてのチャネルを検索します。
- 検索結果は、タイムスタンプ付きの出力フォルダーに HTML および CSV ファイルとしてエクスポートされます。
- スクリプトは、各チャネルの検索結果を含むレポートを生成します。
- スクリプトは、検索語ごとに 1 日あたりのメッセージ数をグラフにプロットし、画像として保存します。
機能:
- retrieve_api_details : 「api_details.txt」から API の詳細を読み取ります。
- check_search_terms_file : 「search_terms.txt」から検索語を読み取るか、ユーザーに検索語の入力を求めます。
- create_output_directory : 出力ファイルを保存するためのタイムスタンプ付きディレクトリを作成します。
- print_coloured : colorama モジュールを使用して、指定した色でテキストを印刷します。
- render_url : URL とメッセージ テキストを使用してハイパーリンクの HTML コードを生成します。
- generate_report : 各チャネルの検索結果を含むレポートを生成します。
- Lot_keyword_frequency : 検索語ごとに 1 日あたりのメッセージ数をグラフにプロットします。
ヒント:
- 日付フィルター機能により、このツールは日付フィルターされた結果を可能にする Telegram 検索エンジンとしても機能します。必要な日付ウィンドウで検索を実行し、出力 HTML ファイルを開いて、一致するメッセージとそのリンクのリストを確認するだけです。
- このツールはタイムゾーンを自動的に処理し、それに合わせて調整します。デバッグが難しいため、時刻と日付の形式に関連するコードのセクションを編集する場合は特に注意してください。
- 主題ごとに専用の Telegram アカウントを作成することをお勧めします。これにより、関連するチャンネルのみをターゲットにし、ノイズを除去することができます。
- 単数名詞と複数名詞を個別に検索する必要はありません。これは Telegram の検索 (一般的に英語とロシア語の場合) によって処理されるためです。
*この画像は、旧ソ連の名前を含む「バクムート」のさまざまな地名の使用法を示しています。このツールの用途の 1 つは、OSINT 調査で使用される検索用語を検証することです。ここでわかるように、都市の過去の名前や物議を醸す名前ではなく、現在の正式な名前のみを使用する場合、収集の可能性が制限される可能性があります。 *
依存関係:
- パンダ~=2.0.0
- matplotlib~=3.7.1
- テレソン~=1.28.2
- colorama~=0.4.6
- 枕~=9.5.0
- レポートラボ~=3.6.12
- numpy~=1.24.2
- pytz~=2023.3
- tqdm~=4.65.0
Python バージョン: Python 3.11 以降
TODO