İşlev çağrılır DeterminePageLanguage
. Dosyadacomponents/translate/core/language_detection/language_detection_util.cc
Chrome önce HTML lang
özelliğini kontrol eder ve mevcut değilse Content-Language
HTTP üstbilgisini kontrol eder . Sonra bir tahmin alır cld3
.
Kompakt Dil Dedektör v3 (veya CLD3) dil tanımlama için bir sinir ağı modelidir. README şunları ifade eder:
Çıkarım kodu, giriş metninden karakter ngramları çıkarır ve her birinin kaç kez göründüğünü hesaplar. Örneğin, aşağıdaki şekilde gösterildiği gibi, giriş metni "muz" ise, çıkarılan trigramlardan biri "ana" dır ve karşılık gelen kesir 2/4'tür. Ngramlar, küçük bir aralıktaki bir kimliğe hash edilir ve her bir id, eğitim sırasında tahmin edilen yoğun bir gömme vektörü ile temsil edilir.
Model, kesirlere göre her bir ngram tipine karşılık gelen düğmelerin ortalamasını alır ve ortalama düğmeler gömme katmanını üretmek için birleştirilir.
Temelde, bir grup web sitesinin kopyalarını indirdiler ve birisine bu web sitelerindeki metne bakıp hangi dilde yazıldıklarını söylemeleri için para verdiler. Sonra metni n-grama ( n harfli gruplar ) ayırdılar . ve n-gram dağılımları ile diller arasındaki bir haritayı öğrenmek için bir sinir ağı kullandılar.
Şimdi 2 değişkenleri var:
language
HTML veya başlıktan ayarlanır (her ikisi de varsa HTML özelliğinin öncelikli olduğunu unutmayın)
cld_language
Bu, sayfadaki harf gruplarının sıklıklarına dayalı bir tahmindir
Sonra bu if-ifadeleri serisine ulaştık (dil uyumsuzlukları hakkında analiz verilerini gönderdikleri kısmı düzenledim)
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 küçüktür ve yerel olarak çalıştırılır. Aslında, açık kaynak kodludur ve önceden eğitilmiş bir modeli dağıtırlar (modeli eğitmek için kullandıkları kod ve kullandıkları veriler mevcut olmasa da). Projelerinizde kullanabilirsiniz.
Orijinal C ++ kodu için Python bağları (resmi olmayan ve bakımsız) bile var ( Cython'u yüklemeniz gerekecek )
pip install cld3