DeterminePageLanguage
ฟังก์ชั่นที่เรียกว่า มันอยู่ในไฟล์components/translate/core/language_detection/language_detection_util.cc
โครเมี่ยมการตรวจสอบครั้งแรกHTML lang
แอตทริบิวต์และถ้ามันไม่ได้อยู่มันตรวจสอบหัวContent-Language
HTTP cld3
จากนั้นก็จะได้รับการคาดการณ์จาก
ตรวจจับภาษากระชับ v3 (หรือ CLD3) เป็นรูปแบบเครือข่ายประสาทเทียมสำหรับการระบุภาษา สถานะ README:
รหัสการอนุมานจะแยกอักขระ ngrams ออกจากข้อความอินพุตและคำนวณเศษส่วนของแต่ละครั้งที่ปรากฏขึ้น ตัวอย่างเช่นดังที่แสดงในภาพด้านล่างหากข้อความอินพุตคือ "Banana" ดังนั้นหนึ่งใน trigrams ที่สกัดคือ "ana" และเศษส่วนที่เกี่ยวข้องคือ 2/4 ngrams จะถูกแฮชให้เป็น id ภายในช่วงเล็ก ๆ และแต่ละ id จะถูกแสดงด้วยเวกเตอร์การฝังที่หนาแน่นโดยประมาณระหว่างการฝึก
แบบจำลองเฉลี่ย embeddings ที่สอดคล้องกับแต่ละประเภท ngram ตามเศษส่วนและ embeddings เฉลี่ยจะถูกตัดแบ่งเพื่อสร้างชั้นฝัง
พวกเขาดาวน์โหลดสำเนาของเว็บไซต์จำนวนมากและจ่ายเงินให้คนดูข้อความบนเว็บไซต์เหล่านั้นและพูดภาษาที่พวกเขาเขียนมาจากนั้นพวกเขาแบ่งข้อความออกเป็นn-grams (กลุ่มตัวอักษรn ) และอื่น ๆ และใช้เครือข่ายประสาทเทียมเพื่อเรียนรู้การแมประหว่างการแจกแจง n-gram และภาษา
ดังนั้นตอนนี้พวกเขามี 2 ตัวแปร:
language
ซึ่งถูกตั้งค่าจาก HTML หรือส่วนหัว (จำได้ว่าแอตทริบิวต์ HTML มีความสำคัญกว่าหากมีทั้งคู่)
cld_language
ซึ่งเป็นคำทำนายตามความถี่ของกลุ่มตัวอักษรในหน้า
จากนั้นเราก็ตีชุดคำสั่ง if นี้ (ฉันได้แก้ไขส่วนที่พวกเขาส่งข้อมูลการวิเคราะห์เกี่ยวกับภาษาที่ไม่ตรงกัน)
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 มีขนาดเล็กและทำงานในเครื่อง อันที่จริงมันเป็นโอเพนซอร์ซและพวกเขาแจกจ่ายแบบจำลองที่ผ่านการฝึกอบรมมาก่อน (แม้ว่าจะไม่มีรหัสสำหรับการฝึกอบรมรูปแบบและข้อมูลที่ใช้) คุณสามารถใช้มันในโครงการของคุณ
แม้จะมีการผูก Python (ไม่เป็นทางการและไม่มีการระบาย) สำหรับรหัส C ++ ดั้งเดิม (คุณจะต้องติดตั้งCython )
pip install cld3