Programmiertipps mit japanischer Sprache / Zeichen [geschlossen]

7

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.

    
percent20 02.05.2009, 18:00
quelle

7 Antworten

4
  

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):

  • Beim Schreiben von Quellcode mit Nicht-ASCII-Zeichenfolgenliteralen (Codierung im Editor / IDE konfigurieren)
  • Beim Kompilieren oder Interpretieren eines solchen Quellcodes (Compiler / Interpreter muss die Kodierung kennen)
  • Beim Lesen / Schreiben von Strings in eine Datei (die Codierung muss irgendwo in der API oder in den Metadaten der Datei angegeben werden)
  • Beim Schreiben von Strings in eine Datenbank (Codierung muss in der Konfiguration der DB oder der Tabelle angegeben werden)
  • Bei der Bereitstellung von HTML-Seiten über einen Webserver (Codierung muss in den HTML-Headern oder im Meta-Header der Seiten angegeben werden; Formulare können noch komplizierter sein)
Michael Borgwardt 03.05.2009, 17:58
quelle
26
  • Bleibe überall bei Unicode und utf-8.
  • Bleib weg von den einheimischen japanischen Kodierungen: euc-jp, shiftjis, iso-2022-jp, aber sei dir bewusst, dass du sie wahrscheinlich irgendwann treffen wirst, wenn du fortfährst.
  • Machen Sie sich mit einem Segmentierer für komplizierte Dinge wie POS-Analyse, Wortsegmentierung usw. vertraut. Die Standardwerkzeuge, die von den meisten Leuten verwendet werden, die NLP (Natural Language Processing) arbeiten, sind in der Reihenfolge ihrer Popularität / Macht. li>

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.

    
si28719e 03.05.2009 17:05
quelle
2

Was Sie tun müssen, ist die Regeln der Grammatik zu betrachten. Haben Sie ein Array von Regeln für jede Konjugation. Nehmen wir zum Beispiel ~ て Form. Psudocode:

%Vor%

usw. Im Grunde, gliedern Sie es in Typ I, II und III Verben.

    
soycamo 04.05.2009 04:55
quelle
1

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.

    
Berry Tsakala 02.05.2009 20:00
quelle
0

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.

    
Jimmy 02.05.2009 18:39
quelle
0

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).

    
Amanda S 07.05.2009 05:14
quelle
-2

Versuche, mein Juwel (rom2jap) zu installieren. Es ist in Rubin.

%Vor%

Öffnen Sie Ihr Terminal und tippen Sie:

%Vor%     
user5849542 28.01.2016 00:17
quelle