Ich habe eine Idee für ein paar Web-Apps zu schreiben, um mir zu helfen, und vielleicht andere, Japanisch besser zu lernen, da ich die Sprache studiere.
Mein Problem ist, dass die Seite hauptsächlich in Englisch sein wird, also muss sie fließend japanische Schriftzeichen mischen, normalerweise Hirigana und Katakana, aber später Kanji. Ich komme dem näher. Ich habe herausgefunden, dass die Seiten und Quelldateien Unicode- und UTF-8-Inhaltstypen sein müssen.
Allerdings kommt mein Problem in der eigentlichen Codierung. Was ich brauche, ist die Manipulation von Zeichenketten, die Kana sind. Ein Beispiel ist:
け す Ich muss dieses Verb nehmen und es in die te-form convert し て umwandeln. Ich würde es vorziehen, dies in Javascript zu tun, da es auf der Straße helfen wird, mehr Manipulation zu machen, aber wenn ich nur DB-Anrufe machen und alles in einer DB halten muss.
Meine Frage ist nicht nur, wie man es in Javascript macht, sondern auch, welche Tipps und Strategien es gibt, um solche Dinge auch in anderen Sprachen zu tun. Ich hoffe, dass ich mehr dazu bekomme, Sprachlern-Apps zu machen, bin aber dabei verloren.
Meine Frage ist nicht nur, wie es geht in Javascript, aber was sind einige Tipps und Strategien, um diese Art zu machen Dinge in anderen Sprachen auch.
Was Sie tun wollen, ist eine ziemlich einfache String-Manipulation - abgesehen von den fehlenden Worttrennzeichen, wie Barry bemerkt, obwohl das kein technisches Problem ist.
Im Grunde genommen gibt es für eine moderne Unicode-fähige Programmiersprache (die JavaScript seit Version 1.3 enthält) keinen wirklichen Unterschied zwischen einem japanischen Kana oder Kanji und einem lateinischen Buchstaben - das sind alles nur Zeichen. Und eine Zeichenfolge ist nur eine Folge von Zeichen.
Wo es schwierig wird, ist es, wenn Sie zwischen Zeichenfolgen und Bytes konvertieren müssen, denn dann müssen Sie darauf achten, welche Kodierung Sie verwenden. Leider neigen viele Programmierer, vor allem englische Muttersprachler, dazu, dieses Problem zu übertünchen, da ASCII de facto die Standardcodierung für lateinische Buchstaben ist und andere Codierungen normalerweise versuchen, kompatibel zu sein. Wenn lateinische Buchstaben alles sind, was Sie brauchen, dann können Sie mit Glückseligkeit über Zeichenkodierungen umgehen, glauben, dass Bytes und Zeichen im Grunde dasselbe sind - und Programme schreiben, die alles, was nicht ASCII ist, verstümmeln.
Also ist das "Geheimnis" der Unicode-bewussten Programmierung: Lernen Sie zu erkennen, wann und wo Strings / Zeichen in und aus Bytes konvertiert werden, und stellen Sie sicher, dass an all diesen Stellen die korrekte Kodierung verwendet wird, dh die gleiche wird für die umgekehrte Konvertierung verwendet und eine, die alle verwendeten Zeichen codieren kann. UTF-8 wird langsam zum De-facto-Standard und sollte normalerweise überall dort eingesetzt werden, wo Sie die Wahl haben.
Typische Beispiele (nicht erschöpfend):
MeCab (ursprünglich auf SourceForge ) ist genial: es erlaubt dir, Text wie,
zu nehmen %Vor%und hol dir alle möglichen tollen Infos zurück
%Vor%Das ist im Grunde eine detaillierte Herabsetzung der Wortarten, Lesungen, Aussprachen usw. Es wird Ihnen auch den Gefallen tun, Verbformen zu analysieren,
%Vor%Die Dokumentation ist jedoch alles auf Japanisch, und es ist ein wenig kompliziert einzurichten und herauszufinden, wie man die Ausgabe so formatiert, wie Sie es wollen. Es gibt Pakete für ubuntu / debian und Bindings in einer Reihe von Sprachen wie Perl, Python, Ruby ...
Apt-Repos für Ubuntu:
%Vor% Zu installierende Pakete:
$ apt-get install mecab-ipadic-utf8 mecab python-mecab
sollte den Trick machen, denke ich.
Die anderen Alternativen zu mecab sind, ChaSen , das vor Jahren von dem Autor von MeCab geschrieben wurde (der übrigens arbeitet jetzt bei Google) und Kakasi , was viel weniger machtvoll ist.
Ich würde definitiv versuchen zu vermeiden, eigene Konjugationsroutinen zu rollen. Das Problem dabei ist nur, dass es Tonnen an Arbeit erfordert, was andere bereits getan haben, und dass alle Randfälle mit Regeln abgedeckt werden, ist am Ende des Tages unmöglich.
MeCab ist statistisch veranlagt und trainiert mit vielen Daten. Es verwendet eine ausgefeilte maschinelle Lerntechnik namens bedingte zufällige Felder (CRFs) und die Ergebnisse sind wirklich ziemlich gut.
Viel Spaß mit den Japanern. Ich bin mir nicht sicher, wie gut dein Japanisch ist, aber wenn du Hilfe mit den Docs für mecab oder was auch immer brauchst, frag mich auch. Kanji kann am Anfang ziemlich einschüchternd sein.
Ihre Frage ist mir völlig unklar.
Allerdings hatte ich einige Erfahrung mit der japanischen Sprache zu arbeiten, also werde ich meine 2 Cent geben.
Da japanische Texte keine Worttrennung (z. B. Leerzeichen) enthalten, war das wichtigste Werkzeug, das wir erwerben mussten, ein Wörterbuch-basierter Worterkenner.
Sobald Sie den Text geteilt haben, ist es einfacher, ihn mit "normalen" Werkzeugen zu bearbeiten.
es gab nur zwei Werkzeuge, die das obige taten, und als Nebenprodukt arbeiteten sie auch als Tagger (d. h. Substantiv, Verb, etc.).
bearbeiten: Verwenden Sie immer Unicode, wenn Sie mit w-Programmierern arbeiten.
Wenn ich mich richtig erinnere (und das Jahr, in dem ich Japanisch nahm, habe ich viel nachgelassen, konnte ich mich irren), wird der Ersatz, den Sie machen wollen, durch das letzte oder zwei Symbole bestimmt. Nehmen wir Ihr erstes Beispiel, wird jedes Verb, das mit 'す' endet, immer 'し て' haben, wenn es auf diese Weise konjugiert wird. Ähnlich für む - & gt;ん で. Könnten Sie vielleicht eine Zuordnung der letzten Zeichen erstellen - & gt; konjugierte Form. Möglicherweise müssen Sie Ausnahmen berücksichtigen, z. B. alles, was mit xx っ conjug konjugiert ist.
Was die Portabilität zwischen Sprachen angeht, müssen Sie die Logik je nach ihrer Funktionsweise anders implementieren. Diese Lösung wäre auch für Spanisch relativ einfach zu implementieren, da die Konjugation davon abhängt, ob das Verb in -ar, -er oder -ir endet (wobei einige Verben Ausnahmen in Ihrer Logik erfordern). Leider ist das die Grenze meiner mehrsprachigen Fähigkeiten, also weiß ich nicht, wie gut es über diese beiden hinausgehen würde.
Da die meisten japanischen Verben einem kleinen Satz vorhersehbarer Muster folgen, ist es am einfachsten und am besten erweiterbar, alle Formen eines gegebenen Verbs zu erzeugen, indem man dem Verb sagt, welcher Konjugation es folgen soll, und dann Funktionen schreiben soll jede Form hängt von der Konjugation ab.
Pseudocode:
%Vor%Unregelmäßige Verben würden natürlich speziell behandelt werden.
Eine Variante davon würde für jede andere ziemlich reguläre Sprache funktionieren (d. h. nicht Englisch).
Versuche, mein Juwel (rom2jap) zu installieren. Es ist in Rubin.
%Vor%Öffnen Sie Ihr Terminal und tippen Sie:
%Vor%Tags und Links javascript language-agnostic unicode nlp cjk