Cara membuka komentar dan tidak tenggelam dalam spam



Ketika pekerjaan Anda adalah menciptakan sesuatu yang indah, Anda tidak dapat membicarakannya secara khusus, karena hasilnya ada di depan mata semua orang. Tetapi jika Anda menghapus prasasti dari pagar, tidak ada yang memperhatikan pekerjaan Anda sampai pagar terlihat layak atau sampai Anda menghapus sesuatu yang salah.

Setiap layanan di mana Anda dapat meninggalkan komentar, meninjau, mengirim pesan atau mengunggah gambar, cepat atau lambat akan menghadapi masalah spam, penipuan dan bahasa cabul. Ini tidak bisa dihindari, tetapi ini harus diperjuangkan.

Nama saya Mikhail, saya bekerja di tim Anti-Spam, yang melindungi pengguna layanan Yandex dari masalah seperti itu. Pekerjaan kami jarang terlihat (dan bagus!), Jadi hari ini saya akan membicarakannya lebih detail. Anda akan menemukan dalam kasus mana moderasi tidak berguna dan mengapa akurasi bukan satu-satunya indikator efektivitasnya. Kami juga akan berbicara tentang pasangan menggunakan contoh kucing dan anjing dan mengapa kadang-kadang berguna untuk "berpikir seperti penipu".

Di Yandex, ada lebih banyak layanan di mana pengguna mempublikasikan konten mereka. Anda dapat mengajukan pertanyaan atau menulis jawaban di Yandex. Ayo, diskusikan berita tentang halaman di Yandex. Rayon, bagikan situasi lalu lintas dalam percakapan di Yandex.Maps. Tetapi ketika audiens layanan tumbuh, itu menjadi menarik bagi scammers dan spammer. Mereka datang dan mengisi komentar: mereka menawarkan uang mudah, mengiklankan dana ajaib dan menjanjikan manfaat sosial. Karena spammer, beberapa pengguna kehilangan uang, sementara yang lain kehilangan keinginan untuk menghabiskan waktu pada layanan yang berantakan dan dipenuhi spam.

Dan ini bukan satu-satunya masalah. Kami berusaha tidak hanya untuk melindungi pengguna dari scammers, tetapi juga untuk menciptakan suasana yang nyaman untuk komunikasi. Jika orang-orang yang berkomentar menghadapi bahasa yang tidak senonoh dan menghina, mereka kemungkinan besar pergi dan tidak pernah kembali. Jadi, ini juga harus bisa bertarung.

Bersihkan web


Seperti yang sering terjadi pada kami, perkembangan pertama lahir di Pencarian, di bagian yang memerangi spam dalam hasil pencarian. Sepuluh tahun yang lalu, muncul tugas untuk memfilter konten dewasa untuk pencarian keluarga dan untuk pertanyaan yang tidak menyiratkan jawaban dari kategori 18+. Jadi kamus-kamus porno dan tikar yang diketik secara manual pertama kali muncul, mereka diisi ulang oleh analis. Tugas utama adalah untuk mengklasifikasikan permintaan ke dalam mana konten dewasa dapat diterima dan di mana tidak. Untuk tugas ini, markup dikumpulkan, heuristik dibangun, model dilatih. Jadi perkembangan pertama muncul untuk memfilter konten yang tidak pantas.

Seiring waktu, Yandex mulai muncul UGC (konten yang dibuat pengguna) - pesan yang ditulis sendiri oleh pengguna, dan Yandex hanya menerbitkan. Untuk alasan yang dijelaskan di atas, banyak pesan tidak dapat dipublikasikan tanpa melihat - moderasi diperlukan. Kemudian kami memutuskan untuk membuat layanan yang akan memberikan perlindungan terhadap spam dan penjahat cyber untuk semua produk Yandex UGC dan menggunakan praktik terbaik untuk memfilter konten yang tidak pantas dalam Pencarian. Layanan itu disebut Web Bersih.

Tugas baru dan bantuan tolokers


Pada awalnya, hanya otomatisasi sederhana yang bekerja untuk kami: layanan mengirimi kami teks, dan kami mengelola kamus, porn, dan kamus reguler pada mereka - analis membuat semuanya secara manual. Namun seiring waktu, layanan ini digunakan dalam semakin banyak produk Yandex, dan kami harus belajar untuk bekerja dengan masalah baru.

Seringkali, alih-alih mengingat, pengguna menerbitkan satu set surat yang tidak berarti, mencoba untuk mengakhiri pencapaian mereka, kadang-kadang mengiklankan perusahaan mereka dalam ulasan perusahaan pesaing, dan kadang-kadang mereka hanya membingungkan organisasi dan menulis dalam sebuah ulasan tentang toko hewan peliharaan: "Ikan yang dimasak dengan sempurna!". Mungkin suatu hari nanti kecerdasan buatan akan belajar menangkap dengan sempurna makna teks apa pun, tetapi sekarang otomatisasi terkadang lebih buruk daripada manusia.

Menjadi jelas bahwa seseorang tidak dapat melakukan tanpa penandaan manual, dan kami menambahkan langkah kedua ke sirkuit kami - mengirimkannya untuk inspeksi manual oleh seseorang. Ada teks-teks yang diterbitkan dimana classifier tidak melihat masalah. Anda dapat dengan mudah membayangkan skala tugas seperti itu, oleh karena itu kami tidak hanya mengandalkan penilai, tetapi juga menggunakan "kebijaksanaan orang banyak", yaitu, kami meminta bantuan dari tolokers. Merekalah yang membantu kami mengidentifikasi apa yang terlewatkan oleh mesin, dan dengan demikian mengajarkannya.

Caching pintar dan hashing LSH


Masalah lain yang kami temui ketika bekerja dengan komentar adalah spam, atau lebih tepatnya, volume dan kecepatan distribusinya. Ketika para penonton Yandex.Ryon mulai tumbuh dengan cepat, spammer datang ke sana. Mereka belajar untuk berkeliling dengan sedikit mengubah teks. Spam, tentu saja, masih ditemukan dan dihapus, tetapi ratusan orang dapat melihat pesan yang tidak dapat diterima bahkan selama 5 menit pada skala Yandex.



Tentu saja, ini tidak cocok untuk kami, dan kami membuat caching teks yang cerdas berdasarkan pada LSH ( hashing yang sensitif terhadap lokalitas)) Ini berfungsi seperti ini: kita menormalkan teks, membuang tautan darinya dan memotongnya menjadi n-gram (urutan n huruf). Selanjutnya, hash dari n-gram dipertimbangkan, dan vektor LSH dokumen sudah dibangun di atasnya. Intinya adalah bahwa teks yang serupa, bahkan jika mereka berubah sedikit, berubah menjadi vektor yang serupa.

Keputusan ini memungkinkan penggunaan kembali vonis classifiers dan tokers untuk teks yang serupa. Dalam serangan spam, segera setelah pesan pertama melewati cek dan masuk ke cache dengan vonis spam, semua pesan baru yang serupa, bahkan yang dimodifikasi, menerima vonis yang sama dan dihapus secara otomatis. Kemudian, kami belajar untuk melatih dan secara otomatis melatih ulang pengklasifikasi spam, tetapi "cache pintar" ini tetap bersama kami dan masih banyak membantu kami.

Klasifikasi teks yang bagus


Tidak memiliki waktu untuk berhenti memerangi spam, kami menyadari bahwa 95% konten kami dimoderasi secara manual: pengklasifikasi hanya merespons pelanggaran, dan sebagian besar teksnya bagus. Kami memuat toloker, yang dalam 95 kasus dari 100 menempatkan peringkat "Semuanya baik-baik saja." Saya harus melakukan pekerjaan yang tidak biasa - untuk membuat pengklasifikasi konten yang baik, manfaat markup untuk saat ini telah cukup terakumulasi.

Pengklasifikasi pertama terlihat seperti ini: kami lemmatize teks (kami mengurangi kata-kata ke bentuk awal), membuang semua bagian layanan pidato dan menggunakan "kamus lemma baik" yang telah disiapkan sebelumnya. Jika semua kata "baik" dalam teks, maka seluruh teks tidak mengandung pelanggaran. Pada layanan yang berbeda, pendekatan ini segera memberi 25-35% otomatisasi markup manual. Tentu saja, pendekatan ini tidak ideal: mudah untuk menggabungkan beberapa kata yang tidak bersalah dan mendapatkan pernyataan yang sangat ofensif, tetapi memungkinkan kami untuk dengan cepat mencapai tingkat otomatisasi yang baik dan memberikan waktu untuk melatih model yang lebih kompleks.

Versi pengklasifikasi dari teks-teks bagus berikut sudah termasuk model linier, dan pohon keputusan, dan kombinasinya. Untuk menandai kekasaran dan penghinaan, misalnya, kami mencoba jaringan saraf BERT. Di sini penting untuk memahami makna kata dalam konteks dan hubungan kata-kata dari kalimat yang berbeda, dan BERT melakukan tugasnya dengan baik. (Ngomong-ngomong, baru-baru ini, kolega dari News memberi tahu bagaimana mereka menggunakan teknologi untuk tugas yang tidak standar - untuk mencari kesalahan di header.) Akibatnya, kami berhasil mengotomatisasi hingga 90% dari aliran tergantung pada layanan.

Akurasi, kelengkapan dan kecepatan


Untuk berkembang, Anda perlu memahami jenis pengklasifikasi otomatis apa yang membawa manfaat, perubahan di dalamnya, dan juga apakah kualitas pemeriksaan manual tidak menurun. Untuk ini, kami menggunakan indikator akurasi dan kelengkapan.

Akurasi adalah proporsi vonis yang benar di antara semua vonis konten yang buruk. Semakin tinggi akurasi, semakin sedikit false positive. Jika Anda tidak mengikuti keakuratannya, maka secara teori Anda dapat menghapus semua spam dan kata-kata kotor, dan bersama mereka separuh dari pesan yang baik. Di sisi lain, jika Anda hanya mengandalkan akurasi, maka teknologi terbaik adalah yang tidak menangkap siapa pun. Oleh karena itu, ada juga indikator kelengkapan: proporsi konten buruk yang terdeteksi di antara total volume konten buruk. Dua metrik ini saling menyeimbangkan.

Untuk pengukuran, kami mencicipi seluruh aliran masuk untuk setiap layanan dan memberikan sampel konten kepada penilai untuk evaluasi ahli dan perbandingan dengan solusi alat berat.

Tetapi ada indikator penting lainnya.

Saya menulis di atas bahwa ratusan orang dapat melihat pesan yang tidak dapat diterima bahkan dalam 5 menit. Karena itu, kami mempertimbangkan berapa kali kami berhasil menunjukkan konten yang buruk kepada orang-orang sebelum menyembunyikannya. Ini penting, karena itu tidak cukup untuk bekerja secara efisien - Anda harus bekerja cepat. Dan ketika kami membangun pertahanan melawan matras, kami merasakannya sepenuhnya.

Antimatis pada contoh kucing dan anjing


Penyimpangan liris sedikit. Seseorang mungkin mengatakan bahwa bersumpah dan menghina tidak berbahaya seperti tautan jahat, dan tidak seburuk spam. Tetapi kami berusaha untuk menjaga lingkungan yang nyaman untuk komunikasi antara jutaan pengguna, dan orang-orang tidak suka kembali ke tempat mereka tersinggung. Tidak heran larangan bahasa cabul dan penghinaan dijabarkan dalam aturan banyak komunitas, termasuk tentang Habré. Tapi kami terganggu.

Kamus Mata tidak mengatasi semua kekayaan bahasa Rusia. Terlepas dari kenyataan bahwa hanya ada empat akar cabul utama, dari situ Anda dapat membuat segudang kata yang tidak dapat Anda tangkap oleh pelanggan tetap mana pun. Selain itu, Anda dapat menulis di bagian transliterasi kata, mengganti huruf dengan kombinasi yang sama, mengatur ulang huruf, menambahkan bintang, dll. Kadang-kadang, tanpa konteks, pada dasarnya tidak mungkin untuk menentukan apa yang pengguna maksudkan dengan kata cabul. Kami menghormati aturan Habr, oleh karena itu, kami akan menunjukkan ini bukan pada contoh langsung, tetapi pada anjing laut dan anjing.



"Lyau," kata kucing itu. Tapi kami mengerti bahwa kucing itu berkata lain ...

Kami mulai berpikir tentang algoritma “fuzzy matching” dari kosa kata kami dan tentang preprocessing yang lebih cerdas: transliterasi, ruang terpusat dan tanda baca, mencari pola dan menulis aturan tetap terpisah pada mereka. Pendekatan ini membuahkan hasil, tetapi seringkali mengurangi keakuratan, tanpa memberikan kelengkapan yang diinginkan.

Kemudian kami memutuskan untuk "berpikir seperti kata-kata umpatan." Kami sendiri mulai memasukkan noise ke dalam data: mengatur ulang surat-surat, menghasilkan kesalahan ketik, mengganti surat-surat dengan ejaan yang serupa, dan seterusnya. Markup awal untuk ini diambil dengan menerapkan kamus mat ke korps besar teks. Jika Anda mengambil satu kalimat dan mengubahnya dengan beberapa cara, Anda sudah memiliki banyak kalimat. Jadi, Anda dapat meningkatkan sampel pelatihan puluhan kali. Yang tersisa hanyalah melatih pada kolam yang diterima beberapa model yang kurang lebih cerdas yang memperhitungkan konteksnya.



Masih terlalu dini untuk membicarakan keputusan akhir. Kami masih bereksperimen dengan pendekatan untuk masalah ini, tetapi kami sudah melihat bahwa jaringan konvolusi simbolik sederhana dari beberapa lapisan secara signifikan melebihi kamus dan reguler: ternyata meningkatkan akurasi dan kelengkapan.

Tentu saja, kami memahami bahwa selalu ada cara untuk berkeliling bahkan otomatisasi paling canggih, terutama ketika itu sangat ceroboh: menulis sehingga mesin bodoh tidak mengerti. Di sini, seperti dalam perang melawan spam, kami tidak memiliki tujuan untuk memberantas kemungkinan menulis sesuatu yang cabul, tugas kami adalah membuat game tidak bernilai lilin.

Sangat mudah untuk membuka kesempatan untuk berbagi pendapat, komunikasi, dan komentar Anda. Jauh lebih sulit untuk mencapai lingkungan yang aman, nyaman, dan menghargai orang. Dan tanpa ini, tidak akan ada pengembangan komunitas apa pun.

All Articles