Project Crane (Crisis Racism and Norative Aveluation)は、最新のテキスト分析アルゴリズムを使用して、特定のイベントがオンラインヘイトスピーチや人種差別的な物語にどのように影響するかを研究したい研究者と反人種差別的な組織を支援することを目的としています。 Crane ToolboxはPythonパッケージです。インストールすると、クレーンのツールは、ユーザーがPythonプログラムで、またはターミナルを介して直接使用できる機能として使用できます。クレーンは、基本的なプログラミングでユーザーをターゲットにしていますが、機械学習スキルはありません。
クイックスタートまでスキップします

トップに戻ります
危機の人種差別と物語の評価、または略してクレーンは、Covid19駆動のハッカソンであるResiliency Challengeで生まれました。 9週間の間に、学生とプロのデザイナーで構成される学際的なチーム、プログラマー、コンピューターサイエンスの研究者は、Covid19パンデミックに関連する人種差別的なレトリックのリアルタイム監視のためのプロトタイプWebサイトを開発しました。このプロジェクトは、ボストン大学のジャンルカ・ストリングヒニによって提案され、Covid19(SARS-COV-2)パンデミック中のオンライン副鼻嫌いの行動の早期出現に関する彼の研究に続いて提案されました。読者は、対応するDevPostページとこのリポジトリのResiliency-Challenge-Legacyブランチの復元力の課題のために取られたアプローチの詳細を見つけることができます。
文献レビューを行っている間、オンラインヘイトスピーチモニタリングに関する論文はほとんどなく、社会学の研究アプローチと最近の自然言語処理ツールの両方があることに気付きました。この文献は、主に人種差別を検出および特徴付ける新しい機械学習ツールを開発することを目的とした方法論的論文に分けられているようです。また、利用可能なデータと分析方法を最大限に活用しない定性的および定量的の両方の伝統的な社会学研究アプローチがあります。
これは、非常に異なる分野から学際的なチームを収集することの難しさと、自動化されたヘイトスピーチ検出のかなり若くて不安定な性質に一部起因することに一部起因していることを認識しています。
ハッカソン中の私たちの経験は、社会科学の研究者に、現在のヘイトスピーチの検出と分析のより堅牢性を活用するユーザーフレンドリーなツールを提供することで、これらの問題が多少緩和される可能性があると信じるようになりました。
Crane Toolboxは、特定のイベントがオンラインヘイトスピーチや人種差別的な物語にどのように影響するかを研究する際に研究者や反人種差別的な組織をサポートするように設計されています。最先端のテキスト分析アルゴリズムは迅速に進化し、それらの広がりは多くの場合、コンピューターサイエンスの研究の専用分野に限定されます。クレーンツールボックスは、典型的な社会科学の質問に適合するこれらの方法のいくつかを、機械学習スキルを必要としないユーザーフレンドリーなツールにラップします。
クレーンツールボックスはPythonパッケージです。インストールしたら、ユーザーはその機能をPythonスクリプトで呼び出したり、端末を介して直接提供するツールを使用したりできます。これらのツールは、モジュールと呼ばれるいくつかのサブパッケージに編成されています。各モジュールは、一般分析パイプラインのステップに対応します。
Crane Toolboxの最初のバージョンでは、ユーザーがTwitter(インポートモジュール)から抽出したデータをフィルタリングおよびフォーマットするためのツールとドキュメントを提供し、分析(前処理モジュール)のために準備し、選択(分析モジュール)の分析を実行し、結果の基本的なグラフィック表現(視覚化モジュール)を取得します。
トップに戻ります
このセクションは、深い端に真っ先に飛びたい経験豊富なプログラマー向けです。私たちがそこに何について話しているのかわからない場合は、叫び声を上げないでください!パッケージドキュメントセクションの長さは少し気が遠くなるかもしれませんが、非専門家を念頭に置いて書いたので、クレーンツールボックスを使用するために必要なすべての指示とアドバイスを見つける必要があります。
pip install cranetoolbox最初のステップは、データを3列のCSVファイルであるCommon Data Exchange形式に変換することです。このステップを実行するにはcrane-importモジュールを使用します。 1行ごとに1つのJSONツイートオブジェクトを含むソースファイルを使用し、それらを軽量のCSVファイルに変換します。使用可能なパラメーターは、インポートモジュールセクションで詳しく説明されています。
crane-import --source-folder ./my_source --output-folder ./my_outputデータ分析の前にテキストデータをクリーンアップすることが重要です。このステップを実行するためのCLIツールを提供し、いくつかの前処理オプションを備えています。使用可能なパラメーターは、プレアクセスモジュールセクションで詳しく説明されています。
crane-preprocess ./my_output ./my_preproc_output現在、提供されたキーワードセットを使用してデータセットで基本的な周波数分析を実行する単一の統計分析ツールを提供しています。必要な入力形式と使用可能なパラメーターは、分析モジュールセクションで詳しく説明されています。
crane-analysis-quanti ./my_preproc_output keywords.json quanti_results.csvトップに戻ります
このセクションは、2つの部分に分割されます。最初の部分は、クレーンツールボックスをインストールし、端末のコマンドラインモードで、またはPythonスクリプトの関数呼び出しを介して、ツールを実行する方法を説明する最初の部分です。 2つ目は、各モジュールの詳細、特定のデータ形式とパラメーターの選択を提供します。
上級ユーザーは、コードドキュメントで各モジュールのコンテンツに関する追加情報を見つけることができます。
クレーンツールボックスを正常にインストールするには、次のことが必要です。
プログラミングとコマンドラインに関するいくつかの基本的な知識が強くお勧めしますが、勇敢な人と勉強はそれなしで進むことを選択するかもしれません。
上記のリストが明確な場合は、インストール手順をスキップしてください。そうでなければ、環境を準備するために次の段落を読んでください。
端子は、テキストベースのコマンドを入力および実行できるインターフェイスです。ここでより詳細な説明と、ターミナルがここでどのように見えるかの写真を見つけることができます。
端末はすでにコンピューターに取り付けられています。 UNIXベースのオペレーティングシステム( MacOSXまたはLinux Distribution )を使用している場合、それは適切に名前がターミナルで、他のアプリケーションと一緒に暮らしています。 Windowsオペレーティングシステムを使用している場合は、コマンドプロンプトと呼ばれ、スタートメニューに記載されています。 Windows 8と10の場合、 Windowsシステムフォルダーにあります。
端末でコマンドを実行するには、入力してEnterを押します。
Python 3はプログラミング言語です。
インストールプロセスはオペレーティングシステムによって異なります。基本的な手順は公式のPython Webサイトにありますが、インターネットでより詳細なガイドを簡単に見つけることができます。
PIPはパッケージマネージャーです。Pythonパッケージをダウンロードして、必要に応じて更新するのに役立ちます。
インストールのための基本的な指示は、公式ウェブサイトにあります。広く使用されているため、段階的なガイドやその他のリソースはインターネットで簡単に見つけることができます。
pip3コマンドを使用します。 pipのバージョンが端末(Windowsユーザー向けのpip --version python -m pip --version )で使用されるバージョンを確認できます。
pipを使用してクレーンツールボックスをインストールすることを強くお勧めします。 pip install cranetoolboxます。 pip 、クレーンツールボックスが実行されるのに必要なすべてのPythonパッケージも自動的にインストールするため、時間がかかる場合があります。 [Crane ToolboxのPypiページ](Pypiページへのリンク)の依存関係のリストを確認できます。
クレーンツールボックスは、このリポジトリで利用可能なソースコードから手動でインストールすることもできます。
コマンドラインモードは、このパッケージを使用する最も簡単な方法です。これにより、ユーザーはパッケージのすべての部分をすばやく実行し、非常に短い期間で使用可能な統計を作成できます。
Toolboxには3つの異なるCLIコマンドがあり、 crane-import 、 crane-preprocess 、 crane-analysis-quantiです。順番に、生データのインポート/変換を標準のCSV形式に処理し、そのデータを使用可能な形式に前処理し、最終的に指定されたキーワードの毎日の周波数を計算します。
各CLIツールの下で提供されるパラメーターの詳細については、以下の詳細なドキュメントを確認してください。
このパッケージは、再利用を念頭に置いて書かれています。 CLIツールはスタンドアロンツールとして使いやすいですが、クレーンツールボックスは別のPythonプロジェクト内でインポートおよび使用できます。すべての機能は、標準のPythonパッケージの使用を介してユーザーが利用できます。さらに、単一の高レベル関数が各CLIツールに対応しているため、ユーザーはPythonから直接目的のパイプラインを簡単に呼び出すことができます。
インポートモジュールにはcrane-importコマンドラインエントリポイントからアクセスできます。
このモジュールの目標は、 RAW Twitter JSONデータを、他のパイプラインで使用するためのより管理しやすく軽量に変換することです。これは必須のステップではなく、ユーザーが手動で実行するか、ファイルとしてモジュール間でデータが渡されるため、他のツールを介して既に実行されています。
このモジュールは、スワップやメモリの使用に大きく依存することなく、多数の大きな(複数ギガバイト)ファイルを処理できます。これは、チャンクによるファイルを読み取ることで実現されます(ユーザーはオプションの行の数を指定できます)とチャンクで書き込むことができます。これにより、特定の量のデータのみがメモリに保持されることが保証されます。
さらに、分析パイプラインには必要ない追加のツイートデータを削除し、ファイルサイズを縮小し、このパッケージの後のステップのパフォーマンスを向上させます。
モジュールは、拡張機能、名前などに関係なく、指定されたフォルダー内の任意のファイルを読み取ろうとします。テキストベースのファイル形式(.json、.csv、.txt)をサポートします。さらに、圧縮されたtarアーカイブを処理し、特定のTARアーカイブで複数のファイルまたはフォルダーを処理できます。tar.gzまたは同様の形式はサポートされていません。
正確なファイルタイプに関係なく、データは、 n行の最後の文字として使用して、常に1つのJSONオブジェクトツイートで保存する必要があります。
モジュールは、すべてのファイルを次の列を使用して単一のCSVファイルに連結します。
| id | 文章 | created_at |
|---|---|---|
| ツイートの一意のID | 全文のツイート | ツイートのタイムスタンプ |
CSVファイルには、ヘッダー、コンマセパレーター、およびテキストのオプションの二重引用符はありません。
テキスト列は、ツイートが140文字を超えるかどうかに応じて動的に選択されます。拡張ツイートの詳細については、拡張ツイートの公式ドキュメントを参照してください
出力ファイルが既に存在する場合、既存のファイルに追加されます。存在しない場合、デフォルトのパス( "./filtered_data.csv")を使用して、新しいものを使用して新しいものを作成します。
インポートパッケージは、コマンドラインツールとして使用でき、いくつかの異なるオプションをサポートできます。
--source-folderソースフォルダーまたはファイルをファイルして、ファイル/アーカイブを処理するためにスキャンします。--output-folderフォルダーは出力を保存します。指定されたフォルダーが存在する必要があります。デフォルトは./になります。--output-name出力ファイルの拡張機能を含む名前。デフォルトはoutput.csvになります。--text-nameテキストフィールドに名前を付け、ケースこのフィールドには異なる名前があります。--date-name created_atフィールドへの名前、このフィールドには異なる名前があります。--id-name name to id field、このフィールドには異なる名前があります。--tweet-languageがファイルに保存されました。 JSONオブジェクトの言語フィールドに基づいています。デフォルトはenになります。--max-lines-in-memory保持される最大回線の最大数。これは、パフォーマンスやメモリが制限されているマシンで最適化するように調整できます。デフォルトは50000です。--retweetsこのフラグを使用して、出力セットにリツイートを含めます。デフォルトはfalseになりますコマンドラインエントリポイントの完全な例:
crane-import --source-folder tweets/november --output-folder mydataset/data --max-lines-in-memory 2000 --output-name dataset.csvプリプロセッシングパイプラインは、 crane-preprocessコマンドラインエントリポイントからアクセスできます。
提案された前処理は、Effrosynidis et al。 (2017)、テクニック9、0、1、3、5、7、および4を使用。
最初の位置引数として指定されたデータセットは、CSVファイルのフォルダーまたは単一のCSVファイルのいずれかです。各CSVファイルには、 3つの列(入力のID、一意、int; tweetのテキスト、文字列、タイムスタンプ:タイムスタンプ文字列)、ヘッダー、コンマセパレーター、およびテキストのオプションの二重引用符を含める必要があります。
| id | 文章 | created_at |
|---|---|---|
| ツイートの一意のID | 全文のツイート | ツイートのタイムスタンプ |
順番に、特定の文字列に対して、それは次のとおりです。
u002c )を削除し、-urlが指定されている場合はそれらを削除します。-mentionが指定されている場合は削除します。-hashtagが指定されている場合はハッシュタグをセグメント化します。punctが指定されている場合はアンダースコア文字を除くすべての句読点を削除します。-numが指定されている場合は削除します。ハッシュタグはセグメント化されています。つまり、ワードセグメントパッケージを使用して、単語に分離されます。
処理されたデータセットは、2番目の位置引数として指定されたフォルダーに保存されます。存在しない場合は、フォルダーが作成されます。各入力ファイルについて、処理されたファイルが生成されます。ファイル名は、対応する入力ファイルの名前に「_preprocessed」を追加することによって生成されます。各CSVファイルには、 4つの列(入力のID、一意、int;ツイートの元のテキスト、文字列、ツイートの前処理テキスト、文字列、タイムスタンプ:タイムスタンプ文字列)、テキストのヘッダー、コンマセパレーター、およびオプションの二重引用符が含まれます。
| id | original_text | clean_text | created_at |
|---|---|---|---|
| ツイートの一意のID | 全文のツイート | ツイートの前処理されたテキスト | ツイートのタイムスタンプ |
パイプラインには、2つの必須の位置引数と5つのオプションの引数があります。
-urlまたは--remove-urlこのフラグを使用して、「URL」に置き換えるのではなく、ツイートからURLを削除します。-mentionまたは--remove-mentionsこのフラグを使用して、「atuser」に置き換える代わりに、ツイートから「@userhandle」を削除します。-hashtagまたは--segment-hashtagsこのフラグを使用して、単に前の「#」文字を削除するのではなく、ハッシュタグをセグメント化します。-punctまたは--remove-punctuationこのフラグを使用して、繰り返されるシンボルやニューラインを交換する代わりに、すべての句読点がゆるいハイフンを削除します。-numまたは--remove-numbersこのフラグを使用して、テキストバージョンに置き換える代わりに、ツイートからすべての数値を削除します。コマンドラインエントリポイントの完全な例:
crane-preprocess mydataset/data mydataset/preprocessedData -punct現在、分析モジュールは、特定のキーワードの毎日の頻度を計算するためのいくつかの簡単な定量分析パイプラインのみを提供しています。
この分析パイプラインはcrane-analysis-quantiコマンドラインエントリポイントからアクセスできます。
データセット内の特定のキーワードの毎日の頻度を計算します。キーワードのバリエーションを可能にします。たとえば、「男の子」と「boyz」の発生は一緒にカウントできます。
最初の位置引数として指定されたデータセットは、CSVファイルのフォルダーまたは単一のCSVファイルのいずれかです。各CSVファイルには、 4列(入力のID、一意、int;ツイートの元のテキスト、文字列、ツイートの前処理テキスト、文字列、タイムスタンプ:タイムスタンプ文字列)、テキストのヘッダーなし、コンマセパレーター、オプションの二重引用符を含める必要があります。前処理されたテキストは低ケースであると想定されています。
| id | original_text | clean_text | created_at |
|---|---|---|---|
| ツイートの一意のID | 全文のツイート | ツイートの前処理されたテキスト | ツイートのタイムスタンプ |
キーワードは、キーが各キーワードのメインバリアントであり、値がバリアントのリストであるJSON辞書で定義されます。すべてのキーワードは、低ケース文字列でなければなりません。例えば:
{
"color" : [
" colour " ,
" color "
],
"chinese" : [
" chinese " ,
" chineze " ,
" chines "
]
}出力は、日付の日付列(フォーマット "%y-%m-%d")を備えたCSVファイル、データセット内の毎日のツイートの合計総数、各キーワードの[キーワード] _count列(そのメインバリアントは、列の名前を付けます)を使用します。列に名前を付けるには)キーワードの少なくとも1つのバリアントを含むツイートの毎日の頻度。
たとえば、上記のキーワードの場合:
| 日 | total_count | color_count | 中国語_count | color_freq | 中国語_freq |
|---|---|---|---|---|---|
| 日付 | 毎日のツイート数 | 「色」またはバリアントを含む1日のツイート数 | 「中国」またはバリアントを使用した毎日のツイート数 | 「色」またはバリアントを使用したツイートの毎日の頻度 | 「中国」またはバリアントを使用したツイートの毎日の頻度 |
パイプラインには、3つの必須の位置引数と1つのオプションの引数があります。
-dまたは--date-format列データセット内の日付の形式を定義します。デフォルトは%a%b%d%h:%m:%s%z%y "です。コマンドラインエントリポイントの完全な例:
crane-analysis-quanti mydataset/preprocessedData keywords.json quanti_results.csv -d " %d %b %a %h:%M:%S %z %Y " まだ実装されていません
トップに戻ります
すべての貢献を歓迎します!質問、機能リクエスト、またはフィードバックがある場合は、GitHubの問題機能を使用してください。
問題のページは、プログラミングとGITバージョンに固有の多くの追加機能を備えた古き良きフォーラムページのように機能します。 GitHubはそれらへの詳細なガイドを提供しますが、ここに基本があります。
オープンな問題のプルリクエストを送信できます。特に、「ヘルプウェント」というタグ付けされた問題は、通常、コアチームが苦労しているものです。コードベースに貢献する際に従うようにお願いするガイドラインは次のとおりです。
さらに自分自身を関与させたい場合(PRのレビュー、新機能の計画、機械学習方法の調査、ユーザー調査の実施など)、Bolduc2(at)hotmail(dot)frに電子メールを送信してオンボーディングを受けることでコアチームに参加できます。もちろん、開発者を歓迎しますが、デザイナー、すべての学術分野の研究者、技術作家も歓迎します...
2つの理由で、すべてのリソースをリポジトリ内で共有する代わりに、個人的に搭乗することを選択しました。まず、ユーザーがオープンソースプロジェクトに必要なものを見つけやすくすることを容易にしたかったのです。第二に、当社のリソースにはユーザー調査からの個人情報が含まれています。
トップに戻ります
https://crane-toolbox.github.io/#/は、covid19パンデミックがオンラインの中毒性のヘイトスピーチに与える影響を定量化し、特徴付けるために、Resilyencience Challenge HackathonのプロトタイプのWebサイトで構築されています。クレーンツールボックスで実行できるデータ分析のタイプの非常に基本的な例として、オンラインで任せました。
現時点では計画していません。チームの構成のために、私たちはCrane Toolboxに努力を集中することにしました。
ラチャペリエール | Gianluca Stringhini ? | マルコ・シヴァ・パブロビッチ | Claudio Catterina | svetlanamd ? ? ? ? | イアン | ポール・ハン |
ケリー ? ? | ガブリエル・リベイロ | アイザック | トマシュ・ロブシャ | ジュディス・ヴァン・スティーゲン |
絵文字キー
このプロジェクトは、全委員会の仕様に従います。あらゆる種類の貢献を歓迎します!
プロジェクトの第1フェーズのハッカソン貢献者のリストは、Crane DevPostページにあります。
はい!貢献セクションをご覧ください。
Pythonは、データ分析タスクの非常に一般的なプログラミング言語です。パッケージは、基本的なPython言語にインストール可能なアドオンです。大まかに言えば、モジュールはPythonコードを備えたファイルです。
とはいえ、Pythonにまったく不慣れな場合は、Crane Toolboxを使用する前に試してみたいと思うかもしれません。
このレポの問題ページを使用してください。詳細については、貢献セクションをご覧ください。
クレーンツールボックスは、GNU Affero General Public License v3.0の下で配布されています。
ライセンス要件を尊重している場合は、ライセンスと著作権通知を含め、変更した変更を述べ、ソース(このレポ)を開示し、コードを同じライセンスの下に配布することをお勧めします。このコードの使用に責任を負わないことに注意してください。保証は提供されていません。
このリポジトリにリンクしてください。
ツイートデータセットの共有は、Twitter開発者の用語によって制限されています。ツイートコンテンツを備えた一般に利用可能なデータセットを見つけることはできませんが、ツイートIDのデータセットを見つけることができます。たとえば、ハイドレーターを使用して、それらを水分補給できます。
そこから、それは本当にあなたの研究のトピックと質問に依存します。非常に時間に敏感なものもあれば、より少ないものもあります。あなたが非常に時間に敏感でない場合は、通常の検索エンジンで運を試してください。いくつかは、Twitterの完全な情報フローを代表する素朴なデータセットを必要とします。この場合、あなたの最善の策は、Twitterコンテンツについて頻繁に分析する研究チームと協力することです。彼らはおそらく、毎日のTwitterデータの1%を収集するためにストリームを実行し続けます。その他は、特定のキーワードまたはユーザーに対してすでにフィルタリングされているデータセットが必要です。その場合は、通常の検索エンジンで運を試してください。履歴データが必要ない場合は、必要なデータを正確に収集するために独自のTwitterストリームを起動することもできます。
インポートモジュールにいくつかの標準入力形式を含めるように取り組んでいます。データ形式がサポートされていない場合は、連絡を取り合ってください。クレーンツールボックスにサポートを含めるか、サポートされている形式の1つに変換するように最善を尽くします。
たぶん私たちはそれについて知らないかもしれません、多分私たちはまだそれを実装する時間がなかったかもしれません、多分私たちは与えられた理由でそれを含めないことを選ぶかもしれません。それについて教えてください。 (使用料の所有権でない限り。)