Bagaimana Chrome tahu bahasa apa halaman itu berada?

10

Saya baru saja membuka halaman web di Google Chrome, dan berbunyi "Halaman ini dalam bahasa Jepang, apakah Anda ingin menerjemahkannya?".

Meminta terjemahan mungkin akan mengirim konten ke Google, tetapi bagaimana bahasa diidentifikasi di tempat pertama? Apakah ini dilakukan secara lokal, di browser? Atau apakah ini juga mengirim halaman ke Google? Jika demikian, haruskah saya tidak diminta izin terlebih dahulu? Halaman itu sendiri tidak memiliki markup untuk menunjukkan bahasa, dan itu adalah halaman intranet internal, sehingga saya sama sekali tidak yakin bahwa Google harus memiliki akses ke kontennya.

Thilo
sumber
Pertanyaannya, mengapa Chrome salah menentukan halaman dalam bahasa yang berbeda dan menawarkan untuk menerjemahkan? pada StackOverflow memberikan banyak informasi lebih lanjut tentang topik ini, terutama jawaban yang diterima dari Emile
Owen Blacker

Jawaban:

10

Browser Chrome dapat mengidentifikasi, atau setidaknya menebak, bahasa halaman dengan melihat sejumlah faktor halaman:

Ini dapat dilakukan secara lokal tanpa koneksi internet lebih lanjut atau pelaporan ke Google.

Terjemahan konten pasti akan mengirim konten halaman ke server Google untuk terjemahan.

s01ipsist
sumber
Saya pernah melihat file XML di Chrome, dan memberitahu saya bahwa saya melihat halaman di ... beberapa bahasa Eropa, Belgia mungkin? Ini akan menunjukkan kepada saya bahwa beberapa analisis teks terjadi, dan sedikit salah dalam kasus saya. Saya tidak dapat melihat mengapa bahasa Inggris XML memiliki pengodean yang akan menunjukkan bahasa Belgia. Tapi ya, untuk sesuatu seperti Jepang, penyandian akan menjadi hadiah mati.
Cam Jackson
Bagaimana UTF-8 hadiah gratis untuk orang Jepang?
Thilo
@CamJackson Saya yakin itu tidak menyarankan Belgia ... Mungkin itu Belanda dan chrome menemukan satu huruf 'ij'
Peter Smit
1
Itu tidak sepenuhnya oleh pengkodean halaman. Saya memiliki blog (dalam bahasa Inggris) yang mendapat spam komentar Rusia dalam jumlah yang layak. Seringkali ketika saya melihat ember spam saya, Chrome meminta saya untuk menerjemahkan halaman. Jelas (bagi saya) memeriksa konten dan dipicu dengan konten "bahasa lain" melebihi batas persentase tertentu.
ale
1
@ Thilo, itu bukan UTF-8 yang menunjukkan bahwa itu adalah bahasa Jepang, tetapi jika sebagian besar karakter pada halaman berasal dari jajaran Unicode Jepang, maka Anda sudah mendapatkan jawaban Anda (deteksi bahasa otomatis selalu merupakan perkiraan) . Gagal metode pengecekan karakter-encoding yang jelas, saya tidak berpikir itu (atau setidaknya perlu ) mengirim halaman ke server untuk deteksi. Pernahkah Anda melihat ukuran chrome.dllbaru - baru ini? Itu besar! Saya belum melihat melalui kode (besar-besaran) baru-baru ini, tetapi tidak diragukan lagi ada fungsi atau dua built-in untuk deteksi bahasa (tidak terlalu sulit).
Synetech
1

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-Languageheader 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
Boris
sumber