[PYTHON] Programm zur Schwächung der japanischen Sprache

Einführung

Als ich bei Amazon nach dem suchte, was ich wollte, hatte ich das Gefühl, dass sich das Niveau der japanischen Erklärungen für verdächtige Produkte in letzter Zeit verbessert hatte, und ich war beeindruckt, dass ich vom Lernen begeistert war, obwohl Japanisch schwierig war. Also beschloss ich, ein Programm zu machen, um Japanisch zu schwächen.

Was ich benutzt habe

Ich habe folgendes verwendet.

Problemstellung

Ich habe die folgenden japanischen Muster festgelegt, nach denen Ausländer wahrscheinlich Fehler machen oder subtile Unterschiede in den Nuancen nicht beurteilen können.

  1. Falscher Assistent
  2. Schreiben Sie den Teil, der in der Vergangenheit vorliegen soll, in die Gegenwart
  3. Schreiben Sie ein Wort in ein anderes Synonym

1. Falscher Assistent

Ich schreibe alle drei Monate einen Artikel. / Artikel, die heute interessant aussehen, sind mit Trends aufgereiht **. / JavaScript ** bis ** Ich persönlich mag Python.

Alles fühlt sich seltsam an. Hier sind die Bedingungen, unter denen Fehler in Hilfswörtern und Auswahlfehler auftreten, wie folgt.

・ Gilt nur, wenn der Teil des vorherigen Wortes "Substantiv" ist. ・ Das Fehlermuster ist wie folgt. "" Ist "<=>" ist "" und "<=>" von "" bis "<=>"

Der Code sieht so aus.

def mistake_ppp(ppp):
    substitute_ppp = ppp
    mistake_set = np.array([["Aber", "Ist"],["damit", "Zu"]["Von", "Als"]])
    target_pattern = mistake_set[np.any(mistake_set == ppp, axis = 1)]
    if len(target_pattern) > 0:
        the_other = target_pattern[np.where(target_pattern != ppp)]
        substitute_ppp = the_other[0]
    return substitute_ppp

2. Schreiben Sie den Teil, der in der Vergangenheit vorliegen soll, in die Gegenwart

Wenn ich einen langen Satz auf Englisch schreibe, vergesse ich manchmal, das Zeitsystem in der zweiten Hälfte anzupassen, und ich denke, es ist das gleiche Gefühl.

Die Bedingungen und Verarbeitungsdetails für diesen Fehler sind wie folgt.

・ Wenn das Hilfsverb "ta" erscheint, ersetzen Sie das vorhergehende Wort durch das aktuelle Formular.

Der Code (Auszug) sieht so aus.

    elif pos == "Hilfsverb" and word == "Ta":
        #Ersetzen Sie das vorherige Wort durch das aktuelle Formular
        word_list[word_idx - 1] =  basic_list[word_idx - 1]
        xfmd_basic = basic
        xfmd_word = ""

Es fühlt sich an, als hätte ich eine Liste der ursprünglichen Wörter (word_list) und ihrer Standardliste (basic_list) gespeichert. Der Rest wird entfernt, indem das Hilfsverb "ta" durch ein leeres Zeichen ersetzt wird.

3. Schreiben Sie ein Wort mit einem anderen Synonym

** Suche nach Artikeln, die interessant aussehen **. / Das Zimmer ist ** warm **, da der Ofen angeschlossen ist. / Beantworte Fragen zum Artikel **.

Die Bedingungen für diese Fehlerbehandlung sind wie folgt.

・ Das Konvertierungsziel sind nur Verben, Adjektive und Nomenklaturen. ・ Das Verb "to" wird nicht konvertiert. ・ Synonyme von Synonymen beziehen sich auf solche mit demselben Teil und derselben Grundform wie das Original und dürfen nur auf Japanisch sein.

Darüber hinaus ist die spezifische Verarbeitung wie folgt.

  1. Verwenden Sie WordNet, um eine Liste der Synonyme für das Zielwort abzurufen
  2. Wählen Sie ein Synonym aus der Liste der Synonyme
  3. Konvertieren Sie das Verwendungsformular in das gleiche wie das ursprüngliche Wort und ersetzen Sie es durch das ursprüngliche Wort

Für WordNet habe ich * japanisches Wordnet und englisches WordNet in einer sqlite3-Datenbank * von hier heruntergeladen und verwendet.

Der Code für 2 sieht so aus.

def choose_synonym(word):
    synonym = word
    pos, basic = analyze_pos(word)
    synonyms = search_synonyms(word)
    idxs = np.arange(0, len(synonyms), 1)
    np.random.shuffle(idxs)
    for idx in idxs:        
        synonym_pos, synonym_basic = analyze_pos(synonyms[idx])
        if synonym_pos == pos and synonym_basic == basic:
            synonym = synonyms[idx]
            break
    return synonym

Der Verarbeitungsinhalt und der Code von `search_synonyms (word)`, der 1 ausführt, ist wahrscheinlich lang, wenn er hier geschrieben wird, also WordNet-Struktur- und Synonym-Suche. Bitte beachten Sie dies für Details.

In 3 werden die Nutzungsformulardaten für jeden Teil verwendet, der in den in Mecab verwendeten Wörterbuchdaten (mecab-ipadic-2.7.0-20070801.tar.gz) enthalten ist, da dies mit der Standardfunktion von Mecab nicht realisiert werden konnte. Ich habe es versucht.

def transform(pos, basic, conjugate):
    target_word = None
    dict_file = None
    if pos == "Verb":
        dict_file = "Verb"
    elif pos == "Adjektiv":
        dict_file = "Adj"
    elif pos == "Substantiv":
        dict_file = "Noun"

    with open("../dict/pos/" + dict_file + ".csv", "rb") as f:
        words = f.readlines()
    for w in words:
        winfo = w.decode('euc_jp',errors ='ignore').split(",")
        conj = winfo[9]
        basicform = winfo[10]
        if basicform == basic and conj == conjugate:
            target_word = winfo[0]
            break
    return target_word

Das Problem mit dem Zeichencode beim Lesen von CSV hat mich ein wenig beunruhigt. Es entwickelt sich immer noch (ich habe es nicht gesehen, weil ich nichts anderes habe, aber ich kann nicht dorthin gehen)

Zusammenfassung

Der Verarbeitungsablauf ist unten zusammengefasst. Der Name des Unterprozesses wurde gekürzt, aber kennen Sie die Korrespondenz?

Flow_all.png

Ausprobieren

Ich habe es auf die Beschreibung (Amazon) der kürzlich gekauften AirPods Pro angewendet.


\begin{align*}
&{\Großes stummes Geräusch.}\\
&{\klein Das Mikrofon erkennt Geräusche an der Außen- und Innenseite des Ohrs. Die Anti-Noise-Funktion, die den Klang ausgleicht, eliminiert das Rauschen, bevor Sie es hören.}\\
\\
&{\Groß Fragen Sie nur, was Sie fragen möchten.}\\
&{\klein Wenn Sie das umgebende Yoko hören und reagieren möchten, wechseln Sie in den externen Tonaufnahmemodus. Halten Sie einfach den druckempfindlichen Sensor gedrückt.}\\
\\
&{\Große individuelle Passform.}\\
&{\kleine Bequeme und tragbare Silikon-Ohrstöpsel sind in 3 Größen erhältlich. Die Entlüftungslöcher an den Ohrstöpsel gleichen den Druck auf beiden Seiten des Ohrhörers aus.}\\
\\
&{\Große Erfahrung zum ersten Mal.}\\
&{\Kleiner dedizierter Lautsprechertreiber, Verstärker mit hohem Dynamikbereich und H1-Chip sind angeschlossen. Es erzeugt einen hochwertigen Klang, den man sich nur als kompakten Körper vorstellen kann.}\\
\\
&{\Große Einstellung und Siri. Alles ist einfach.}\\
&{\klein Sehr einfach mit dem iPhone zu verbinden. Sie können das Lied mit zwei AirPods teilen oder Siri die Nachricht lesen lassen, die Sie erhalten.}\\
\\
&{\Großes Laden ist kabellos. Der Spaß ist endlos.}\\
&{\Mit dem kleinen kabellosen Ladekoffer können Sie mit Ihrem AirPods Pro überall hingehen. Es ist kompatibel mit Qi-Standardladegeräten.}
\end{align*}

Ich habe einen Verdacht. Ich hätte das vielleicht nicht gekauft.

schließlich

Dieses Programm selbst ist nicht nützlich, aber ich denke, es wird im zukünftigen Japanischunterricht nützlich sein, um die Merkmale des schwachen Japanisch zu beseitigen. Ausländische Menschen, die Japanisch lernen, können leicht Fehler beim Lernen und Gruppieren der Tendenz zum Schreiben japanischer Sätze machen, und es scheint, dass jeder von ihnen einen Lehrplan für den japanischen Sprachunterricht erstellen kann.

Recommended Posts

Programm zur Schwächung der japanischen Sprache
Programm zum Konvertieren von Japanisch in Sendernamen
So starten Sie die erste Projektion
Ändern Sie den Ubuntu-Tofu in die japanische Umgebung
Konvertieren Sie einen Teil des japanischen Namens in ein Synonym
Python 2.7 Fügen Sie Dash.app japanische Dokumentation hinzu
Shell-Programm zur Anzeige von neunundneunzig
Umgang mit Japanisch mit Python
So stellen Sie die Serverzeit auf japanische Zeit ein
Eine Einführung in die Programmleistungsoptimierung
Verwendung von Japanisch mit NLTK-Plot
So zeigen Sie Python-Japanisch mit Lolipop an
Programm, um Lieblingsbilder von Twitter zu erhalten
Ich möchte ein Automatisierungsprogramm erstellen!
Erste Schritte: 30 Sekunden für die japanische Übersetzung von Keras
Verschiedene Kommentare im Programm zu schreiben
Wie man mit Python-Flüchen Japanisch eingibt