Kami menggunakan sumber terstruktur besar teks multibahasa - Wikipedia untuk meningkatkan klasifikasi teks. Pendekatannya bagus dengan otomatisme dan kemandirian tingkat tinggi di mana masalah klasifikasi tertentu sedang dipecahkan. Efek terbesar, bagaimanapun, diharapkan pada tugas-tugas menentukan topik.
Gagasan utamanya adalah mengekstrak dari Wikipedia hanya teks-teks yang membantu kami memecahkan masalah klasifikasi kami, mengabaikan yang lain. Jika kita mengklasifikasikan teks tentang kucing, kecil kemungkinan kita akan membutuhkan teks tentang fisika kuantum, meskipun teks pada jenis hewan lain bisa bermanfaat. Pemisahan otomatis teks-teks tersebut dari satu sama lain adalah inti dari pendekatan yang dijelaskan.
Wikipedia, seperti yang Anda ketahui, adalah kumpulan artikel tentang banyak bidang pengetahuan dan minat. Pada saat yang sama, sebagian besar artikel memiliki tautan ke artikel-artikel dari subjek yang serupa, tetapi dalam bahasa lain. Ini bukan terjemahan, yaitu artikel dari subjek umum. Juga, sebagian besar artikel termasuk dalam satu kategori atau lebih. Kategori, pada gilirannya, sebagian besar diatur dalam bentuk pohon hierarkis. Artinya, tugas mengelompokkan artikel Wikipedia pada topik yang menarik bagi kami dapat diselesaikan.
Kami menggunakan DBPedia sumber daya - versi Wikipedia pra-kabel dan terstruktur. DBPedia memberi kita semua informasi yang diperlukan - nama artikel, penjelasannya, kategori artikel dan kategori superior untuk kategori tersebut. Kami mulai dengan bahasa yang paling banyak diwakili di Wikipedia - Bahasa Inggris. Jika tugas Anda tidak memiliki, atau sedikit, teks berbahasa Inggris, gunakan bahasa yang memiliki banyak dokumen.
Langkah 1. Clustering Wikipedia
Fokus pada kategori artikel. Untuk saat ini, abaikan konten mereka. Kategori membentuk grafik, kebanyakan seperti pohon, tetapi ada juga siklusnya. Artikel adalah titik akhir grafik (dedaunan) yang terhubung ke satu atau lebih node grafik. Kami menggunakan alat Node2Vec untuk mendapatkan representasi vektor dari setiap kategori dan setiap artikel. Artikel dari subjek yang sama dikelompokkan bersama dalam ruang vektor.
Kami mengelompokkan dengan metode apa pun yang mudah dari artikel menjadi sejumlah besar (ratusan) kelompok.
Langkah 2. Pelatihan classifier di Wikipedia
Kami mengganti nama artikel di cluster yang dihasilkan dengan anotasi mereka (Abstrak Panjang dan Abstrak Pendek - sekitar satu paragraf teks per artikel). Sekarang kami memiliki ratusan cluster yang didefinisikan sebagai kumpulan teks. Kami menggunakan model yang nyaman dan membangun classifier yang memecahkan masalah klasifikasi multiklas: satu kluster - satu kelas. Kami menggunakan FastText.
Pada output, kami mendapatkan model yang menggunakan teks sebagai input, dan pada output itu memberikan vektor perkiraan sejauh mana teks itu milik ratusan cluster kelas kami.
Jika langkah pertama adalah mengelompokkan artikel Wikipedia bukan berdasarkan kategorinya, tetapi dengan kontennya, maka, pertama, kami akan kehilangan informasi berdasarkan kategorinya, tetapi penting, dan kedua, kami akan mendapatkan sistem degenerasi - yang, melalui teks, dikelompokkan dan dibuat model pengklasifikasi. Kualitas akhir mungkin akan lebih buruk daripada dengan pendekatan terpisah. Meskipun saya tidak memeriksa.
Langkah 3. Membangun model sendiri, bertarung, data
Kami menggunakan pilihan data tempur kami dan menyerahkan setiap dokumen ke input model dari langkah 2. Model mengembalikan vektor perkiraan. Kami menggunakan vektor ini sebagai vektor fitur untuk dokumen yang dimaksud. Sebagai hasilnya, setelah memproses semua sampel pelatihan dokumen tempur kami, kami mendapatkan tabel dalam bentuk standar untuk pembelajaran mesin - label kelas, satu set tanda numerik. Kami menyebut tabel ini satu set pelatihan.
Kami membuat sampel pelatihan sebuah classifier yang dapat mengevaluasi konten informasi dari atribut individual. Pohon keputusan dan setiap variasi hutan acaknya sangat cocok. Tanda-tanda yang paling informatif adalah kumpulan artikel Wikipedia yang tidak hanya memiliki tema serupa dengan tema dokumen pertempuran kita, tetapi, yang paling penting, topik artikel ini memungkinkan kita untuk memisahkan kelas pertempuran kita dengan baik. Pada iterasi pertama, histogram keinformatifan tanda biasanya cukup datar - beberapa kelompok informatif dan ekor panjang hampir sama dalam hal keinformatifan dengan ratusan tanda yang tersisa.
Setelah mempelajari histogram dari konten informasi karakter, titik belok ditentukan secara empiris setiap kali, dan sekitar 10 hingga 30% dari kluster pergi ke iterasi berikutnya. Inti dari iterasi adalah artikel dari kluster informatif terpilih dipilih, diserahkan ke langkah 1-3, di mana mereka dikelompokkan lagi, dua pengklasifikasi dibangun lagi, dan semuanya berakhir dengan analisis histogram konten informasi. Ini akan membutuhkan 3-4 iterasi.
Ternyata pada data kami tanda-tanda digital, terutama angka-angka tahun, memiliki bobot yang sangat kuat dan menyeret keinformatifan seluruh gugus ke diri mereka sendiri. Sebagai hasil logis, kluster yang dikhususkan untuk acara olahraga tahunan menjadi yang paling informatif - kumpulan angka dan tanggal, kosa kata yang sempit. Saya harus menghapus semua angka dalam teks anotasi artikel (pada langkah kedua). Menjadi terasa lebih baik, kelompok artikel yang benar-benar memiliki subjek yang ditargetkan mulai menonjol (seperti yang kita bayangkan). Pada saat yang sama, kluster tak terduga muncul yang secara logis jatuh pada misi tempur kami, memiliki kosa kata yang tepat, tetapi sangat sulit untuk menebak apriori kegunaan kluster tersebut.
Langkah 4. Finalisasi model
Setelah beberapa kali pengulangan langkah 1-3, kami memiliki sejumlah artikel yang masuk akal dari Wikipedia, yang topiknya membantu membagikan dokumen pertempuran kami. Kami sedang memperluas pilihan dengan artikel serupa dalam bahasa lain yang menarik bagi kami dan membangun cluster akhir, kali ini puluhan. Cluster ini dapat digunakan dalam dua cara - baik membangun classifier mirip dengan langkah 2, dan menggunakannya untuk memperluas vektor fitur digital dalam misi pertempuran Anda, atau menggunakan set teks ini sebagai sumber kosakata tambahan dan mengintegrasikannya ke dalam classifier tempur Anda. Kami menggunakan cara kedua.
Classifier tempur kami adalah ansambel dua model - bayes naif terpotong dan xgboost. Bayes Naif bekerja pada gram panjang, ini adalah gram dengan panjang dari 1 hingga 16 elemen, dan masing-masing gram menemukan totalnya menjadi salah satu kelas, tetapi Bayes tidak membuat keputusan akhir - itu hanya memberikan jumlah bobot gram yang terkait dengan masing-masing dari kelas. Xgboost menerima output bayes, pengklasifikasi lain dan beberapa atribut digital yang dibangun secara independen sesuai dengan teks, dan xgboost sudah memberikan model akhir dan penilaian akhir. Pendekatan ini memudahkan untuk menghubungkan set teks ke model gram bayes, termasuk set artikel Wikipedia yang dihasilkan, dan xgboost sudah mencari pola dalam bentuk reaksi khas cluster wikipedia terhadap teks pertempuran.
Hasil dan Kesimpulan
Hasil pertama memberi peningkatan dari akurasi 60% bersyarat menjadi 62%. Saat mengganti anotasi artikel Wikipedia di langkah 4 dengan artikel kempis itu sendiri, akurasinya meningkat menjadi 66%. Hasilnya wajar, karena ukuran anotasi adalah dua atau tiga frasa, dan ukuran artikel adalah urutan besarnya lebih besar. Materi yang lebih linguistik - efek yang lebih tinggi.
Kita harus berharap bahwa setelah menyelesaikan seluruh prosedur pada teks artikel, daripada anotasi, peningkatan kualitas akan lebih besar, tetapi sudah ada masalah nomor teknis - sulit untuk memompa keluar dan memproses seluruh Wikipedia, atau bagian yang terlihat (jika Anda memulai bukan dari iterasi pertama). Juga, jika Anda awalnya menggunakan tidak hanya bahasa Inggris, tetapi semua bahasa yang menarik, Anda masih bisa memenangkan sesuatu yang lain. Dalam hal ini, pertumbuhan volume yang diproses berlipat ganda, dan bukan berdasarkan urutan besarnya, seperti pada kasus pertama.
Vektor dokumen semantik
Untuk setiap dokumen, vektor dibangun dari hubungan dokumen dengan topik yang diberikan berdasarkan kategori Wikipedia. Vektor dihitung biayanya dengan metode yang dijelaskan pada langkah 3 atau oleh gram bayes kami. Dengan demikian, dokumen pertempuran dapat dikelompokkan sesuai dengan vektor-vektor ini dan mendapatkan pengelompokan dokumen pertempuran berdasarkan subjek. Tetap hanya untuk meletakkan tagar dan setiap dokumen baru sudah bisa jatuh ke dalam database dengan tag. Yang kemudian bisa dicari pengguna. Ini terjadi jika Anda membubuhkan tag secara eksplisit dan terlihat oleh pengguna. Ini terlihat modis, walaupun saya bukan pendukung.
Pencarian adaptif
Metode yang lebih menarik menggunakan vektor dokumen semantik adalah pencarian adaptif. Mengamati aktivitas pengguna, pada dokumen mana ia tinggal dan yang mana ia bahkan tidak membaca, Anda dapat menguraikan bidang minat pengguna dalam arti jangka panjang (setelah semua, pengguna juga memiliki pembagian tanggung jawab dan semua orang terutama mencari sendiri) dan dalam kerangka sesi pencarian saat ini.
Dokumen dengan topik serupa memiliki vektor semantik yang serupa dengan ukuran kosinus tinggi, dan ini memungkinkan Anda untuk mengevaluasi dokumen dalam hasil pencarian dengan cepat sesuai dengan tingkat kepatuhan yang diharapkan dengan kepentingan pengguna, sehingga Anda dapat menambah dokumen yang diperlukan dalam hasil pencarian.
Akibatnya, bahkan dengan permintaan pencarian yang identik untuk setiap pengguna, hasil pencarian dapat dipersonalisasi untuknya dan tergantung pada dokumen mana pada langkah sebelumnya yang diminati pengguna, langkah pencarian berikutnya akan disesuaikan dengan kebutuhan pengguna, bahkan jika permintaan pencarian itu sendiri tidak berubah.
Kami sekarang sedang mengerjakan masalah pencarian adaptif.
Pengujian Hipotesis Bisnis
Bisnis secara berkala hadir dengan ide-ide cemerlang yang sangat sulit diimplementasikan. Kita harus belajar menemukan dokumen dengan deskripsi mereka, tanpa memiliki sampel mark-up untuk pelatihan, atau kemampuan untuk menyerahkan kepada penilai beberapa set dokumen untuk penandaan. Ini biasanya terjadi ketika dokumen target jarang ditemukan sehubungan dengan aliran umum dokumen, dan sebagai hasilnya, dengan mengirimkan kumpulan 10 ribu dokumen kepada penilai tanpa penyaringan awal, Anda bisa mendapatkan 1-2 hasil yang diperlukan atau bahkan lebih sedikit.
Pendekatan kami adalah menciptakan proses belajar berulang berdasarkan vektor semantik. Pada langkah pertama, kami menemukan beberapa teks yang menetapkan topik target kami - ini mungkin artikel Wikipedia, atau teks dari sumber lain. Untuk setiap teks, vektor semantiknya dihasilkan. Jika topik target kompleks, aljabar set berfungsi - penyatuan, persimpangan, pengecualian beberapa topik dari yang lain. Misalnya - ada artikel Wikipedia tentang "Penelitian dan Pengembangan" dan tentang "Kosmetik", persimpangan set akan memberikan "R&D tentang kosmetik".
Semua dokumen dalam database dapat diurutkan berdasarkan tingkat kepatuhannya dengan topik yang diberikan, kemudian aljabar set bekerja pada dokumen itu sendiri sebagai berikut - dokumen tersebut dianggap relevan dengan topik jika vektor semantiknya lebih dekat dengan vektor artikel Wikipedia dari topik yang diberikan daripada rata-rata untuk database. Persimpangan - jika pada saat yang sama vektor semantik dokumen lebih dekat ke kedua topik daripada rata-rata untuk database. Operasi lain serupa.
Kami menemukan sekumpulan ratusan atau dua dokumen yang memiliki kedekatan paling dekat dengan semua topik positif dan, pada saat yang sama, kedekatan terdekat dengan semua topik negatif (jika kami tidak tertarik dengan masalah keuangan dalam penelitian yang kami cari, kami akan menetapkan artikel dari kategori "Keuangan" sebagai contoh negatif) ) Kami akan memberikan dokumen-dokumen ini kepada penilai, mereka akan menemukan beberapa contoh positif di dalamnya, berdasarkan contoh-contoh ini kita akan mencari dokumen lain dengan vektor semantik dekat, menandai mereka, dan pada output kita akan mendapatkan dokumen yang cukup untuk kelas positif untuk membangun classifier yang nyaman. Mungkin diperlukan beberapa iterasi.
Ringkasan
Pendekatan yang dijelaskan memungkinkan secara otomatis, tanpa analisis manual, untuk memilih dari Wikipedia atau kumpulan teks sumber lain yang membantu menyelesaikan masalah klasifikasi. Dengan hanya menghubungkan cluster dari Wikipedia ke classifier yang berfungsi, orang dapat mengharapkan peningkatan kualitas yang signifikan, tanpa memerlukan adaptasi dari classifier itu sendiri.
Yah, pencarian adaptif itu menarik.