Hàm được gọi DeterminePageLanguage
. Nó có trong tập tincomponents/translate/core/language_detection/language_detection_util.cc
Trước tiên, Chrome sẽ kiểm tra thuộc tính HTMLlang
và nếu không có, nó sẽ kiểm tra Content-Language
tiêu đề HTTP . Sau đó, nó nhận được một dự đoán từ cld3
.
Bộ phát hiện ngôn ngữ nhỏ gọn v3 (hoặc CLD3) là một mô hình mạng thần kinh để nhận dạng ngôn ngữ. Các README tuyên bố:
Mã suy luận trích xuất các ký tự từ các văn bản đầu vào và tính tỷ lệ số lần mỗi lần xuất hiện. Ví dụ, như trong hình bên dưới, nếu văn bản đầu vào là "chuối", thì một trong những bát quái được trích xuất là "ana" và phân số tương ứng là 2/4. Các ngram được băm xuống một id trong một phạm vi nhỏ và mỗi id được thể hiện bằng một vectơ nhúng dày đặc ước tính trong quá trình đào tạo.
Mô hình tính trung bình các nhúng tương ứng với từng loại ngram theo các phân số và các nhúng nhúng trung bình được nối để tạo ra lớp nhúng.
Vì vậy, về cơ bản, họ đã tải xuống các bản sao của một loạt các trang web và trả tiền cho ai đó để xem văn bản trên các trang web đó và nói ngôn ngữ nào họ viết. Tiếp theo, họ chia văn bản thành n-gram (nhóm n chữ cái), v.v. và đã sử dụng một mạng lưới thần kinh để tìm hiểu ánh xạ giữa các phân phối n-gram và ngôn ngữ.
Vì vậy, bây giờ họ có 2 biến:
language
được đặt từ HTML hoặc tiêu đề (nhắc lại rằng thuộc tính HTML được ưu tiên nếu có cả hai)
cld_language
đó là một dự đoán dựa trên tần số của các nhóm chữ cái trên trang
Sau đó, chúng tôi nhấn vào loạt câu lệnh if này (Tôi đã chỉnh sửa phần mà họ gửi dữ liệu phân tích về sự không phù hợp ngôn ngữ)
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 nhỏ và được chạy cục bộ. Trên thực tế, đó là nguồn mở và họ phân phối một mô hình được đào tạo trước (mặc dù mã đào tạo mô hình và dữ liệu họ sử dụng không có sẵn). Bạn có thể sử dụng nó trong các dự án của bạn.
Thậm chí còn có các ràng buộc Python (không chính thức và không rõ ràng) cho mã C ++ gốc (bạn sẽ cần cài đặt Cython )
pip install cld3