← Zurück zum Blog

Spracherkennungs-API: So funktioniert Trigramm-Erkennung

Spracherkennungs-API: So funktioniert Trigramm-Erkennung

Die Spracherkennung per Trigramm-Häufigkeit bestimmt die Sprache eines Textes, indem sie die darin enthaltenen Dreizeichenfolgen zählt und die Verteilung mit vorab berechneten Profilen für jede Sprache vergleicht. Es ist ein kompaktes, schnelles statistisches Verfahren, das kein neuronales Modell braucht, und es steckt hinter dem Sprachdetektor von ipto, der 76 Sprachen abdeckt.

So funktioniert die Trigramm-Erkennung

Jede Sprache hat charakteristische Buchstabenkombinationen. Im Englischen sind Folgen wie „the“, „ing“ und „ion“ allgegenwärtig; im Spanischen treten „ión“, „que“ und „los“ an ihre Stelle; im Deutschen sind „sch“, „ein“ und „der“ häufig. Ein Trigramm ist schlicht eine Folge von drei Zeichen aus dem Text, meist nach Umwandlung in Kleinbuchstaben und Entfernen von Ziffern und Satzzeichen, wobei Leerzeichen erhalten bleiben, damit Wortgrenzen Teil des Musters werden. Die Zeichenfolge „ th“ etwa weist auf ein Wort hin, das mit „th“ beginnt.

Der Detektor erstellt vorab für jede Sprache ein Profil, indem er Trigramme in einem großen Referenzkorpus zählt und nach Häufigkeit ordnet. Bei einer Anfrage tut er dasselbe mit Ihrem Text und misst, wie nah diese Verteilung an jedem gespeicherten Profil liegt. Die Sprache mit dem kleinsten Abstand gewinnt, und der Abstand zwischen dem besten und dem zweitbesten Kandidaten ergibt einen Konfidenzwert. Da die Profile Lookup-Tabellen sind, besteht der Aufwand pro Anfrage aus einem Durchlauf über den Text plus einigen Vergleichen. Es wird kein Remote-Dienst benötigt, sodass nichts vom Text den Server verlassen muss.

Schriftsysteme versus Trigramme

Trigramm-Statistiken sind am nützlichsten, wenn viele Sprachen dasselbe Schriftsystem teilen. Lateinische, kyrillische, arabische und Devanagari-Schrift beherbergen jeweils viele Sprachen, und der Detektor muss sich auf Häufigkeitsmuster stützen, um Portugiesisch von Spanisch oder Russisch von Ukrainisch zu unterscheiden. Bei Sprachen mit eigener Schrift, etwa Griechisch, Thai, Koreanisch, Tamil oder Bengalisch, genügt in der Regel die Schrift allein, um die Sprache zu benennen, ein Häufigkeitsvergleich ist also nicht nötig. Chinesisch und Japanisch erfordern etwas mehr Sorgfalt, da japanischer Text Kana mit Han-Zeichen mischt, was ein starker Hinweis auf Japanisch ist. Bei ipto werden 61 der 76 Sprachen per Trigramm-Häufigkeit getrennt, die übrigen 15 werden an ihrer Schrift erkannt.

Wo es gut funktioniert und wo nicht

Für kurze Webtexte wie Titel, Kommentare, Suchanfragen und Support-Tickets sind Trigramm-Methoden gut geeignet. Sie brauchen sehr wenig Eingabe für eine brauchbare Vermutung, sind günstig im Betrieb und vollständig deterministisch, wodurch sich das Verhalten leicht testen und debuggen lässt. Große neuronale Klassifikatoren können bei schwierigen Fällen genauer sein, besonders bei extrem kurzem oder verrauschtem Text, kosten aber mehr im Betrieb und sind schwerer nachzuvollziehen. Was besser ist, hängt von Ihren Genauigkeitsanforderungen und Rahmenbedingungen ab; für Routing und Tagging reicht ein leichtgewichtiger Detektor häufig aus.

Kennen Sie die Fehlerbilder, bevor Sie sich darauf verlassen:

  • Sehr kurze Eingabe. Eine Handvoll Zeichen liefert zu wenige Trigramme. Die ipto-API gibt für Eingaben unter 10 Zeichen eine Sprache null zurück, und bei Eingaben unter etwa 30 Zeichen liefert sie womöglich eine beste Vermutung, setzt reliable aber auf false.
  • Eng verwandte Sprachen. Norwegisch und Dänisch oder Kroatisch und Serbisch teilen die meisten ihrer Trigramme. Prüfen Sie bei niedriger Konfidenz die nächstplatzierten Kandidaten.
  • Text in gemischten Sprachen. Ein Profilvergleich geht von einer dominanten Sprache aus. Ein Absatz, der mittendrin wechselt, liefert die Sprache, der die meisten Zeichen gehören.
  • Rauschen. URLs, Code, Hashtags und Produktcodes fügen Trigramme hinzu, die zu keiner Sprache gehören. Entfernen Sie sie vor der Erkennung.
  • Seltene Sprachen. Eine Sprache außerhalb des unterstützten Satzes liefert den nächstliegenden statistischen Treffer statt eines exakten.

Einsatz in der Praxis

Sie können Text in den Sprachdetektor einfügen, um die gewinnende Sprache, einen Konfidenzwert und die nächstplatzierten Kandidaten zu sehen. Aus Code rufen Sie GET /v1/language?text=Bonjour auf; die Anfrage wird lokal analysiert, der Text wird weder an einen Drittanbieter noch an ein KI-Modell gesendet, und nichts wird protokolliert. Der kostenlose Tarif erlaubt 1.000 Anfragen pro Tag ohne Anmeldung, und die API-Dokumentation beschreibt die Antwortfelder.

Typische Anwendungen sind die Wahl der Ausgangssprache für eine Übersetzung, das Setzen des Attributs lang einer Seite und das Routing von Support-Tickets an das richtige Team. Ein weiteres nützliches Muster ist, die Textsprache mit dem Netzwerkkontext zu paaren. Die Sprache ist ein Signal über den Schreibenden, nicht über die Verbindung, und weicht daher oft davon ab, woher die Verbindung kommt; ein spanischsprachiger Nutzer in Frankreich oder hinter einem VPN ist völlig normal. Wenn Sie beide Signale vergleichen wollen, hilft eine VPN- und Proxy-Prüfung der IP-Adresse zu erkennen, ob eine Standortabweichung eine Netzwerkerklärung hat, und der User-Agent-Parser zeigt Browser- und Gerätekontext. Betrachten Sie jede Abweichung als Hinweis, niemals als Beweis, dass etwas nicht stimmt.

Klare Antworten

Sie bestimmt die Sprache eines Textes, indem sie Dreizeichenfolgen zählt und deren Häufigkeiten mit gespeicherten Profilen jeder Sprache vergleicht. Das nächstliegende Profil liefert die Antwort, und der Abstand ergibt einen Konfidenzwert.
Eine kurze Zeichenfolge enthält zu wenige Trigramme, um ähnliche Sprachen zuverlässig zu trennen. Die ipto-API gibt unter 10 Zeichen eine Sprache null zurück und kennzeichnet Ergebnisse unter etwa 30 Zeichen als nicht zuverlässig.
Nein. Der Sprachdetektor von ipto analysiert Text lokal mit Trigramm-Statistik, ruft weder einen externen Anbieter noch ein KI-Modell auf und protokolliert die Eingabe nicht.
← Zurück zum Blog