Project Crane (krisis rasisme dan evaluasi naratif) bertujuan untuk mendukung peneliti dan organisasi anti-rasis yang ingin menggunakan algoritma analisis teks canggih untuk mempelajari bagaimana peristiwa spesifik memengaruhi pidato kebencian online dan narasi rasis . Crane Toolbox adalah paket Python : Setelah diinstal, alat di derek tersedia sebagai fungsi yang dapat digunakan pengguna dalam program Python mereka atau langsung melalui terminal mereka. Crane menargetkan pengguna dengan pemrograman dasar tetapi tidak ada keterampilan belajar mesin .
Lewati untuk memulai dengan cepat

Kembali ke atas
Krisis rasisme dan evaluasi naratif , atau crane singkatnya, lahir selama Tantangan Ketahanan, hackathon yang digerakkan Covid19. Selama sembilan minggu, tim interdisipliner yang terdiri dari siswa dan desainer profesional, pemrogram dan peneliti ilmu komputer mengembangkan situs web prototipe untuk pemantauan retorika rasis yang terhubung dengan pandemi COVID19 . Proyek ini diusulkan oleh Gianluca Stringhini, Universitas Boston, mengikuti karyanya tentang kemunculan awal perilaku sinofobik online selama pandemi Covid19 (SARS-COV-2). Pembaca dapat menemukan rincian lebih lanjut tentang pendekatan yang diambil untuk tantangan ketahanan pada halaman devpost yang sesuai dan cabang resilience-challenge-legacy dari repositori ini.
Saat melakukan tinjauan literatur, kami memperhatikan bahwa beberapa makalah tentang pemantauan pidato kebencian online memiliki pendekatan penelitian sosiologi dan alat pemrosesan bahasa alami baru -baru ini. Literatur tampaknya dibagi terutama menjadi makalah metodologis yang bertujuan untuk mengembangkan alat pembelajaran mesin baru untuk mendeteksi dan mengkarakterisasi rasisme, dan pendekatan penelitian sosiologi tradisional, baik kualitatif maupun kuantitatif, yang tidak memanfaatkan sepenuhnya data dan metode analisis yang tersedia.
Kami sadar bahwa ini sebagian disebabkan oleh kesulitan mengumpulkan tim interdisipliner dari bidang yang sangat berbeda, dan sebagian karena sifat deteksi ucapan kebencian otomatis yang agak muda dan berbahaya.
Pengalaman kami selama hackathon membuat kami percaya bahwa masalah ini dapat agak diringankan dengan memberikan para peneliti ilmu sosial dengan alat ramah pengguna yang memanfaatkan lebih kuat dari metode deteksi dan analisis kebencian saat ini.
Crane Toolbox dirancang untuk mendukung peneliti dan organisasi anti-rasis dalam mempelajari bagaimana peristiwa spesifik memengaruhi pidato kebencian online dan narasi rasis . Algoritma analisis teks canggih berkembang dengan cepat, dan penyebarannya sering terbatas pada bidang penelitian ilmu komputer khusus. Crane Toolbox membungkus beberapa metode itu, yang sesuai dengan pertanyaan ilmu sosial yang khas, menjadi alat ramah pengguna yang tidak memerlukan keterampilan pembelajaran mesin .
Crane Toolbox adalah paket Python . Setelah diinstal, pengguna dapat memanggil fungsinya di skrip Python mereka atau menggunakan alat yang disediakannya langsung melalui terminal mereka. Alat-alat tersebut diatur dalam beberapa sub-paket yang disebut modul. Setiap modul sesuai dengan langkah dalam pipa analisis umum.
Versi pertama dari Crane Toolbox menyediakan alat dan dokumentasi bagi pengguna untuk memfilter dan memformat data yang telah mereka ekstrak dari Twitter (modul impor ), persiapkan untuk analisis (modul preprocessing ), lakukan analisis pilihan mereka ( modul analisis ), dan dapatkan representasi grafis dasar dari hasil (modul visualisasi ).
Kembali ke atas
Bagian ini adalah untuk programmer berpengalaman yang ingin menyelam pertama-tama ke ujung yang dalam. Jika Anda tidak tahu apa yang sedang kita bicarakan di sana, tolong jangan lari menjerit! Meskipun panjang bagian dokumentasi paket mungkin membuatnya sedikit menakutkan, kami menulisnya dengan mempertimbangkan non-spesialis, jadi Anda harus menemukan semua instruksi dan saran yang Anda butuhkan untuk menggunakan kotak alat crane.
pip install cranetoolbox Langkah pertama adalah mengubah data Anda menjadi format pertukaran data umum kami, file CSV tiga kolom. Kami menggunakan modul crane-import untuk melakukan langkah ini. Dibutuhkan file sumber yang berisi satu objek tweet JSON per baris dan mengubahnya menjadi file CSV ringan. Parameter yang tersedia dirinci di bagian Modul Impor.
crane-import --source-folder ./my_source --output-folder ./my_outputPenting untuk membersihkan data teks sebelum analisis data. Kami menyediakan alat CLI untuk melakukan langkah ini, dengan beberapa opsi preprocessing. Parameter yang tersedia dirinci di bagian modul preprocessing.
crane-preprocess ./my_output ./my_preproc_outputKami saat ini menyediakan alat analisis statistik tunggal yang melakukan analisis frekuensi dasar pada set data menggunakan set kata kunci yang disediakan. Format input yang diperlukan dan parameter yang tersedia dirinci di bagian Modul Analisis.
crane-analysis-quanti ./my_preproc_output keywords.json quanti_results.csvKembali ke atas
Bagian ini dibagi menjadi dua bagian: yang pertama menjelaskan cara menginstal crane toolbox dan menjalankan alatnya, baik dalam mode baris perintah di terminal atau melalui panggilan fungsi dalam skrip python; dan yang kedua memberikan detail pada setiap modul, khususnya format data dan pilihan parameter.
Pengguna tingkat lanjut dapat menemukan informasi tambahan tentang konten setiap modul dalam dokumentasi kode.
Agar berhasil menginstal crane toolbox, Anda akan membutuhkan:
Beberapa pengetahuan dasar dalam pemrograman dan garis komando sangat disarankan , tetapi pemberani dan rajin belajar untuk melanjutkan tanpa.
Jika daftar di atas jelas untuk Anda, lewati ke instruksi instalasi. Selain itu, baca paragraf berikut untuk menyiapkan lingkungan Anda.
Terminal adalah antarmuka di mana Anda dapat mengetik dan menjalankan perintah berbasis teks. Anda mungkin menemukan penjelasan yang lebih rinci di sini dan gambar -gambar seperti apa terminal di sini.
Terminal sudah diinstal di komputer Anda. Jika Anda menggunakan sistem operasi berbasis UNIX (baik Macosx atau distribusi Linux ), itu dinamai Terminal dan hidup dengan aplikasi Anda yang lain. Jika Anda menggunakan sistem operasi Windows, itu dinamai perintah command prompt dan dapat ditemukan di menu start Anda. Untuk Windows 8 dan 10, terletak di folder Sistem Windows .
Untuk menjalankan perintah di terminal, cukup ketik dan tekan Enter.
Python 3 adalah bahasa pemrograman.
Proses instalasi tergantung pada sistem operasi Anda. Instruksi dasar dapat ditemukan di situs web Python resmi, tetapi Anda akan dengan mudah menemukan panduan yang lebih rinci di internet.
PIP adalah manajer paket: Ini membantu Anda mengunduh paket Python dan memperbaruinya bila perlu.
Instruksi dasar untuk instalasinya dapat ditemukan di situs web resminya. Ini banyak digunakan sehingga panduan langkah demi langkah dan sumber daya lainnya mudah ditemukan di internet.
pip3 sebagai gantinya. Anda dapat memeriksa versi pip mana yang digunakan dengan menjalankan pip --version di terminal Anda ( python -m pip --version untuk pengguna Windows).
Kami sangat menyarankan untuk menginstal kotak alat crane menggunakan pip . Jalankan pip install cranetoolbox di terminal. Perintah tersebut mungkin memakan waktu karena pip juga akan secara otomatis menginstal semua paket Python yang diperlukan untuk menjalankan kotak alat crane. Anda dapat memeriksa daftar dependensi pada [halaman pypi kotak alat crane] (tautan ke halaman pypi).
Crane Toolbox juga dapat diinstal secara manual dari kode sumber yang tersedia di repositori ini.
Mode baris perintah adalah metode termudah menggunakan paket ini, memungkinkan pengguna untuk dengan cepat menjalankan semua bagian paket dan menghasilkan statistik yang dapat digunakan dalam waktu yang sangat singkat.
Ada tiga perintah CLI berbeda yang tersedia di kotak alat, mereka adalah crane-import , crane-preprocess dan crane-analysis-quanti . Agar, mereka menangani mengimpor/mengubah data mentah menjadi format CSV standar, preprocessing data itu menjadi format yang dapat digunakan dan akhirnya menghitung frekuensi harian kata kunci yang diberikan.
Untuk spesifik pada parameter yang disediakan di bawah setiap alat CLI, silakan periksa dokumentasi terperinci di bawah ini.
Paket ini telah ditulis dengan mengingat kembali. Sementara alat CLI lebih mudah digunakan sebagai alat mandiri, crane toolbox dapat diimpor dan digunakan dalam proyek Python lain. Semua fungsi tersedia untuk pengguna melalui penggunaan paket Python standar. Selain itu, fungsi tingkat tinggi tunggal sesuai dengan masing -masing alat CLI sehingga pengguna dapat dengan mudah memanggil pipa yang diinginkan langsung dari Python.
Modul impor dapat diakses dari titik masuk baris perintah crane-import .
Tujuan dari modul ini adalah untuk mengubah data JSON Twitter Raw menjadi sesuatu yang lebih mudah dikelola dan ringan untuk digunakan oleh sisa pipa. Ini bukan langkah yang diperlukan dan dapat dilakukan secara manual oleh pengguna atau telah dilakukan melalui beberapa alat lain karena data dilewatkan di antara modul sebagai file.
Modul ini dapat memproses sejumlah besar file besar (beberapa gigabyte) tanpa sangat bergantung pada swap atau penggunaan memori. Ini dilakukan dengan membaca file dengan potongan (pengguna dapat menentukan jumlah baris dalam opsi) serta menulis dalam potongan. Ini memastikan bahwa hanya sejumlah data yang disimpan dalam memori pada saat tertentu.
Selain itu, ini menghapus data tweet tambahan yang tidak diperlukan untuk pipa analisis, mengurangi ukuran file dan meningkatkan kinerja langkah -langkah selanjutnya dalam paket ini.
Modul akan mencoba membaca file apa pun di folder yang ditentukan, terlepas dari ekstensi, nama, dll. Ini mendukung format file berbasis teks (.json, .csv, .txt). Selain itu, dapat menangani arsip tar terkompresi dan memperlakukan beberapa file atau folder dalam arsip tar yang diberikan.tar.gz atau format serupa yang didukung.
Terlepas dari jenis file yang tepat, data harus selalu disimpan dengan satu tweet objek JSON per baris , menggunakan n sebagai karakter akhir lini.
Modul akan menggabungkan semua file ke dalam satu file CSV dengan kolom berikut:
| pengenal | teks | create_at |
|---|---|---|
| ID unik tweet | Tweet teks lengkap | Timestamp Tweet |
File CSV tidak memiliki header , pemisah koma, dan kutipan ganda opsional untuk teks.
Kolom teks dipilih secara dinamis tergantung pada apakah tweet lebih dari 140 karakter atau tidak, untuk informasi lebih lanjut tentang tweet yang diperluas, lihat dokumentasi resmi pada tweet yang diperluas
Jika file output sudah ada, itu akan ditambahkan ke file yang ada. Dalam hal itu tidak ada itu akan membuat yang baru, menggunakan jalur default ("./filtered_data.csv") jika tidak ada yang ditentukan.
Paket impor dapat digunakan sebagai alat baris perintah dan mendukung beberapa opsi berbeda.
--source-folder Folder Sumber atau File Untuk Memindai File/Arsip untuk diproses.--output-folder Folder untuk menyimpan output. Folder yang ditentukan harus ada. Default ke ./ .--output-name Nama, termasuk ekstensi, dari file output. Default ke output.csv .--text-name Nama ke bidang teks, casing bidang ini memiliki nama yang berbeda.--date-name Nama ke bidang create_at, casing bidang ini memiliki nama yang berbeda.--id-name nama ke bidang ID, casing bidang ini memiliki nama yang berbeda.--tweet-language Bahasa tweet yang disimpan ke file. Berdasarkan bidang bahasa dalam objek JSON. Default ke en .--max-lines-in-memory Jumlah maksimum garis yang akan ditahan dalam memori. Ini dapat disesuaikan dengan untuk mengoptimalkan kinerja atau pada mesin yang memiliki memori terbatas. Default ke 50000 .--retweets menggunakan flag ini untuk memasukkan retweet dalam set output. Default ke falseContoh lengkap untuk titik entri baris perintah:
crane-import --source-folder tweets/november --output-folder mydataset/data --max-lines-in-memory 2000 --output-name dataset.csv Pipa preprocessing dapat diakses dari titik masuk baris perintah crane-preprocess .
Preprocessing yang diusulkan diadaptasi dari Effrosynidis et al. (2017), menggunakan teknik 9, 0, 1, 3, 5 dan 7, dan 4.
Dataset yang diberikan sebagai argumen posisi pertama dapat berupa folder file CSV atau file CSV tunggal. Setiap file CSV harus berisi 3 kolom (ID input, harus unik, int; teks tweet, string; timestamp: string timestamp), tidak ada header , pemisah koma, dan kutipan ganda opsional untuk teks.
| pengenal | teks | create_at |
|---|---|---|
| ID unik tweet | Tweet teks lengkap | Timestamp Tweet |
Secara berurutan dan untuk string yang diberikan, itu akan:
u002c ),-url ditentukan,-mention ,-hashtag ditentukan,punct ditentukan,-num ditentukan. Tagar tersegmentasi, yaitu dipisahkan menjadi kata -kata, menggunakan paket kata -kata.
Dataset yang diproses disimpan dalam folder yang diberikan sebagai argumen posisi kedua. Jika tidak ada, folder akan dibuat. Untuk setiap file input, file yang diproses dihasilkan. Nama file dihasilkan dengan menambahkan "_Preprocessed" ke nama file input yang sesuai. Setiap file CSV berisi 4 kolom (ID input, harus unik, int; teks asli dari tweet, string; teks preprocessed dari tweet, string ; timestamp: string timestamp), tidak ada header , pemisah koma, dan kutipan ganda opsional untuk teks.
| pengenal | original_text | clean_text | create_at |
|---|---|---|---|
| ID unik tweet | Tweet teks lengkap | teks tweet yang diproses sebelumnya | Timestamp Tweet |
Pipa ini memiliki dua argumen posisi wajib dan lima argumen opsional:
-url atau --remove-url Gunakan bendera ini untuk menghapus URL dari tweet alih -alih menggantinya dengan 'URL'.-mention atau --remove-mentions Gunakan bendera ini untuk menghapus pengguna menyebutkan '@userHandle' dari tweet alih -alih menggantinya dengan 'Atuser'.-hashtag atau --segment-hashtags menggunakan bendera ini untuk segmen tagar alih -alih hanya menghapus karakter '#' sebelumnya.-punct atau --remove-punctuation Gunakan bendera ini untuk menghapus semua tanda baca hargen, alih -alih mengganti simbol dan newline yang berulang.-num atau --remove-numbers Gunakan bendera ini untuk menghapus semua angka dari tweet alih -alih menggantinya dengan versi teks mereka.Contoh lengkap untuk titik entri baris perintah:
crane-preprocess mydataset/data mydataset/preprocessedData -punctSaat ini modul analisis hanya menawarkan beberapa pipa analisis kuantitatif sederhana untuk menghitung frekuensi harian kata kunci yang diberikan.
Pipa analisis ini dapat diakses dari titik masuk barisan crane-analysis-quanti .
Ini menghitung frekuensi harian kata kunci yang diberikan dalam dataset. Ini memungkinkan varian kata kunci. Misalnya, kejadian "anak laki -laki" dan "boyz" dapat dihitung bersama.
Dataset yang diberikan sebagai argumen posisi pertama dapat berupa folder file CSV atau file CSV tunggal. Setiap file CSV harus berisi 4 kolom (ID input, harus unik, int; teks asli dari tweet, string; teks preprocessed dari tweet, string; timestamp: timestamp string), tidak ada header , pemisah koma, dan kutipan ganda opsional untuk teks. Teks praproses diasumsikan sebagai kasus yang lebih rendah.
| pengenal | original_text | clean_text | create_at |
|---|---|---|---|
| ID unik tweet | Tweet teks lengkap | teks tweet yang diproses sebelumnya | Timestamp Tweet |
Kata kunci didefinisikan dalam kamus JSON di mana kunci adalah varian utama untuk setiap kata kunci dan nilainya adalah daftar varian. Semua kata kunci harus berupa string kasus rendah. Misalnya:
{
"color" : [
" colour " ,
" color "
],
"chinese" : [
" chinese " ,
" chineze " ,
" chines "
]
}The output is a CSV file with a day date column (format "%Y-%m-%d"), a total_count column with the daily total number of tweets in the dataset, a [keyword]_count column for each keyword (its main variant is used to name the column) with the daily number of tweets containing at least one variant of the keyword and a [keyword]_freq column for each keyword (its main variant is used untuk memberi nama kolom) dengan frekuensi harian tweet yang berisi setidaknya satu varian kata kunci.
Misalnya, untuk kata kunci yang diatur yang diberikan di atas:
| hari | Total_count | color_count | China_count | color_freq | China_freq |
|---|---|---|---|---|---|
| tanggal | Jumlah tweet harian | Jumlah tweet harian dengan "warna" atau varian | Jumlah tweet harian dengan "Cina" atau varian | Frekuensi harian tweet dengan "warna" atau varian | Frekuensi harian tweet dengan "Cina" atau varian |
Pipa ini memiliki tiga argumen posisi wajib dan satu argumen opsional:
-d atau --date-format string yang mendefinisikan format tanggal dalam dataset. Standarnya adalah %A %B %D %H: %M: %S %Z %Y ".Contoh lengkap untuk titik entri baris perintah:
crane-analysis-quanti mydataset/preprocessedData keywords.json quanti_results.csv -d " %d %b %a %h:%M:%S %z %Y " Belum diimplementasikan
Kembali ke atas
Kami menyambut semua kontribusi! Jika Anda memiliki pertanyaan, permintaan fitur atau umpan balik, silakan gunakan fitur masalah GitHub.
Halaman masalah berfungsi agak seperti halaman forum lama Anda yang bagus, dengan banyak fitur tambahan khusus untuk pemrograman dan versi git. GitHub memberikan panduan terperinci untuk mereka, tetapi di sini adalah dasar -dasarnya:
Anda dipersilakan untuk mengirimkan permintaan tarik untuk masalah terbuka. Secara khusus, masalah yang ditandai "Bantuan-Wanted" biasanya merupakan hal yang sedang diperjuangkan oleh tim inti. Berikut adalah pedoman yang kami minta Anda ikuti saat berkontribusi pada basis kode.
Jika Anda ingin melibatkan diri Anda lebih lanjut (meninjau PRS, merencanakan fitur baru, meneliti metode pembelajaran mesin, melakukan riset pengguna, ...), Anda dapat bergabung dengan tim inti dengan mengirim email ke Bolduc2 (AT) Hotmail (DOT) FR untuk mendapatkan onboard. Kami menyambut pengembang, tentu saja, tetapi juga desainer, peneliti dari semua bidang akademik, penulis teknis ...
Kami telah memilih untuk orang -orang di atas kapal secara pribadi daripada berbagi semua sumber daya kami di repo karena dua alasan. Pertama, kami ingin memudahkan pengguna yang tidak terbiasa dengan proyek open source untuk menemukan apa yang mereka butuhkan. Kedua, beberapa sumber daya kami berisi informasi pribadi dari penelitian pengguna.
Kembali ke atas
https://crane-toolbox.github.io/#/ adalah situs web prototipe yang dibangun selama hackathon tantangan ketahanan, dalam upaya untuk mengukur dan mengkarakterisasi dampak pandemi Covid19 pada pidato kebencian sinofobik online. Kami meninggalkannya secara online sebagai contoh yang sangat mendasar dari jenis analisis data yang dapat dilakukan dengan crane toolbox.
Kami tidak berencana saat ini. Karena komposisi tim, kami telah memutuskan untuk memfokuskan upaya kami pada kotak alat crane, di mana kami percaya kami dapat membuat perbedaan.
Lachapeliere | Gianluca Stringhini ? | Marko Shiva Pavlovic | Claudio Catterina | Svetlanamd ? ? ? ? | Ian | Paul Han |
Kelly ? ? | Gabriel Ribeiro | Ishak | Tomáš Lokša | Judith Van Stegeren |
Kunci emoji
Proyek ini mengikuti spesifikasi semua-kontributor. Kontribusi apa pun yang baik!
Daftar kontributor hackathon untuk fase pertama proyek dapat ditemukan di halaman devpost crane.
Ya! Lihat bagian yang berkontribusi.
Python adalah bahasa pemrograman yang sangat umum untuk tugas analisis data. Paket adalah add-on yang dapat diinstal ke bahasa Python dasar. Secara kasar, modul adalah file dengan kode python.
Yang mengatakan, jika Anda sama sekali tidak terbiasa dengan Python, Anda mungkin ingin bereksperimen dengannya sebelum menggunakan kotak alat crane.
Silakan gunakan halaman masalah repo ini. Lihat bagian yang berkontribusi untuk lebih jelasnya.
Crane Toolbox didistribusikan di bawah GNU Affero General Public License v3.0.
Anda dapat menggunakannya namun Anda ingin memberi Anda menghormati persyaratan lisensi: Sertakan lisensi dan pemberitahuan hak cipta, nyatakan perubahan yang Anda buat, mengungkapkan sumber Anda (repo ini), dan mendistribusikan kode Anda di bawah lisensi yang sama. Harap dicatat bahwa kami tidak bertanggung jawab atas penggunaan apa pun yang Anda buat dari kode ini, dan kami tidak memberikan garansi.
Harap tautkan ke repo ini.
Berbagi dataset tweet dibatasi oleh istilah pengembang Twitter. Anda tidak akan dapat menemukan kumpulan data yang tersedia untuk umum dengan konten tweet, melainkan kumpulan data dari ID Tweet. Itu dapat dihidrasi , menggunakan misalnya hidrator.
Dari sana itu sangat tergantung pada topik dan pertanyaan penelitian Anda. Beberapa sangat sensitif waktu, beberapa kurang. Jika milik Anda tidak terlalu sensitif waktu, cobalah keberuntungan Anda dengan mesin pencari biasa. Beberapa membutuhkan dataset naif , perwakilan dari aliran informasi lengkap Twitter. Dalam hal ini, taruhan terbaik Anda adalah berkolaborasi dengan tim peneliti yang sering melakukan analisis pada konten Twitter. Mereka mungkin terus berjalan aliran untuk mengumpulkan 1% dari data Twitter harian. Lainnya memerlukan dataset yang telah difilter untuk kata kunci atau pengguna tertentu. Jika itu kasus Anda, cobalah keberuntungan Anda dengan mesin pencari biasa. Jika Anda tidak memerlukan data historis, Anda juga dapat memulai aliran Twitter Anda sendiri untuk mengumpulkan data yang Anda inginkan.
Kami bekerja untuk memasukkan beberapa format input standar ke modul impor kami. Jika format data Anda tidak didukung, silakan hubungi dan kami akan melakukan yang terbaik untuk memasukkan dukungan untuk itu dalam kotak alat crane atau memandu Anda untuk mengubahnya menjadi salah satu format yang didukung kami.
Mungkin kita tidak mengetahuinya, mungkin kita belum punya waktu untuk mengimplementasikannya, mungkin kita memilih untuk tidak memasukkannya karena alasan yang diberikan. Tolong hubungi kami untuk memberi tahu kami tentang hal itu. (Kecuali itu adalah metode hak milik dengan biaya penggunaan.)