Woher weiß Chrome, in welcher Sprache eine Seite ist?


10

Ich habe gerade eine Webseite in Google Chrome geöffnet und dort steht "Diese Seite ist auf Japanisch, möchten Sie sie übersetzen?".

Wenn Sie nach einer Übersetzung fragen, wird der Inhalt vermutlich an Google gesendet. Wie wird die Sprache überhaupt identifiziert? Wird dies lokal im Browser durchgeführt? Oder sendet dies die Seite auch an Google? Wenn ja, sollte ich nicht zuerst um Erlaubnis gebeten werden? Die Seite selbst hat kein Markup zur Angabe der Sprache und ist eine interne Intranetseite, sodass ich nicht sicher bin, ob Google Zugriff auf deren Inhalt haben soll.


Die Frage Warum stellt Chrome falsch fest, dass die Seite in einer anderen Sprache vorliegt und bietet eine Übersetzung an? auf StackOverflow gibt eine Reihe weiterer Informationen zu diesem Thema, insbesondere die akzeptierte Antwort von Emile
Owen Blacker

Antworten:


10

Der Chrome-Browser kann die Seitensprache anhand einer Reihe von Faktoren auf der Seite identifizieren oder zumindest erraten:

Dies kann lokal ohne weitere Internetverbindung oder Berichterstattung an Google erfolgen.

Die Übersetzung des Inhalts würde den Seiteninhalt definitiv zur Übersetzung an Google-Server senden.


Ich habe einmal eine XML-Datei in Chrome angezeigt und festgestellt, dass ich eine Seite in ... einer europäischen Sprache, vielleicht in belgischer Sprache, angezeigt habe. Dies würde mir nahe legen, dass eine Analyse des Textes stattfindet und in meinem Fall etwas schief gelaufen ist. Ich kann nicht verstehen, warum englisches XML eine Codierung gehabt hätte, die belgisch anzeigt. Aber ja, für so etwas wie Japanisch wäre die Kodierung ein totes Werbegeschenk.
Cam Jackson

Wie ist UTF-8 ein Werbegeschenk für Japaner?
Thilo

@ CamJackson Ich bin sicher, es war kein belgischer Hinweis ... Vielleicht war es niederländisch und Chrom fand den einzelnen Buchstaben 'ij'
Peter Smit

1
Es ist nicht vollständig durch Seitencodierung. Ich habe einen Blog (auf Englisch), der eine anständige Menge an russischem Kommentar-Spam erhält. Wenn ich meinen Spam-Bucket ansehe, fordert mich Chrome häufig auf, die Seite zu übersetzen. Es ist offensichtlich (für mich), den Inhalt zu untersuchen und mit dem Inhalt der "anderen Sprache" ausgelöst zu werden, der über einem bestimmten prozentualen Schwellenwert liegt.
Ale

1
@Thilo, es ist nicht UTF-8, das zeigt, dass es Japanisch ist, aber wenn ein großer Prozentsatz der Zeichen auf einer Seite aus dem japanischen Unicode-Bereich stammt, haben Sie Ihre Antwort (automatische Spracherkennung ist immer eine Vermutung) . Wenn die offensichtliche Methode zur Überprüfung der Zeichenkodierung nicht eingehalten wird, glaube ich nicht, dass sie die Seite zur Erkennung an einen Server sendet (oder zumindest senden muss ). Hast du die Größe von in chrome.dllletzter Zeit gesehen? Es ist riesig! Ich habe den (massiven) Code in letzter Zeit nicht durchgesehen, aber zweifellos sind ein oder zwei Funktionen für die Spracherkennung integriert (es ist nicht so schwer).
Synetech

1

Die Funktion wird aufgerufen DeterminePageLanguage. Es ist in der Dateicomponents/translate/core/language_detection/language_detection_util.cc

Chrome überprüft zuerst das HTML- langAttribut und, falls es nicht vorhanden ist, den Content-LanguageHTTP-Header . Dann bekommt es eine Vorhersage von cld3.

Der Compact Language Detector v3 (oder CLD3) ist ein neuronales Netzwerkmodell zur Sprachidentifikation. In der README heißt es:

Der Inferenzcode extrahiert Zeichen-Ngramme aus dem Eingabetext und berechnet den Bruchteil der Häufigkeit, mit der sie jeweils angezeigt werden. Wenn der Eingabetext beispielsweise, wie in der folgenden Abbildung gezeigt, "Banane" ist, ist eines der extrahierten Trigramme "Ana" und der entsprechende Bruch ist 2/4. Die ngramme werden innerhalb eines kleinen Bereichs auf eine ID herunter gehasht, und jede ID wird durch einen dichten Einbettungsvektor dargestellt, der während des Trainings geschätzt wird.

Das Modell mittelt die Einbettungen, die jedem n-Gramm-Typ entsprechen, gemäß den Brüchen, und die gemittelten Einbettungen werden verkettet, um die Einbettungsschicht zu erzeugen.

Im Wesentlichen haben sie Kopien einer Reihe von Websites heruntergeladen und jemanden dafür bezahlt, sich den Text auf diesen Websites anzusehen und zu sagen, in welcher Sprache sie geschrieben sind. Als nächstes teilen sie den Text in n-Gramm (Gruppen von n Buchstaben) und so weiter auf und benutzte ein neuronales Netzwerk, um eine Zuordnung zwischen n-Gramm-Verteilungen und Sprachen zu lernen.

Jetzt haben sie 2 Variablen:

  • language Dies wird entweder aus dem HTML-Code oder dem Header festgelegt (denken Sie daran, dass das HTML-Attribut Vorrang hat, wenn beide vorhanden sind).
  • cld_language Dies ist eine Vorhersage, die auf der Häufigkeit von Buchstabengruppen auf der Seite basiert

Dann treffen wir diese Reihe von if-Anweisungen (ich habe den Teil herausgeschnitten, in dem sie Analysedaten über Sprachinkongruenzen senden).

  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 ist klein und wird lokal ausgeführt. Tatsächlich ist es Open Source und sie verteilen ein vorab trainiertes Modell (obwohl der Code zum Trainieren des Modells und die von ihnen verwendeten Daten nicht verfügbar sind). Sie können es in Ihren Projekten verwenden.

Es gibt sogar Python-Bindungen (inoffiziell und nicht gepflegt) für den ursprünglichen C ++ - Code (Sie müssen Cython installieren ).

pip install cld3
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.