Moderasi Teks: Pelajaran Etiket Ilmuwan Data

Halo, Habr!



Dengan artikel ini, kami mulai menerbitkan serangkaian artikel tentang Ilmu Data, tugas yang kami selesaikan di Pusat Pengembangan Teknologi Keuangan Bank Pertanian Rusia.



Tahun lalu, Rosselkhozbank mengumumkan pembuatan dan pengembangan ekosistem untuk perusahaan di kompleks agro-industri. Untuk salah satu situs dasar ekosistem - Pertanian Kami, kami memutuskan untuk melakukan beberapa tugas bermanfaat, yang akan kami diskusikan di bawah.







Situs Svoe Farmezstvo adalah pasar barang bagi produsen pertanian dari pemasok terbesar dari seluruh Rusia. Situs ini mencakup barang-barang dengan kategori prioritas tertinggi bagi petani: produk perlindungan tanaman, pupuk, benih, mesin pertanian, dll. Ribuan pemasok mengunggah informasi tentang produk mereka untuk tujuan penjualan. Dan, tentu saja, Anda perlu menerapkan proses untuk memeriksa kualitas konten yang Anda unduh. Dalam hal ini, kami memutuskan untuk membuat alat kami sendiri untuk moderasi informasi teks dan grafik.



Apa yang mereka lakukan?



Dalam artikel ini, kami akan memberi tahu Anda bagaimana, bekerja sama dengan Laboratorium MIPT, yang khusus dibuat untuk tugas-tugas Bank, kami telah mengembangkan alat yang memungkinkan Anda untuk memoderasi konten teks dengan akurasi tinggi.



Tujuan kami terdengar cukup sederhana - alat yang kami buat harus secara otomatis mengklasifikasikan teks sebagai teks yang dapat diterima untuk penempatan di situs (kelas 0) atau tidak dapat diterima (kelas 1). Jika algoritme tidak dapat dengan jelas memahami kelas mana dari teks itu, maka kami mengirimkannya (teks) untuk moderasi manual.



Kami memiliki tugas mengolah teks: kami ingin menyaring teks yang "beracun" dalam semua pengertian, yaitu: kutukan, penghinaan, berbagai konten yang dilarang oleh undang-undang, dan sekadar teks yang tidak dapat diterima untuk ditempatkan di situs.



Kami berharap algoritme yang kami kembangkan akan mengambil sekumpulan teks sebagai input dan menghasilkan angka dari 0 hingga 1 - derajat atau probabilitas teks menjadi "beracun". Semakin dekat angka ini dengan satu, semakin beracun komentarnya.



Perlu dicatat bahwa masalah pendeteksian teks beracun bukanlah hal baru sama sekali dan cukup populer di segmen berbahasa Inggris. Beberapa tahun yang lalu, masalah serupa dipecahkan dalam Tantangan Klasifikasi Komentar Beracun di Kaggle. Untuk bahasa Rusia, solusinya harus diperoleh dengan cara yang sama, tetapi kualitas modelnya mungkin lebih rendah karena fakta bahwa bahasa Rusia secara struktural lebih rumit daripada bahasa Inggris.



Hanya ada satu set data berbahasa Rusia yang ditandai di domain publikuntuk mencari toksisitas dalam teks. Kami juga berhasil menemukan kumpulan data untuk mencari penghinaan (kasus khusus toksisitas). Selain itu, kami telah mengumpulkan contoh iklan dari portal pertanian dan menandainya sebagai dapat diterima (kelas - 0).



Tugas yang kami berikan ternyata cukup unik dalam hal tema pertanian yang diberikan. Kekhususannya terletak pada kenyataan bahwa ungkapan yang dalam kehidupan sehari-hari adalah penghinaan tidak selalu demikian jika menyangkut pertanian. Berikut ini dapat dikutip dari contoh umum: "Jangan tempelkan moncong Anda" - teksnya jelas tidak dapat diterima, sedangkan teks dengan "moncong babi" dapat ditempatkan di situs (meskipun tergantung konteksnya). Hal yang sama berlaku untuk subspesies hewan dan tumbuhan tertentu.



Jika kita berbicara tentang pemecahan masalah klasifikasi teks seperti itu, maka sebenarnya model yang paling sederhana (linier) pun sudah memberikan hasil yang baik . Tapi, seperti biasa, untuk mencapai kualitas yang lebih tinggi, kami akan menggunakan jaringan saraf. Arsitektur yang paling populer (pada saat penulisan ini) untuk memecahkan masalah tersebut adalah BERT. Pada saat kompetisi Kaggle yang disebutkan di atas, arsitektur ini belum ada, sehingga digunakan yang lain. Namun, kemudian tugas ini berhasil diselesaikan dengan bantuan BERT.



Bagaimana kamu melakukannya?



Mari beralih ke bagian yang paling menarik - menyelesaikan masalah. Setelah memikirkan sedikit tentang "arsitektur" alat, kami memutuskan untuk menggunakan tiga model: penelusuran kamus (sebagai filter untuk kosakata cabul), regresi logistik (sebagai solusi dasar) dan BERT (sebagai solusi yang lebih canggih).



Skema umum







Skema umum solusi terlihat seperti ini: di dalam "kotak hitam", teks pertama-tama memasukkan pengklasifikasi naif, yang didasarkan pada kamus kata-kata cabul (ungkapan sumpah serapah), di sini teks yang berisi kata-kata "buruk" segera dipotong (toksisitasnya selalu satu ( 1). Teks yang telah melewati tahap pertama jatuh ke dalam model jaringan saraf yang lebih kompleks, yang memberikan tingkat toksisitasnya. Jika terjadi kegagalan model jaringan saraf, itu akan diganti dengan yang lebih sederhana - regresi logistik. Artinya, kita akan mendapatkan beberapa hasil non-naif dalam kasus apa pun .



Sekarang mari lihat ini pada setiap komponen secara rinci.



Pengklasifikasi naif



Semuanya cukup sederhana di sini: menurut kamus kosakata cabul, cukup mudah untuk memahami apakah teks tersebut mengandung kata "buruk" ini atau itu atau tidak.



Artinya, pada tahap ini, Anda bahkan dapat melakukannya tanpa model ML seperti itu dan segera menyingkirkan teks yang berisi kata-kata "buruk". Tetapi bagaimana jika kata-kata kamus tersebut tidak digunakan dalam teks, tetapi teks tersebut, bagaimanapun, tidak dapat diterima untuk diposting di portal? Mari kita coba memecahkan masalah ini menggunakan regresi logistik dan BERT'a.



Regresi logistik



Model paling sederhana memungkinkan untuk memprediksi nilai berdasarkan data yang tersedia. Vektor teks untuk model ini diperoleh dengan menggunakan TF-IDF dan TweetTokenizer dari nltk. Model seperti itu dikenal untuk memungkinkan seseorang memperkirakan kemungkinan toksisitas teks menggunakan fungsi logistik. Dalam arsitektur kami, regresi logistik "menjamin" jaringan saraf.



BERT besar dan mengerikan



Kami menggunakan model RuBert terlatih dari DeepPavlov, yang selanjutnya dilatih tentang teks markup. Proses prediksi, tanpa membahas detailnya, adalah sebagai berikut:





Kami membangun, membangun, dan akhirnya membangun!



Kami mengevaluasi kualitas menggunakan Akurasi metrik favorit kami, ROC-AUC dan F1-measure. Metrik kualitas akhir pada sampel yang ditangguhkan adalah sebagai berikut:



Algoritma / Metrik

Naif

BERT

LR

Naif β†’ BERT

Naif β†’ LR

Ketepatan

0.854

0,901

0.865

0,909

0.879

ROC-AUC

0.782

0,960

0,921

0,963

0,939

Ukuran F1

0.722

0.840

0.800

0.855

0.824



Kecepatan operasi: ~ 2800 teks per menit pada GPU (GeForce 1080Ti) jika pemrosesan BERT sebagai algoritme paling lambat dari yang disajikan.



Seperti yang diharapkan, metrik dengan BERT ternyata sedikit lebih baik, meskipun tidak banyak.



Kesimpulan apa yang kami tarik



Sebagai kesimpulan, saya ingin mencatat beberapa aspek penting, yang tanpanya, menurut kami, solusi semacam itu tidak mungkin diluncurkan dalam mode industri.



  1. Anda selalu perlu mempertimbangkan tugas spesifik terkait markup teks.
  2. Penting untuk menyediakan moderasi teks secara manual, jika model β€œmeragukan” keputusannya. Anda tidak ingin konten yang tidak pantas berakhir di produk Anda.
  3. Anda juga perlu mengirim teks bertanda tangan dari paragraf sebelumnya untuk pelatihan tambahan. Dengan demikian, Anda dapat meningkatkan model dalam langkah-langkah kecil dan mengurangi jumlah pekerjaan selama moderasi manual dari waktu ke waktu.
  4. Lebih baik menggunakan pendekatan terintegrasi untuk memecahkan masalah. Kadang-kadang bahkan "model" yang paling sederhana dalam kamus sudah memberikan hasil yang baik.
  5. Pilih model terbaik berdasarkan tugas Anda. Dalam kasus kami, kami memilih BERT karena bereaksi lebih baik terhadap konteks daripada regresi logistik.


Terima kasih atas perhatian Anda!



Di artikel berikutnya, kami akan berbagi pengalaman kami dalam moderasi gambar semua di platform yang sama dari ekosistem kami - Pertanian Kami.



All Articles