Chrome को कैसे पता है कि पृष्ठ किस भाषा में है?


10

मैंने अभी Google Chrome में एक वेब पेज खोला है, और यह कहता है कि "यह पृष्ठ जापानी में है, क्या आप इसका अनुवाद करना चाहेंगे?"।

अनुवाद के लिए पूछना संभवतः Google को सामग्री भेजेगा, लेकिन पहली बार में भाषा की पहचान कैसे की जाती है? क्या यह स्थानीय रूप से ब्राउज़र में किया जाता है? या इससे Google को पेज भी भेजा जाता है? यदि हां, तो क्या मुझे पहले अनुमति नहीं मांगी जानी चाहिए? पृष्ठ में भाषा को इंगित करने के लिए स्वयं कोई मार्कअप नहीं है, और यह एक आंतरिक इंट्रानेट पृष्ठ है, ताकि मुझे यह सुनिश्चित न हो कि Google को इसकी सामग्री तक पहुंच प्राप्त होनी चाहिए।


जवाबों:


10

Chrome ब्राउज़र कई कारकों को देखते हुए, पृष्ठ की भाषा की पहचान या कम से कम अनुमान लगा सकता है:

  • http हेडर http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
  • चरित्र एन्कोडिंग का उपयोग किया
  • एन्कोडिंग मेटा टैग
  • पृष्ठ पर वास्तविक पात्रों या शब्दों का एक सांख्यिकीय विश्लेषण

यह स्थानीय रूप से बिना इंटरनेट कनेक्शन या Google को रिपोर्ट किए बिना किया जा सकता है।

सामग्री का अनुवाद निश्चित रूप से अनुवाद के लिए पृष्ठ की सामग्री Google सर्वर को भेजेगा।


मैं एक बार क्रोम में एक XML फ़ाइल देख रहा था, और उसने मुझे बताया कि मैं एक पृष्ठ देख रहा था ... कुछ यूरोपीय भाषा, बेल्जियम शायद? यह मुझे सुझाव देगा कि पाठ का कुछ विश्लेषण होता है, और मेरे मामले में थोड़ा गलत हो गया। मैं यह नहीं देख सकता कि अंग्रेजी XML में एन्कोडिंग क्यों होती जो बेल्जियम को इंगित करती। लेकिन हाँ, जापानी जैसी किसी चीज़ के लिए एन्कोडिंग एक मृत जीव होगा।
कैम जैक्सन

जापानी के लिए UTF-8 एक सस्ता कैसे है?
थिलो

@CamJackson मुझे यकीन है कि यह बेल्जियम का सुझाव नहीं दे रहा था ... शायद यह डच था और क्रोम को एकल पत्र 'Sm' मिला
पीटर स्मिट

1
यह पूरी तरह से पेज एन्कोडिंग द्वारा नहीं है। मेरे पास एक ब्लॉग (अंग्रेजी में) है जो रूसी टिप्पणी स्पैम का एक सभ्य राशि प्राप्त करता है। अक्सर जब मैं अपना स्पैम बकेट देख रहा होता हूं तो Chrome मुझे पृष्ठ का अनुवाद करने के लिए प्रेरित करता है। यह स्पष्ट रूप से (मेरे लिए) सामग्री की जांच करना और "अन्य भाषा" सामग्री के साथ ट्रिगर होना एक निश्चित प्रतिशत सीमा से अधिक है।
एले

1
@ थिलो, यह यूटीएफ -8 नहीं है जो दिखाता है कि यह जापानी है, लेकिन यदि किसी पृष्ठ पर वर्णों का एक बड़ा प्रतिशत जापानी यूनिकोड की सीमा से है, तो आपको अपना जवाब मिल गया है (स्वचालित भाषा-पहचान हमेशा अनुमानित कार्य है) । वर्ण-एन्कोडिंग जाँच के स्पष्ट विधि न करना, मुझे नहीं लगता कि यह है कि यह करता है (या कम से कम की जरूरत करने के लिए) का पता लगाने के लिए एक सर्वर पृष्ठ को भेजना। क्या आपने chrome.dllहाल ही में आकार देखा है ? यह बहुत बड़ा है! मैंने हाल ही में (बड़े पैमाने पर) कोड के माध्यम से नहीं देखा है, लेकिन इसमें कोई संदेह नहीं है कि भाषा-पहचान के लिए एक फ़ंक्शन या दो अंतर्निहित हैं (यह कठिन नहीं है)।
सिनेटेक

1

फंक्शन को कहा जाता है DeterminePageLanguage। यह फ़ाइल में हैcomponents/translate/core/language_detection/language_detection_util.cc

Chrome पहले HTML langविशेषता की जाँच करता है और यदि वह मौजूद नहीं है तो वह Content-LanguageHTTP हेडर की जाँच करता है । फिर इससे एक भविष्यवाणी मिलती हैcld3

कॉम्पैक्ट भाषा डिटेक्टर v3 (या CLD3) भाषा की पहचान के लिए एक तंत्रिका नेटवर्क मॉडल है। README में कहा गया है:

इनफेक्शन कोड इनपुट टेक्स्ट से कैरेक्टर नग निकालता है और उनमें से प्रत्येक के प्रकट होने के समय की गणना करता है। उदाहरण के लिए, जैसा कि नीचे दिए गए आंकड़े में दिखाया गया है, यदि इनपुट टेक्स्ट "केला" है, तो निकाले गए ट्रिगर्स में से एक "एना" है और संबंधित अंश 2/4 है। Ngrams को एक छोटी सी सीमा के भीतर एक आईडी पर नीचे रखा गया है, और प्रत्येक आईडी को प्रशिक्षण के दौरान अनुमानित घने एम्बेडिंग वेक्टर द्वारा दर्शाया गया है।

मॉडल फ्रिक्शन के अनुसार प्रत्येक एनग्राम प्रकार के अनुरूप एम्बेडिंग को औसत करता है, और एंबेडेड परत का उत्पादन करने के लिए एंबेडेड एंबेडिंग को संक्षिप्त किया जाता है।

इसलिए अनिवार्य रूप से, उन्होंने वेबसाइटों के एक समूह की प्रतियों को डाउनलोड किया और किसी को उन वेबसाइटों पर पाठ को देखने के लिए भुगतान किया और कहा कि वे किस भाषा में लिखी गई हैं। आगे वे पाठ को एन-ग्राम ( एन के समूह) में विभाजित करते हैं। अक्षर के ) और इसी तरह और एन-ग्राम वितरण और भाषाओं के बीच मानचित्रण सीखने के लिए एक तंत्रिका नेटवर्क का उपयोग किया।

तो अब उनके 2 चर हैं:

  • language जो या तो HTML या हेडर से सेट किया गया है (याद रखें कि यदि दोनों मौजूद हैं, तो HTML विशेषता पूर्वता लेता है)
  • cld_language जो पृष्ठ पर अक्षरों के समूहों की आवृत्तियों पर आधारित एक भविष्यवाणी है

तब हमने इस श्रृंखला को इफ-स्टेटमेंट्स में हिट किया है (मैंने उस हिस्से को संपादित किया है जहाँ वे भाषा बेमेल के बारे में एनालिटिक्स डेटा भेजते हैं)

  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 छोटा है और स्थानीय रूप से चलाया जाता है। वास्तव में, यह खुला स्रोत है और वे एक पूर्व-प्रशिक्षित मॉडल वितरित करते हैं (हालांकि मॉडल के प्रशिक्षण के लिए कोड और उनके द्वारा उपयोग किए गए डेटा उपलब्ध नहीं हैं)। आप इसे अपनी परियोजनाओं में उपयोग कर सकते हैं।

यहां तक कि नहीं है पायथन बाइंडिंग मूल सी के लिए (अनौपचारिक और unmaintained) ++ कोड (आप स्थापित करने की आवश्यकता होगी Cython )

pip install cld3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.