Mehrsprachige Verarbeitung natürlicher Sprache

· Thomas Wood
Mehrsprachige Verarbeitung natürlicher Sprache

Ihre NLP-Karriere wartet!

Bereit für den nächsten Schritt in Ihrer NLP-Reise? Vernetzen Sie sich mit Top-Arbeitgebern, die Talente in der natürlichen Sprachverarbeitung suchen. Entdecken Sie Ihren Traumjob!

Finden Sie Ihren Traumjob

Ein Rundgang durch die Herausforderungen, denen Sie bei der Verwendung der Verarbeitung natürlicher Sprache für mehrsprachige Daten begegnen.

Bei den meisten Projekten, die ich übernehme, handelt es sich ausschließlich um unstrukturierte Textdaten in Englisch, aber in letzter Zeit habe ich immer mehr Projekte mit Texten in verschiedenen Sprachen gesehen, die oft alle miteinander vermischt sind. Das ist eine unterhaltsame Herausforderung.

Kürzlich hatte ich ein Projekt, bei dem es um Texte in 12 Sprachen ging, von denen jede ihre eigenen, einzigartigen Probleme mit sich brachte. Ich möchte einige ihrer seltsamen und wunderbaren Dinge durchgehen, die Ihnen begegnen, wenn Sie versuchen, ein System für die mehrsprachige Verarbeitung natürlicher Sprache aufzubauen.

Warum brauchen wir mehrsprachige Verarbeitung natürlicher Sprache?

In einigen Bereichen des NLP sind alle verfügbaren Texte in einer einzigen Sprache. Ein Beispiel wäre ein Projekt zur Bearbeitung wissenschaftlicher Arbeiten, die im 21. Jahrhundert heute ausschließlich auf Englisch verfasst sind.

Projekte, die eine nicht formale länderübergreifende Kommunikation beinhalten, umfassen jedoch häufig Texte in verschiedenen Sprachen. Beispielsweise enthält ein Data-Science-Projekt in der Marktforschung, das transkribierte Interviews mit Kunden in verschiedenen Märkten umfasst, wahrscheinlich unstrukturierten Text in verschiedenen Sprachen. Multinationale Marketingagenturen hätten Datensätze mit Fragen wie : Wie gut passt Ihrer Meinung nach die Verpackung zum Produkt? in jeweils mindestens zwei Varianten Englisch, Spanisch und Portugiesisch gefragt.

Wenn unser Projekt wahrscheinlich Texte in verschiedenen Sprachen enthält, müssen wir vorsichtig sein, welche NLP- Techniken wir verwenden. Wenn wir uns an Modelle und Toolkits halten, die auf Englisch gut funktionieren, könnten wir überrascht sein, wenn etwas nicht mehr funktioniert.

Die 10 größten Herausforderungen bei der mehrsprachigen Verarbeitung natürlicher Sprache

1. Riesige Anzahl an Flexionen von Substantiven und Verben

Eine der einfachsten Möglichkeiten, ein Modell zur Verarbeitung natürlicher Sprache zu erstellen, ist der Bag-of-Words-Ansatz . Das bedeutet, dass wir einen Text auf die darin enthaltenen Wörter reduzieren und dies nutzen können, um eine sehr schnelle und schmutzige Ähnlichkeitsmetrik zweier Dokumente zu erhalten, indem wir die Wörter zählen, die sie gemeinsam haben.

Wenn Sie sehr kurze Texte und eine kleine Menge an Trainingsdaten haben (und Ihr Text auf Englisch ist!), ist der Bag-of-Words- Ansatz großartig! Es ist nicht so gut mit Synonymen oder Flexionen (denken Sie an Fahrt -> Fahren ), aber es erfüllt seinen Zweck. Wenn wir beispielsweise zwei englische Sätze mithilfe eines Bag-of-Words-Ansatzes auf Ähnlichkeit vergleichen möchten, können wir Folgendes tun:

Wortschatz für zwei englische Sätze

Allerdings gibt es in vielen Sprachen eine große Anzahl von Suffixen, die den „Bag-of-Words“-Ansatz erschweren.

Wenn wir ähnliche Texte auf Türkisch vergleichen möchten ( Sinirli, kaygılı, endişeli misiniz = Fühlen Sie sich nervös, ängstlich oder nervös, Endişeleniyorum = Ich bin nervös), stünden wir sofort vor einer Herausforderung, da keine Wörter geteilt werden. Endişeleniyorum bedeutet „Ich fühle mich nervös/sorgen“ und endişeleniyoruz bedeutet „wir sind nervös/sorgen“. Um einen Wortschatz zu verwenden, bräuchten wir sofort einen türkischen Wortstammschreiber oder Lemmatisierer , der die Wurzel jedes Wortes findet – aber wenn wir jedes Wort durch seine Wurzel ersetzen würden, würden wir wichtige Informationen wie Verneinung, Zeitformen oder Pronomen verlieren.

Das heißt, wenn Sie ein System entwerfen, das Vergleiche auf Wortebene durchführt (z. B. ein Informationsabrufsystem oder eine Suchmaschine), müssen Sie darüber nachdenken, wie Sie mit Sprachen wie Türkisch umgehen und von der einfachen Wortübereinstimmung abrücken. Ich habe die oben genannten türkischen Wörter in einem türkischen Stemmer in Python ausprobiert, um zu sehen, ob endişeleniyoruz und endişeli derselben Wurzel zugeordnet werden würden, aber das war immer noch nicht der Fall (siehe Codeausschnitt unten) – also selbst, wenn Sie dieses Problem mit großer Wahrscheinlichkeit erwarten In einer flektierten Sprache wie dem Türkischen ist es möglicherweise nicht leicht zu lösen.

pip installiert TurkishStemmer

TürkischStemmer sammeln Download von TurkishStemmer-1.3-py3-none-any.whl (20 kB) Gesammelte Pakete installieren: TurkishStemmer TurkishStemmer-1.3 erfolgreich installiert

Python

aus TurkishStemmer importieren TurkishStemmer

stemmer = TurkishStemmer()

stemmer.stem(“endişeleniyoruz”) # wir machen uns Sorgen

‘endişeleniyor’

stemmer.stem(“endişeli”) # ängstlich

‘endişe’

stemmer.stem(“sürüyorum”) # Ich fahre

‘sürüyor’

stemmer.stem(“sürdüm”) # Ich bin gefahren

‘sürt’ „

2. Zusammengesetzte Substantive

Deutsch, Schwedisch und Niederländisch sind berühmt für ihre langen Wörter, die aus zusammengeklebten anderen Wörtern bestehen. Aber diese können dazu führen, dass NLP- Systeme kaputt gehen, die nur für Englisch entwickelt wurden.

Kürzlich musste ich dieses Problem bei einem Projekt zur Textanalyse für eine Sprachlern-App lösen. Für Deutsch verwende ich eine Bibliothek namens German Compound Splitter . Sobald Deutsch zum Projekt hinzugefügt wurde, musste ich ein separates Paket installieren, um die Komposita aufzuteilen und auch ein deutsches Wörterbuch einzubinden (wofür ich die Lizenzbedingungen überprüfen musste). Das Aufteilen zusammengesetzter Wörter ist ein überraschend schwieriges Problem, da es mehrere gültige Aufteilungen geben kann.

Das Wort „das Kernkraftwerk “ ist ein interessanter Fall, da es aus drei zusammengeklebten Substantiven besteht:

  • das Kern = Kern/Kern

  • die Kraft = Macht

  • das Werk = Fabrik / Arbeit

Möchten Sie es aufteilen in die Kernkraft + das Werk oder das Kern + das Kraftwerk oder sogar das Kern + die Kraft + das Werk ? Alle wären grammatikalisch gültig, aber es hängt davon ab, wofür Sie es verwenden möchten. Ich denke, ich würde mich für Kern + Kraftwerk entscheiden, da ein Kernkraftwerk eine Art Kraftwerk ist und dies für die meisten Zwecke wahrscheinlich die aussagekräftigste Aufteilung wäre – zum Beispiel, wenn Sie in einer Datenbank nach Informationen darüber suchen ein Kraftwerk und es einen Artikel über ein Kernkraftwerk gab, könnte er trotzdem von Interesse sein – obwohl das Gegenteil nicht unbedingt der Fall sein muss! Eine Möglichkeit wäre, alle Splittings zu generieren, um keine falsche Entscheidung zu treffen.

3. Tokenisierungsregeln

Im Englischen ist es ganz einfach, einen Text in Wörter aufzuteilen. Wie wir jedoch anhand der obigen Beispiele für Türkisch und Deutsch gesehen haben, sind die in einem Wort enthaltenen Informationen nicht immer in allen Sprachen gleich. Bei einigen Sprachen kann es sogar schwierig sein, einen Satz in Wörter zu zerlegen.

Hebräisch und Arabisch schreiben Artikel und Präpositionen zusammen, daher wird „der Computer“ mit „alkumbyutar“ geschrieben und „mit dem Auto“ wäre بالسيارة „bissayaara“, wobei die drei Wörter bi (von), al (der) und sayaara (Auto) zusammengeklebt sind zusammen.

Die ostasiatischen Sprachen bringen dies jedoch auf eine andere Ebene. Chinesisch, Japanisch und Thailändisch werden überhaupt ohne Leerzeichen geschrieben, daher ist die erste Stufe in einer NLP- Pipeline für diese Sprachen ein Tokenizer, der mithilfe maschinellen Lernens erkennt, wann ein Wort endet und das nächste beginnt.

4. Verschiedene Schreibvarianten

Ein Faktor, der bei englischen Texten häufig auftaucht, ist der Text in britischen und US-amerikanischen Varianten. Wenn Sie beispielsweise Umfrageantworten sowohl in britischem als auch in amerikanischem Englisch haben und beliebte Begriffe hervorheben möchten und die Hälfte Ihrer Benutzer „sanitize“ und die andere Hälfte „sanitize“ geschrieben haben, wird der Beliebtheitswert dieses Worts fälschlicherweise verringert, wenn das System es behandelt als ein einziges Wort.

Ich bin bei einer Reihe von Projekten auf dieses Problem gestoßen und habe damit begonnen, eine Reihe von Regeln zu sammeln, um alle Texte entweder auf Britisches oder Amerikanisches zu normalisieren, die ich als Open Source in einer Bibliothek namens localspelling bereitgestellt habe. Es verwendet einige generische Regeln (z. B. das Suffix -ise/ize) in Kombination mit einem wörterbuchbasierten Ansatz, Wörter wie „Programm“/Programm bleiben jedoch unberührt, da es zu viele Unklarheiten gibt (da es in Großbritannien beide Varianten gibt).

Seitdem ich angefangen habe, an einigen Projekten mit brasilianischem Portugiesisch zu arbeiten, habe ich festgestellt, dass es in Portugiesisch ähnliche Schreibunterschiede zwischen Portugal und Brasilien gibt – ich kann mir vorstellen, dass der gleiche Ansatz hier nützlich sein könnte.

5. Mehr als ein Schriftsystem für eine einzelne Sprache

Es gibt einige Sprachen, die mehrere Schriftsysteme haben. Beispielsweise kann Serbisch in Latein oder Kyrillisch geschrieben werden, und es gibt meistens eine Eins-zu-eins-Zuordnung zwischen den beiden, aber nicht immer (das kyrillische System verfügt über etwas mehr Informationen, sodass Sie eindeutig von Kyrillisch zu Latein wechseln können, aber nicht umgekehrt). umgekehrt).

Im Chinesischen gibt es die vereinfachte (Festlandchina) oder traditionelle Variante (Taiwan und Hongkong) und im Japanischen gibt es die Wortdarstellungen Kana und Kanji.

Für jede Sprache, in der Ihr NLP- System wahrscheinlich auf Text in unterschiedlichen Alphabeten oder Schriftsystemen stößt, müssen Sie auf eine kanonische Form normalisieren. Jede Sprache mit diesem Problem verfügt über einen bestimmten Satz von Online-Tools, die von Muttersprachlern verwendet werden (z. B. wenn ein Chinesischsprachiger Text vom traditionellen in den vereinfachten Text umwandeln möchte), und es gibt auch einen Satz von APIs und Bibliotheken, die die Substitution durchführen.

In den meisten Fällen handelt es sich beim Wechsel zwischen Schriftsystemen um einen Buchstaben-für-Buchstaben-Ersatz mit handschriftlichen Regeln oder einer statistischen oder maschinellen Lernmodellierung zur Behandlung der Randfälle. Die meisten vereinfachten chinesischen Schriftzeichen haben eine einzige Darstellung in der traditionellen Schrift, einige haben jedoch mehr als eine Darstellung. Zum Beispiel,

  • Im vereinfachten Chinesisch bedeutet das Zeichen 发 entweder Haar oder senden .

  • In traditionellen Schriftzeichen wird 发 發 geschrieben, wenn es „senden“ bedeutet, und 髮, wenn es „Haar“ bedeutet.

Glücklicherweise gibt es mehrere Websites, Python-Bibliotheken und Nachschlagetabellen, die die Konvertierung in beide Richtungen durchführen können. Das Zeichen 发 würde nie alleine vorkommen, sondern wäre normalerweise Teil eines aus zwei Zeichen bestehenden Wortes wie 发送/發送fāsòng (senden) oder 頭髮/头发tóufà (Haar) – das bedeutet, dass die Begriffsklärung einfacher ist, als es klingt, da sie möglich ist durch Zahlenrechnen gelöst werden.

Allerdings verfügen einige Sprachen über ein Schreibsystem, das für NLP so schwierig ist, dass allein für die Transkription ein ganzes neuronales Netzwerk erforderlich ist …

Multilingual NLP

Do you need to process text in a language other than English?

Wir haben Modelle in Sprachen aus der ganzen Welt erstellt. Wir können mit nicht standardmäßiger Rechtschreibung wie inkonsistentem romanisiertem Hindi mujhe job chaiye , Arabisch in römischer Schrift und Transliteration von unvokalisiertem Hebräisch (vom ktiv maleh über nikkud zur römischen Schrift) umgehen. Über N’Ko können wir einen Abhängigkeitsparser in Sprachen von Aserbaidschanisch bis Zulu bereitstellen.

6. Schreibsysteme mit fehlenden Informationen

Die schwierigste NLP-Herausforderung, die ich bisher gefunden habe, ist Hebräisch. Um die Aussprache (z. B. die Romanisierung) eines hebräischen Wortes zu verstehen, müssen Sie den gesamten Satz lesen. Man kann kein einzelnes Wort einzeln romanisieren.

Zum Beispiel wird das Verb „wollen“ „rotzeh“ ausgesprochen, wenn das Subjekt männlich ist, und „rotzah“, wenn es weiblich ist, aber beide werden auf die gleiche Weise geschrieben: רוצה . Vokale werden normalerweise nicht aufgeschrieben, und um die Sache noch schwieriger zu machen, erzeugen mehrere Konsonantenbuchstaben den gleichen Laut, manche erzeugen zwei Laute und manche schweigen.

Ein Satz wie תומס רוצה (Thomas will) wird also Thomas rotzeh ausgesprochen

Aber חנה רוצה (Hannah will) wird Hannah rotzah ausgesprochen.

Versuchen Sie, den Schieberegler im Bild unten zu bewegen, um zu sehen, wie viele Informationen in den Vokalen verborgen sind!

Lorem Lorem

Die Laute b und v bestehen aus demselben Buchstaben und unterscheiden sich nur durch einen optionalen Punkt namens Dagesh.

Da dieses System so viel Mehrdeutigkeit erzeugt, gibt es im Hebräischen zwei optionale Systeme zur Angabe der Aussprache: die klassische Methode, bei der innerhalb, über und unter den Buchstaben Punkte und Markierungen namens Nikkud eingefügt werden, und eine modernere Methode namens ktiv maleh , bei der zusätzliche Buchstaben eingefügt werden ( vav und yod).

Ich konnte keinen einfachen Python-Import zum Romanisieren von Hebräisch finden. Was ich finden konnte, war ein neuronales Netzwerk namens Nakdimon , das als Docker-Container läuft und unvokalisiertes Hebräisch mit Nikkud und Dagesh in Hebräisch umwandeln kann. Dann musste ich meine eigenen Regeln schreiben, um das vollständig vokalisierte Hebräisch in römische Buchstaben umzuwandeln. In meiner bereitgestellten Anwendung läuft Nakdimon also auf einem eigenen Server. Das bedeutet, dass Hebräisch die einzige Sprache ist, die allein für die Interpretation des Alphabets einen zusätzlichen Server benötigt (Kosten bis zu 50 $/Monat)!

Demo des Codes zum Hinzufügen von Vokalen und zur Romanisierung des modernen Hebräisch

Sie können unten meinen hebräischen Vokalisierer und Romanisierer (basierend auf Nakdimon) ausprobieren. Die Zeitverzögerung beim Hinzufügen von Vokalen zu einem einfachen hebräischen Satz zeigt uns, wie sehr die hebräischen Vokale Kopfschmerzen bereiten.

Geben Sie eine Textpassage in unvokalisiertem Hebräisch ein (versuchen Sie es mit ein paar Wörtern, um die besten Ergebnisse zu erzielen): Beispieltexte: Boker tov (Guten Morgen) Thomas möchte eine heiße Schokolade bestellen. Sara möchte einen Kaffee

[Geben Sie einen Text auf Hebräisch ein und das Hebräische mit den vollständigen Vokalen wird hier angezeigt.]

[Geben Sie einen Text ein und der romanisierte Text wird hier angezeigt]

  1. Zeichen, die nicht richtig angezeigt werden, es sei denn, Sie haben die richtige Schriftart installiert

Ich werde einige der Probleme behandeln, die auftreten, wenn Sie einem Benutzer Text in einer Wortwolke , einem Diagramm oder einem Diagramm anzeigen möchten, und wie Sie diese Probleme beheben können.

Probleme mit der Textkodierung

Wenn Sie Anfang der 2000er Jahre jemals eine nicht-englische Website besucht hätten, wären Sie mit der Kodierung von verstümmeltem Text vertraut gewesen. Wenn eine Datei nach einem bestimmten Satz von Regeln zur Übersetzung von Ziffern in Buchstaben, einer sogenannten Kodierung, erstellt und von einem anderen Benutzer mit einer anderen Kodierung gelesen würde, wäre das Ergebnis eine Buchstabensuppe. Heutzutage kommt dies seltener vor, kann aber dennoch vorkommen.

Beispielsweise kodiert die Zeichenkodierung UTF-8 den deutschen Buchstaben Ü als zwei Zahlen: 195, 156. Wenn Sie die Sequenz 195, 156 mit der UTF-8-Kodierung interpretieren, erhalten Sie (richtig) Ü, aber wenn Sie lesen Wenn Sie eine andere Codierung namens Latin-1 (ISO-8859-1) verwenden, erhalten Sie Ã\x9c, was Kauderwelsch ist.

Ein Programm, das Text in der falschen Kodierung liest, würde also das deutsche Wort „Übersetzen“ wie folgt anzeigen:

Ã\\x9cbersetzen

was ohnehin schon schwer zu verstehen ist, und das türkische Wort görüşürüz würde wie folgt angezeigt:

görüÅ\\x9fürüz
  • völlig unleserlich!

1991 gründete eine Gruppe von Technologieunternehmen das Unicode-Konsortium mit dem Ziel, dass Texte in jeder Sprache weltweit korrekt dargestellt werden können. Unicode ist im Grunde eine Liste aller Buchstaben und Zeichen aus allen Sprachen der Welt, denen jeweils eine Nummer zugeordnet ist. Ein kleines a ist also die Zeichennummer 97 und der hebräische Buchstabe א (Aleph) ist 1488, unabhängig von der verwendeten Schriftart.

Der Unicode-Standard hat das Problem der Buchstabensuppe gelöst, allerdings nicht ohne Kontroversen. Arbeitsgruppen aus China, Taiwan und Japan debattierten heftig darüber, welche Versionen der einzelnen Zeichen in der Unicode-Kodierung Vorrang erhalten würden . Das Ergebnis ist, dass Zeichen, die sich zwischen den Ländern erheblich unterscheiden, separate Unicode-Kodierungen haben, wie z. B. 囯 (22269) und 國 (22283) (beide bedeuten Land), während Varianten mit geringfügigen Unterschieden eine einzige Nummer zugewiesen bekommen und die Wahl der Schriftart bestimmt wie es angezeigt wird.

„Snow“ (Zeichen 38634) wird in der Schriftart Noto Sans Traditional Chinese angezeigt. Hier ist das Zeichen in der Schriftart, die Ihr Computer verwendet: 雪

„Snow“ (Zeichen 38634) wird in der Schriftart Noto Sans Simplified Chinese angezeigt. Hier ist das gleiche Zeichen in der Schriftart, die Ihr Computer verwendet: 雪

Obwohl die größte Errungenschaft des Unicode-Konsortiums darin bestand, die Schriftsysteme der Welt zu indexieren und beide Seiten der Taiwanstraße dazu zu bringen, sich darauf zu einigen, scheint Unicode seltsamerweise erst dann das Interesse der Medien zu wecken, wenn sie beschließen, der Liste neue Emojis hinzuzufügen! Wenn Sie jemandem eine WhatsApp mit einem Emoji senden, wird diese dank Unicode auch dann korrekt angezeigt, wenn der Empfänger ein anderes Telefonfabrikat hat.

Heutzutage können wir Alphabetsuppe vermeiden, indem wir uns an die UTF-8-Kodierung halten, die alle Alphabete verarbeitet. Sie müssen jedoch darauf achten, Dateien immer mit der UTF-8-Kodierung zu lesen und zu schreiben. Beispielsweise ist die folgende Python-Codezeile zum Lesen einer Datei gefährlich, da sie möglicherweise kaputt geht, wenn die Datei nicht-englischen Text enthält.

„ f = open(“demofile.txt”, " r “) „

und der richtige Weg, eine Datei in Python zu lesen, ist immer die angegebene Codierung:

„ f = open(“demofile.txt”, " r “,kodierung=“utf-8”) „

Schriftarten enthalten nicht alle benötigten Zeichen

Ich musste kürzlich eine Bibliothek zur Anzeige mehrsprachiger Wortwolken entwickeln und dabei stieß ich auf das Problem, dass es keine Schriftart gibt, die alle Sprachen abdeckt. Auch wenn Sie Ihren Text in der richtigen Sprache haben, müssen Sie auch über eine Schriftart mit Glyphen für diese Sprache verfügen. Einige Sprachen haben Regeln dazu, wie sich das Aussehen eines Buchstabens abhängig von seiner Umgebung ändern soll. Diese werden daher von den Schriftartdateien verwaltet. Beispielsweise wird der arabische Buchstabe ة als ـة angezeigt, wenn er mit einem Buchstaben auf der rechten Seite verbunden wird – aber wie auch immer er angezeigt wird, er hat immer die gleiche Kodierung: 1577 (dies entspricht dem Prinzip von Unicode, dass jedes Zeichen nur eine Kodierung hat). auch wenn es in einem Text als mehrere Glyphen dargestellt werden kann).

Ich habe ein paar nützliche Schriftfamilien gefunden, die alle Sprachen abdecken. Beispielsweise ist Google Noto eine Schriftartenfamilie, die viele Sprachen abdeckt, und Sie können je nach gewünschter Sprache die richtige Variante von Google Noto (oft als „Google Noto [LANGUAGE NAME]“ bezeichnet) anwenden.

Entscheidungsbaum zur Auswahl einer Schriftart

Ich habe einen Entscheidungsbaum zusammengestellt, um zu entscheiden, welche Schriftart zum Anzeigen von Text in einer bestimmten Sprache verwendet werden soll:

Language nameIs there a font for this language?Choose font
EnglishNoto Sans English -> doesn’t existNoto Sans
RussianNoto Sans Russian -> doesn’t existNoto Sans (this also has Cyrillic characters as well as Roman)
ArabicNoto Sans Arabic -> existsNoto Sans Arabic
Chinese (mainland)Special rule:Noto Sans Simplified ChineseNoto Sans Simplified Chinese
GujaratiNoto Sans Gujarati -> existsNoto Sans Gujarati

Zur Veranschaulichung: Folgendes passiert, wenn ich versuche, arabischen Text in einer Python-Wortwolke anzuzeigen, ohne explizit eine arabische Schriftart zu laden:

Dies ist derselbe Text mit geladener Schriftart, aber wenn die Rechts-nach-Links-Logik nicht richtig konfiguriert ist (so dass die Buchstaben umgeformt und zusammengefügt werden, aber in der falschen Reihenfolge angezeigt werden):

Und das ist der Text mit der korrekt geladenen Schriftart:

Überprüfen, ob bidirektionaler Text korrekt angezeigt wird: ein Spickzettel

Eines der häufigsten Probleme, das ich überall sehe, ist, dass es keine Zeichenkodierungen mehr gibt. Dies liegt vermutlich daran, dass man keine Sprachkenntnisse benötigt, um zu erkennen, wann die Kodierung vollständig kaputt ist: Der Text wird als Quadrate oder bedeutungslose Symbole anstelle von Buchstaben angezeigt.

Viel häufiger kommt es vor, dass Arabisch und Hebräisch mit falscher Leserichtung und ohne Umformung der Buchstaben angezeigt werden. Wenn ich arabischen Text auf einem Schild an einem Flughafen oder in einem Geschäft sehe, wird der Text häufig in der falschen Richtung angezeigt, aber da er für einen Nicht-Sprecher gleich aussieht, wird er oft übersehen.

Glücklicherweise gibt es einen einfachen Anhaltspunkt, um zu überprüfen, ob die bidirektionale Textanzeige ordnungsgemäß funktioniert. In beiden Sprachen gibt es Buchstabenformen, die nur am Ende eines Wortes zulässig sind. Wenn Sie also rechts einen dieser Endbuchstaben sehen, wissen Sie, dass Ihr Text falsch herum ist.

Ein Spickzettel zum Überprüfen Ihres Textes in einer Rechts-nach-links-Sprache wie Arabisch oder Hebräisch wird korrekt angezeigt.

  1. Die Zahlenformatierung unterscheidet sich je nach Gebietsschema

Wenn Sie beispielsweise schon einmal Tabellenkalkulationen und CSV-Dateien (durch Kommas getrennte Werte) zwischen englischen und deutschen Computern übertragen haben, ist Ihnen möglicherweise ein seltsames Verhalten aufgefallen, und manchmal werden CSV-Dateien nicht geladen. Wenn eine Tabelle mit einer Zahl wie 54,2 als CSV aus einem englischsprachigen Excel gespeichert und auf einen deutschen Computer mit derselben Excel-Version geladen wird, wird die Zahl möglicherweise falsch analysiert. Dies liegt daran, dass verschiedene Länder unterschiedliche Dezimaltrennzeichen und Tausendertrennzeichen haben und in Deutschland das „.“ ist ein Tausendertrennzeichen und das “,” ist das Dezimaltrennzeichen – das Gegenteil der englischen Konvention!

Die Zahl 12345.6 kann je nach Gebietsschema in folgenden Varianten angezeigt werden:

CountriesHow the number could be displayed
UK, US12,345.6
Germany12.345,6
Switzerland12'345,6
France12 345,6

Tatsächlich gibt es in verschiedenen Gebietsschemas viele Möglichkeiten, mit Dezimalzahlen und Tausendern umzugehen. In einigen Ländern werden völlig andere Symbole verwendet, beispielsweise das arabische Dezimaltrennzeichen ٫, und in Indien wird bei Tausend, Hunderttausend und Zehn Millionen ein Komma verwendet.

Zweisprachige Länder können unterschiedliche Konventionen für verschiedene Sprachen haben, und dieselbe Sprache kann für jedes Land Varianten haben. Aus diesem Grund werden Gebietsschemata normalerweise als zweibuchstabiger Sprachcode und zweibuchstabiger Ländercode ausgedrückt, z. B. de_DE bedeutet Deutsch, wie es in Deutschland gesprochen wird.

Das Schwierige an der Handhabung von Gebietsschemata ist, dass Computer das Gebietsschema normalerweise global festlegen, auf der Ebene des gesamten Systems. Wenn Ihr Computer also auf Deutsch eingestellt ist, läuft Excel in der Regel auf Deutsch. Wenn Sie ein Programm zum Analysieren von Zahlen in mehreren Gebietsschemata schreiben möchten, beinhalten die meisten Beispiele, die ich online gefunden habe, das Festlegen des Systemgebietsschemas, das Parsen einer Zahl und das Zurücksetzen.

Unten sehen Sie eine Aufschlüsselung, wie in verschiedenen Ländern Dezimal- und Tausenderzahlen getrennt werden:

Eine nützliche Lösung ist die Python-Bibliothek Babel , die für die Bewältigung dieser Art von Internationalisierungsproblemen entwickelt wurde. Das folgende Snippet zeigt beispielsweise, wie Sie eine Zahl in verschiedenen Gebietsschemata drucken können, ohne das Systemgebietsschema zu ändern:

„ Gebietsschema importieren aus Babel-Importnummern print (numbers.format_decimal(12345.6, locale=‘de_DE’)) # Deutsch (Deutschland) druckt 12.345,6

print (numbers.format_decimal(12345.6, locale=‘de_CH’)) # Deutsch (Schweiz) 12'345,6

print (numbers.format_decimal(12345.6, locale=‘fr_FR’)) # Französisch (Frankreich) druckt 12 345,6

Mehrsprachige und sprachagnostische Modelle

Anstatt separate Pakete und Codes zu verwenden, um Text in verschiedenen Sprachen zu verarbeiten, setzt sich ein neuer Ansatz durch: Es gibt Modelle, die vollständig mehrsprachig sind und auf Text in vielen Sprachen trainiert wurden. Beispielsweise ist das Transformer- Modell BERT in sprachspezifischen Versionen und einer mehrsprachigen Variante, BERT-Base-Multilingual, verfügbar.

Diese mehrsprachigen Modelle behandeln Text sprachunabhängig. Wenn Sie ein Paket wie Microsoft NLU zum Erstellen von Chatbots verwenden, werden Sie feststellen, dass Sie auch Trainingsdaten in einer Sprache hochladen und Ihren Chatbot in einer anderen ausführen können – obwohl meiner Erfahrung nach die Leistung bei der Verwendung eines Chatbots leicht abnimmt eine Sprache, in der es nicht trainiert wurde.

Ich habe einige Experimente mit Microsoft Language Studio durchgeführt. Microsoft behauptet das

„Wenn Sie mehrere Sprachen in einem Projekt aktivieren, können Sie das Projekt hauptsächlich in einer Sprache trainieren und sofort Vorhersagen in anderen Sprachen erhalten.“

Dokumentation zu Microsoft Azure Cognitive Services

Ich habe das auf die Probe gestellt. Ich habe versucht, nur englische Trainingsdaten in meinen Chatbot hochzuladen, und habe sie mit spanischem Text getestet. Dann habe ich versucht, einen Chatbot mit rein spanischem Text und einer Mischung aus spanischem und englischem Text zu trainieren, um herauszufinden, welcher der beste ist. Ich fand, dass das in Spanien ausgebildete Modell am besten abschnitt, während das englische Modell knapp dahinter lag.

Performance of Azure Cognitive Servicesmodel on Englishfor Spanish inputsEnglishSpanishMultilingual0.20.30.50.40.60.10Language of training setAccuracy

Ich habe herausgefunden, dass die Leistung bei Sprachen mit geringeren Ressourcen wie Suaheli viel stärker abgenommen hat – ein Modell, das nur auf englischsprachigen Daten trainiert wurde, wäre daher für die Kategorisierung von Suaheli-Eingaben überhaupt nicht von großem Nutzen.

Transformer-Modelle für mehrsprachigen Text

Für das Harmony-Projekt , eine Zusammenarbeit mit mehreren Universitäten, habe ich außerdem eine Reihe von Experimenten zum Vergleich englischer und portugiesischer Datensätze zur psychischen Gesundheit durchgeführt. Ich habe herausgefunden, dass Transformer- Modelle, wie sie auf HuggingFace Hub verfügbar sind, bei Daten in einer einzelnen Sprache am besten funktionieren, aber sie sind in der Lage, Stimmungen über mehrere Sprachen hinweg abzugleichen. Mehr dazu können Sie hier lesen.

Beim Experimentieren mit Transformatormodellen habe ich auf dem HuggingFace- Hub eine Reihe von Modellen für unterrepräsentierte Sprachen gefunden und konnte mit dem Shona (Simbabwe)-Konzept von kufungisisa („zu viel denken“) experimentieren. Forscher der Basis-NLP-Gruppe Masakhane haben NLP-Modelle für eine Reihe afrikanischer Sprachen entwickelt, darunter Shona. Mehr über meine Experimente mit Shona-Texten können Sie in diesem Blogbeitrag lesen.

Liste der Ressourcen für mehrsprachiges NLP

Dies sind die Bibliotheken, die ich als nützlich erachtet habe und die ich in meinen Projekten verwende. Es gibt noch viele weitere Ressourcen , aber ich habe sie nicht genutzt. Ich arbeite in Python. Wenn Sie also eine andere Programmiersprache verwenden, müssen Sie möglicherweise ein Äquivalent in Ihrem Stack finden.

Erkennen der Sprache eines Dokuments

  • Langdetect – das funktioniert am besten, wenn Sie es mit ein paar Sätzen versehen, und neigt dazu, falsche Antworten zu geben, wenn Ihr Text sehr kurz oder unordentlich ist (z. B. Text aus dem Internet mit vielen Tippfehlern ). Ich würde Ihnen empfehlen, dies auch mit einer Auswahlliste der Sprachen zu kombinieren, auf die Sie voraussichtlich stoßen werden.

  • Unicodeblock – diese Python-Bibliothek zeigt Ihnen den Unicode-Block eines Zeichens an. Wenn Sie also in einem Dokument auf ein Zeichen stoßen, das aus dem KATAKANA-Block stammt, ist Ihr Text wahrscheinlich japanisch. Dies ist robuster als der statistische Ansatz von Langdetect.

Romanisierungs-/Schriftsysteme

Zusammengesetzte Aufteilung

Grammatische Analyse

Diese Bibliotheken sind nützlich, wenn Sie die Struktur eines Satzes analysieren, Verben in die Gegenwart umwandeln, das Objekt und das Subjekt eines Verbs finden möchten usw.

Messung der semantischen Ähnlichkeit zwischen Texten in verschiedenen Sprachen

Kategorisierung eingehender Texte in jeder Sprache

Texte übersetzen und Zahlen lokalisieren

  • Babel (Python-Bibliothek)

Exemplarische Vorgehensweise zum Generieren von Wortvektoren

Schlussfolgerungen

Der altmodische Ansatz zur mehrsprachigen Verarbeitung natürlicher Sprache umfasste handcodierte Regeln, die auf die Sprachen zugeschnitten waren, an denen Sie interessiert waren, während modernere Ansätze mit transformatorischen neuronalen Netzen in der Lage sind, Text in einer Vielzahl verschiedener Sprachen nahtlos zu verarbeiten.

Allerdings sind die nahtlosen sprachunabhängigen Ansätze oft leistungsschwach, wenn sie in einer Sprache trainiert und in einer anderen getestet werden. Wenn also eine bestimmte Sprache Priorität hat (z. B. die Sprache eines Schlüsselmarktes für Ihr Unternehmen), wäre es immer am besten, sie zu haben ein spezielles Modell zur Verarbeitung natürlicher Sprache für diese Sprache.

Verweise

Devlin, Jacob, et al. “BERT: Pre-training of deep bidirectional transformers for language understanding.” arXiv preprint arXiv:1810.04805 (2018).

Tsu, Jing. Kingdom of Characters: A Tale of Language, Obsession, and Genius in Modern China. Penguin UK, 2022.

Finden Sie Top-NLP-Talente!

Suchen Sie Experten in Natürlicher Sprachverarbeitung? Veröffentlichen Sie Ihre Stellenangebote bei uns und finden Sie heute Ihren idealen Kandidaten!

Veröffentlichen Sie einen Job

Big-Data-Beratung – 4 häufigste Probleme gelöst
Data scienceBig data

Big-Data-Beratung – 4 häufigste Probleme gelöst

Mittlerweile sind es Organisationen aller Größenordnungen und fast aller Sektoren werden zunehmend datengesteuert, insbesondere als größere Datenspeicher Systeme und schnellere Computer treiben die Leistungsgrenzen immer weiter voran.

Zwei Revolutionen im Abstand von 200 Jahren: die Datenrevolution und die industrielle Revolution
Ai and societyData science

Zwei Revolutionen im Abstand von 200 Jahren: die Datenrevolution und die industrielle Revolution

Aufgrund des umfangreichen Einsatzes von Technologie und der Arbeitsteilung hat die Arbeit des durchschnittlichen Gig-Economy-Arbeiters jeden individuellen Charakter und damit auch jeden Charme für den Arbeitnehmer verloren.

KI im Personalwesen: Die Zukunft der Arbeit verändern
Ai and societyData science

KI im Personalwesen: Die Zukunft der Arbeit verändern

Die Auswirkungen von KI auf die Humanressourcen Die Arbeitswelt verändert sich rasant, sowohl aufgrund der Einführung traditioneller Data-Science-Praktiken in immer mehr Unternehmen als auch aufgrund der zunehmenden Beliebtheit generativer KI-Tools wie ChatGPT und Googles BARD bei nicht-technischen Arbeitnehmern.

What we can do for you

Transform Unstructured Data into Actionable Insights

Contact us