Mengapa mengapa

Untuk waktu yang lama, berbagai jenis algoritma pembelajaran mesin mendapatkan popularitas. Juga, terima kasih kepada perusahaan besar yang mendorong kemajuan teknologi, banyak produk opensource telah muncul. Salah satunya adalah Fasttext, yang akan dibahas di bawah ini.
Fasttext - pengembangan dari Facebook. Tujuan utama dari program ini adalah klasifikasi teks. Klasifikasi teks mungkin diperlukan untuk:
- menggabungkan informasi tekstual ke dalam kelompok "kesamaan" (berita tentang satu topik)
- pengelompokan teks dengan topik serupa ke dalam satu grup (berita tentang mobil)
- mencari informasi yang mungkin merupakan spam
- pencarian clickbait
- ...
Sebenarnya, ada banyak pilihan dan tidak ada gunanya mendaftar semuanya, idenya harus jelas.
Pelatihan pertama
Pada halaman perpustakaan ada
instalasi langkah-demi-langkah dan
instruksi pelatihan pertama . Saya tidak akan memikirkan mereka.
rotiMereka juga memiliki model yang sudah jadi dalam berbagai bahasa untuk klasifikasi di
sini. Pengaturan perpustakaan
Masalah pelatihan adalah individualitas parameter. Tidak ada parameter yang memberikan hasil yang sangat baik. Anda dapat menemukan banyak (
atau tidak ) artikel di Internet dengan contoh parameter dan mereka mungkin tidak cocok untuk Anda, karena mereka akan memberikan hasil yang tidak memuaskan.
Hanya secara empiris Anda dapat memilih parameter yang cocok untuk Anda. Di bawah ini adalah daftar yang secara signifikan mempengaruhi hasil:
-
Dim -
dim mengontrol ukuran vektor (
mentega ): semakin banyak, semakin banyak informasi yang dapat ditangkap, tetapi ini membutuhkan lebih banyak data. Tetapi jika terlalu banyak data, proses pelatihan akan lebih lambat. Standarnya adalah 100 pengukuran. Mulai dengan 150 dan pilih nilai optimal untuk Anda.
-
lr - kecepatan belajar. Jika parameternya sangat kecil, maka modelnya menjadi lebih sensitif terhadap teks dan mungkin tidak membedakan teks yang serupa, tetapi jika parameternya sangat besar, sebaliknya, dapat โmengatakanโ bahwa teksnya mirip, walaupun dalam kenyataannya tidak akan seperti itu. Mulai dengan 0,1 (Default 0,05).
-
zaman - jumlah era. Ini adalah jumlah lintasan sesuai dengan data Anda. Lebih banyak - lebih baik (tapi, sayangnya, tidak selalu). Ini meningkatkan waktu pelatihan. Mulai dari 150 (Default adalah 5).
-
model pembelajaran . Baca deskripsi dari Facebook. Cukup jelas.
-
loss - bagaimana perbandingan akan terjadi. Semuanya di sini sangat individual dan tergantung pada data.
penyimpangan kecilSangat keren bahwa bahkan tanpa pengetahuan yang memadai dalam klasifikasi teks dan mekanisme internal jaringan saraf, Anda bisa mendapatkan model yang berfungsi penuh.
Persiapan teks
Teks input juga penting. Semakin baik teks, semakin baik informasi dari model. Aturan dasar untuk menyiapkan teks untuk pelatihan:
- hapus semua tag
- dilemparkan ke huruf kecil
- hapus karakter tanda baca
- hapus tag hash, tautan
- kecualikan kata-kata berhenti
- kecualikan kata-kata kecil (1,2,3 karakter. di sini semua orang memutuskan untuk datanya)
Beberapa menulis bahwa Anda cukup mengarahkan teks ke dalam model dan melatih. Opsi ini tidak cocok untuk saya. Saya cenderung percaya bahwa tanpa preprocess model yang berkualitas buruk diperoleh.
Persiapan teks untuk klasifikasi
Aturan yang sama berlaku di sini, tetapi pengalaman menunjukkan bahwa aturan ini dapat ditambah dengan lemmatization atau stamming. Dengan mereka, hasilnya dapat ditingkatkan secara signifikan (
atau diperburuk ). Selain itu, ketika Anda sudah membentuk cluster, jangan lupa bahwa algoritma clustering juga harus diterapkan pada cluster ini, tetapi dengan sangat hati-hati, karena Anda dapat mengelompokkan topik yang sama ke dalam satu cluster. Ini sangat jelas dalam olahraga: model mengerti bahwa berita itu dari sepakbola. Namun sangat sulit untuk membuat model membedakan kejuaraan Spanyol dari kejuaraan Italia.
Bahasa pemrograman
lebih dari benarSeperti yang dikatakan dalam Family Guy: "Ya, tidak ada yang peduli "
Untuk melatih model, Anda dapat memilih PHP (ambil, karena sebagian besar situs ditulis di atasnya) dan Python (ada perpustakaan untuk itu). Tapi ada
momen yang sangat lucu . Anda masih harus melatih model dengan menjalankan fasttext dari baris perintah jika waktu pelatihan mahal untuk Anda. Jadi, tidak masalah apa yang menulis kode untuk pelatihan (apa yang nyaman, tulis itu).
Adapun mekanisme pengelompokan, itu sedikit lebih rumit (
atau lebih sederhana ). Jika Anda menyukai sepeda (
kendalikan semua proses sendiri dan Anda memerlukan mekanisme kontrol yang fleksibel ) tulislah dalam php (jika situs tersebut menggunakan php). Jika Anda tidak ingin menulis perpustakaan dan ada pilihan bahasa, maka mungkin lebih baik untuk mengambil Python. Saya tidak melihat perbedaan signifikan dalam kecepatan (dalam kecepatan kode, dan tidak dalam kecepatan penulisan). Terserah kamu.
Alih-alih sebuah kesimpulan
Saya memiliki model yang dibuat hanya berdasarkan konten berita selama beberapa hari terakhir. Ukuran kata-kata di dalamnya adalah sekitar
40.000 . Anda bisa
bermain dengannya. Namun, perlu diingat bahwa:
- Ini bukan model universal. Dia hanya melatih konten berita.
- model tidak mengandung semua berita dari database, tetapi hanya sebuah editorial (ini cukup untuk menyelesaikan tugas). Ini berarti bahwa model tersebut dapat memberikan persentase rendah pada berita serupa.