Fungsi ini disebut DeterminePageLanguage
. Ada dalam filecomponents/translate/core/language_detection/language_detection_util.cc
Chrome terlebih dahulu memeriksa atribut HTMLlang
dan jika tidak ada, periksa Content-Language
header HTTP . Kemudian mendapat prediksi dari cld3
.
The Compact Bahasa Detector v3 (atau CLD3) adalah model jaringan saraf untuk identifikasi bahasa. Status README:
Kode inferensi mengekstraksi ngram karakter dari teks input dan menghitung fraksi setiap kali mereka muncul. Misalnya, seperti yang ditunjukkan pada gambar di bawah, jika teks input adalah "pisang", maka salah satu trigram yang diekstraksi adalah "ana" dan fraksi yang sesuai adalah 2/4. Ngram di hash ke id dalam rentang kecil, dan setiap id diwakili oleh vektor embedding padat yang diperkirakan selama pelatihan.
Model rata-rata embeddings yang sesuai dengan masing-masing jenis ngram sesuai dengan fraksi, dan rata-rata embeddings digabungkan untuk menghasilkan lapisan embedding.
Jadi pada dasarnya, mereka mengunduh salinan dari sekelompok situs web dan membayar seseorang untuk melihat teks di situs web tersebut dan mengatakan bahasa apa yang digunakan. Selanjutnya mereka membagi teks menjadi n-gram (grup n huruf) dan sebagainya dan menggunakan jaringan saraf untuk mempelajari pemetaan antara distribusi n-gram dan bahasa.
Jadi sekarang mereka memiliki 2 variabel:
language
yang diatur dari HTML atau header (ingat bahwa atribut HTML diutamakan jika keduanya ada)
cld_language
yang merupakan prediksi berdasarkan frekuensi kelompok huruf pada halaman
Lalu kami mencapai serangkaian pernyataan jika ini (Saya telah mengedit bagian di mana mereka mengirim data analitik tentang ketidakcocokan bahasa)
if (language.empty()) {
return cld_language;
}
if (cld_language == kUnknownLanguageCode) {
return language;
}
if (CanCLDComplementSubCode(language, cld_language)) {
return cld_language;
}
if (IsSameOrSimilarLanguages(language, cld_language)) {
return language;
}
if (MaybeServerWrongConfiguration(language, cld_language)) {
return cld_language;
}
// Content-Language value might be wrong because CLD says that this page is
// written in another language with confidence. In this case, Chrome doesn't
// rely on any of the language codes, and gives up suggesting a translation.
return kUnknownLanguageCode;
CLD3 kecil dan dijalankan secara lokal. Bahkan, ini open source dan mereka mendistribusikan model pra-terlatih (meskipun kode untuk melatih model dan data yang mereka gunakan tidak tersedia). Anda dapat menggunakannya dalam proyek Anda.
Bahkan ada binding Python (tidak resmi dan tidak terawat) untuk kode C ++ asli (Anda harus menginstal Cython )
pip install cld3