Saya pikir jawaban yang paling terperinci dapat ditemukan dalam karya ekstensif Mehryar Mohri tentang topik ini. Berikut ini tautan ke salah satu slide kuliahnya tentang topik ini: http://www.cims.nyu.edu/~mohri/amls/lecture_3.pdf
Masalah deteksi bahasa adalah bahwa bahasa manusia (kata-kata) memiliki struktur. Sebagai contoh, dalam bahasa Inggris, sangat umum untuk huruf 'u' untuk mengikuti huruf 'q,' sementara ini tidak terjadi dalam bahasa Arab yang ditransliterasikan. n-gram bekerja dengan menangkap struktur ini. Dengan demikian, kombinasi huruf tertentu lebih mungkin dalam beberapa bahasa daripada yang lain. Ini adalah dasar dari klasifikasi n-gram.
Bag-of-words, di sisi lain, tergantung pada pencarian melalui kamus besar dan pada dasarnya melakukan pencocokan templat. Ada dua kelemahan utama di sini: 1) setiap bahasa harus memiliki kamus luas kata-kata pada file, yang akan memakan waktu yang relatif lama untuk mencari, dan 2) tas kata-kata akan gagal jika tidak ada kata dalam set pelatihan termasuk dalam set pengujian.
Dengan asumsi bahwa Anda menggunakan bigrams (n = 2) dan ada 26 huruf dalam alfabet Anda, maka hanya ada 26 ^ 2 = 676 kemungkinan bigrams untuk alfabet itu, banyak yang tidak akan pernah terjadi. Oleh karena itu, "profil" (untuk menggunakan kata-kata detektor bahasa) untuk setiap bahasa memerlukan basis data yang sangat kecil. Klasifikasi sekumpulan kata, di sisi lain akan membutuhkan kamus lengkap untuk bahasa SETIAP untuk menjamin bahwa suatu bahasa dapat dideteksi berdasarkan pada kalimat apa pun yang diberikan.
Jadi singkatnya - setiap profil bahasa dapat dengan cepat dihasilkan dengan ruang fitur yang relatif kecil. Menariknya, n-gram hanya berfungsi karena huruf tidak digambar iid dalam bahasa - ini secara eksplisit meningkatkan.
Catatan: persamaan umum untuk jumlah n-gram untuk kata adalah l ^ n di mana l adalah jumlah huruf dalam alfabet.
Huruf N-gram digunakan sebagai ganti kata-kata karena beberapa alasan:
1) Daftar kata yang diperlukan untuk bahasa tertentu cukup besar, mungkin 100.000 jika Anda menganggap cepat, lebih cepat, tercepat, cepat, cepat, cepat, ... karena semua kata berbeda. Untuk 80 bahasa, Anda membutuhkan sekitar 80x lebih banyak kata, menghabiskan banyak ruang - 50+ megabita.
2) Jumlah trigram huruf untuk alfabet 26 huruf adalah 26 ** 3 atau sekitar 17.000 dan untuk quadgram (N = 4) sekitar 450.000 mencakup SEMUA bahasa menggunakan alfabet itu. Angka serupa tetapi agak lebih besar untuk N-gram dalam huruf lebih besar dari 30-100 karakter. Untuk bahasa CJK dengan 4000+ huruf dalam skrip Han, unigrams (N = 1) sudah cukup. Untuk beberapa skrip Unicode, hanya ada satu bahasa per skrip (Yunani, Armenia), jadi tidak diperlukan kombinasi huruf (disebut nil-gram N = 0)
3) Dengan kata-kata, Anda tidak memiliki informasi sama sekali ketika diberi kata tidak dalam kamus, sedangkan dengan huruf N-gram Anda sering memiliki setidaknya beberapa kombinasi huruf yang berguna di dalam kata itu.
CLD2 menggunakan quadgram untuk sebagian besar skrip Unicode (huruf) termasuk Latin, Cyrillic, dan Arab, unigrams untuk skrip CJK, nilgram untuk skrip lain, dan juga menyertakan sejumlah kata lengkap yang cukup khas dan cukup umum serta pasangan kata untuk membedakan dalam kelompok-kelompok sulit bahasa yang serupa secara statistik, seperti bahasa Indonesia dan Melayu. Surat bigrams dan trigram mungkin berguna untuk membedakan di antara sejumlah kecil bahasa (sekitar delapan bahasa, lihat https://docs.google.com/document/d/1NtErs467Ub4yklEfK0C9AYef06G_1_9NHL5dPuKIH7k/edit), tetapi tidak berguna untuk membedakan lusinan bahasa. Jadi, CLD2 menggunakan quadgram, yang berasosiasi dengan setiap kombinasi huruf, tiga bahasa teratas yang paling mungkin menggunakan kombinasi itu. Ini memungkinkan mencakup 80 bahasa dengan sekitar 1,5 MB tabel dan 160 bahasa lebih detail dengan sekitar 5MB tabel.
sumber