[PYTHON] Ich wollte einen Satz wie "Fucking Rashomon" (vergangene Form) generieren

Hinweis

Enthält diese Elemente

Vorwort

Über Fucking Deca Rashomon wurde vor einiger Zeit gesprochen. Ich mag diese unnötig große Grammatik, deshalb möchte ich sie generieren. Masu

Umgebung

Vorbereitung

Textdaten abrufen

Download das Original Rashomon von Aozora Bunko. Hier sagte, dass Sie Dateien ohne Ruby herunterladen können, aber ich konnte nur Ruby finden, also laden Sie das und Ruby herunter. Entfernen. Löschen Sie zunächst die untere Notation, die von der Aozora Bunko-Seite hinzugefügt wurde. image.png

Mit der Funktion auf der Seite des Texteditors||《[^《》]*》|※[[^[]]*]Löscht (ersetzt nichts) die Zeichenfolge, die dem regulären Ausdruck in entspricht. image.png Oh, und der Zeichencode wurde auf Shift-JIS gesetzt, aber ich habe ihn in UTF-8 geändert, weil es umständlich war.

Denken Sie über die Richtung nach

Vergleich vorerst

Damit ist die Vorbereitung der Textdaten vorerst abgeschlossen. Vergleichen wir den verdammt gewöhnlichen Rashomon und den verdammt großen Rashomon mit einem kleinen difff.jp. image.png Verstehst du. Mit Ausnahme der Zeilenumbrüche wird das Shit Deca Rashomon zu einem Shit Deca mit ** vollständiger "Addition" ** verarbeitet, ohne den Originaltext zu schneiden. Schließlich müssen Sie darauf achten, das Wort selbst nicht zu ändern **, wenn Sie einen verdammten Deka-Satz erzeugen. Durch einfaches Hinzufügen zu vieler Teile wird der Originaltext zerstört.

Über "Ein-Punkt-Spezialisierung"

Auch wenn es um verdammtes Deka geht, ist es eher eine ** Ein-Punkt-Spezialisierung ** als eine Menge Beschreibung. Zum Beispiel

Stattdessen versammelten sich viele Krähen von irgendwoher. Wenn ich es mir tagsüber ansehe, fliegen die Krähen im Kreis herum und knurren um den hohen Fuchsschwanz.

Der Text des verdammt gewöhnlichen Rashomon wird so in den verdammten Deka-Rashomon geändert - weil der Wortlaut schlecht ist, nennen wir es ** verdammt **.

Stattdessen haben sich ** super-böse ** Krähen von irgendwo ** in Milliarden ** versammelt. Wenn ich es mir tagsüber ansehe, bilden die Krähen einen Kreis mit ** 10.000 ** Federn, ** Scheiße ** um den hohen Schwanz ** bei einem Volumen der Zerstörung des Trommelfells **, während ** bei Unterschallgeschwindigkeit *. * Herum fliegen.

Dieses Ficken konzentriert sich darauf, die bestehende Beschreibung zu stärken, denke ich. Zum Beispiel wird "viele" zu "** Millionen Einheiten ** viele", "wie viele" zu "wie viele ** Millionen " und "hoch" zu " Scheiße ** hoch". .. Zum Beispiel wäre es möglich, die Attribute zu erhöhen, indem "hoch" in "** groß und ** hoch" geändert wird. Stattdessen konzentrieren wir uns auf die Stärkung der vorhandenen Beschreibung. Wenn die vorhandene Beschreibung nicht vorhanden ist, wird eine neue Beschreibung erstellt und diese verstärkt. Wenn es "Kou ga" ist, wird es "** Evil ** Kou ga" und es wird "** Super ** Evil Kou ga". Erstens sind die Titel "** Shit ", " Big **" und "Rashomon", also stärkt "Shit" "Big". [^ 1]

auskommen

Vorerst

"Frühling" ist wichtig, um eine Scheiße zu machen. Diese Jungs werden sofort etwas unternehmen. Um zu "rollen"

  1. Finden Sie ein unabhängiges Verb

Es scheint, dass Sie einen typischen Prozess durchlaufen sollten. Ich denke, es gibt einen anderen guten Weg, aber ich konnte nicht daran denken, also habe ich das IPA-Wörterbuch direkt aufgerufen ** (Referenz /adsmedia.hatenablog.com/entry/2016/10/20/002211))).

Datenaufbereitung

Laden Sie zuerst IPA Dictionary herunter, entpacken Sie es und kopieren Sie die Datei Verb.csv in das aktuelle Verzeichnis, um es zu öffnen. Dies ist eine Datei, die Verbdaten enthält. Der Inhalt ist so. image.png Ich brauche nichts anderes als die Zeile, in der "Fortlaufende Form" in der 10. Spalte steht. Löschen Sie sie also. Ich denke, es wäre schön, es mit einem Texteditor (keine Tabellenberechnungssoftware) zu öffnen und die Zeichenfolge zu löschen, die dem regulären Ausdruck von ^ (?!. *, Fortlaufende Form,) entspricht. * $ \ N. image.png Speichern Sie es jetzt als ** Continuous Form List.csv **. Da die Nachbearbeitung problematisch ist, ändern Sie den Zeichencode in ** UTF-8 **. Zusätzlich werden wir eine Datei erstellen, die sich auf die Verwendung von "Makuru" bezieht. Dieser Teil der ursprünglichen Verb.csv image.png Kopieren Sie es und speichern Sie es im aktuellen Verzeichnis mit dem Namen ** Roll.csv **. Dies ist auch UTF-8.

Code

Ich habe geschrieben.

python


# -*- coding: utf-8 -*-
import MeCab
import csv
t = MeCab.Tagger()
print("Eingeben")
text = input()
nodes_s = t.parseToNode(text)
output = ""
with open('Kontinuierliche Formularliste.csv',encoding='UTF-8') as r, open("Spree.csv",encoding='UTF-8') as m:
    r_list = [list(x) for x in zip(*[row for row in (csv.reader(r))])]
    m_list = [list(x) for x in zip(*[row for row in (csv.reader(m))])]
while nodes_s:
    nodes_a = nodes_s.feature.split(",")
    if nodes_a[:2] == ["Verb", "Unabhängigkeit"] and not nodes_s.feature.split(",")[6] in ["Machen","Gibt es"]:
        ori = nodes_a[6]
        type = nodes_a[5]
        renyo = r_list[0][r_list[10].index(ori)]
        mak = m_list[0][m_list[9].index(type)]
        if mak == "Rollen" and nodes_s.next.feature.split(",")[7][0] in "Tachitsuteto":
            mak = "Maku"  #Ausnahmebehandlung, da es Fälle gab, in denen die Verbindung nicht funktionierte.
        output += renyo + mak
    else:
        output += nodes_s.surface
    nodes_s = nodes_s.next
print("\n Ausgabe:\n" + output)

Entschuldigung für den schlampigen Code. Lass diesen Kerl laufen.

Eingang Der Diener verfluchte die alte Frau, stolperte über die Leiche, blockierte ihre Eile und versuchte zu fliehen. Die alte Frau versucht immer noch, ihren Diener loszuwerden. Der Diener schiebt es ebenfalls zurück und versucht, es nicht loszulassen. Die beiden packten sich eine Weile schweigend in der Leiche. Der Sieg oder die Niederlage ist jedoch von Anfang an bekannt. Der Diener packte schließlich den Arm der alten Frau und schlug ihn gewaltsam nieder. Es ist ein Arm mit nur Knochen und Haut, genau wie ein Hühnerbein. ``

Ausgabe Die Dienerin verfluchte die alte Frau, als sie über die Leiche stolperte, hastig flatterte und die Linie blockierte, die zu fliehen versuchte. Die alte Frau versucht immer noch, ihren Diener loszuwerden. Der Diener schiebt es ebenfalls zurück und versucht, es nicht loszulassen. In der Leiche packten sich die beiden eine Weile schweigend. Der Sieg oder die Niederlage ist jedoch von Anfang an klar. Der Diener packte schließlich den Arm der alten Frau und schlug ihn gewaltsam nieder. Es ist ein Arm mit nur Knochen und Haut, genau wie ein Hühnerbein. `` Vorerst habe ich das Gefühl, dass das, was ich vorhatte, etwas zu sein scheint, was getan zu werden scheint. Es gibt verschiedene Mängel, Wenn dies unverändert bleibt, wird es "zu stark gewürfelt", sodass Anpassungen erforderlich sind.

Töte "nicht verderben"

Dieser Code lässt es unnatürlich aussehen, wenn Sie bestimmte Zeichen eingeben. Zum Beispiel: "Niemand kennt den Aufenthaltsort des Dieners." Angenommen, Sie haben eingegeben Die Ausgabe ist Niemand kennt den Aufenthaltsort des Dieners. Es ist `. Nicht, was? Worüber wissen Sie nicht alles? Offensichtlich komisch, also werden wir den Code ändern.

python


#Unterlassung
while nodes_s:
    nodes_a = nodes_s.feature.split(",")
    if nodes_a[:2] == ["Verb", "Unabhängigkeit"] and not nodes_s.feature.split(",")[6] in ["Machen","Gibt es"]:
#Unterlassung

Spielen Sie einen Moment mit dem Wenn hier

python


while nodes_s:
    nodes_a = nodes_s.feature.split(",")
    if nodes_a[:2] == ["Verb", "Unabhängigkeit"] and (not nodes_s.feature.split(",")[6] in ["Machen","Gibt es"]) and not nodes_s.next.feature.split(",")[4] in ["Spezieller Nai"]:

Ich werde dies tun. Dies ist ein Prozess, der dem Ausnahmeprozess zum Zeitpunkt der Verbindung ähnlich ist und durch ** Vorlesen ** des nächsten Knotens des Knotens, der mit "next" verarbeitet wird, bestimmt wird. Damit weiß niemand den Aufenthaltsort des Dieners. Wird ausgegeben.

Töte "Makudde"

Ich werde diesen Kerl töten, weil "wählen" so etwas wie "wählen und drücken" wird. Zum Töten grob ersetzen. Ich habe es gelöst, indem ich "output = output.replace (" Makutte "," Makutte ")" eine Zeile vor dem Drucken eingefügt habe. Oh, es gab auch so etwas wie "gerollt", also ersetzen wir es immer durch "gerollt"

Folgendes wird weggelassen

Nun, ich habe einen unnatürlichen Ort wie diesen künstlich repariert Da es schwierig ist, den Prozess zu verschieben, habe ich ihn weggelassen und als Ergebnis diesen Code erhalten

python


# -*- coding: utf-8 -*-
import MeCab
import csv
t = MeCab.Tagger()
print("Eingeben")
inp = input()
def makuring(text):
    nodes_s = t.parseToNode(text)
    output = ""
    with open('Kontinuierliche Formularliste.csv',encoding='UTF-8') as r, open("Spree.csv",encoding='UTF-8') as m:
        r_list = [list(x) for x in zip(*[row for row in (csv.reader(r))])]
        m_list = [list(x) for x in zip(*[row for row in (csv.reader(m))])]
    while nodes_s:
        nodes_a = nodes_s.feature.split(",")
        if nodes_a[:2] == ["Verb", "Unabhängigkeit"] and (not nodes_s.feature.split(",")[6] in ["Machen", "Gibt es", "Werden", "Ist","Erzählen","sagen","gehen"]) and not nodes_s.next.feature.split(",")[4] in ["Spezieller Nai", "Besondere"]:
            ori = nodes_a[6]
            type = nodes_a[5]
            if ori in r_list[10]:
                renyo = r_list[0][r_list[10].index(ori)]
                mak = m_list[0][m_list[9].index(type)]
                if mak == "Rollen" and nodes_s.next.feature.split(",")[7][0] in "Tachitsuteto":
                    mak = "Maku"  #Ausnahmebehandlung, da es Fälle gab, in denen die Verbindung nicht funktionierte.
                output += renyo + mak
            else:
                output += nodes_s.surface
        else:
            output += nodes_s.surface
        nodes_s = nodes_s.next
    return output.replace("Makude", "Aufrollen").replace("Bedeckt", "Besprüht").replace("Makuda", "Aufgerollt")

Übrigens habe ich diese als Funktionen behandelt. Damit ist der "rollende" Prozess vorerst abgeschlossen.

Zahlen zusammenhalten

Die Nummer der Scheiße Deca Rashomon ist auch Scheiße. Ist die Rate ungefähr 100 bis 10000 mal? Es gibt auch viele Ereignisse wie 60.000 Menschen gegen Diebe, denen "seltsam konkrete Zahlen gegeben werden". Vorerst hatte ich das Gefühl, die vorhandene Zahl mit 10 mit der 2. bis 4. Potenz zu multiplizieren.

python


# -*- coding: utf-8 -*-
import MeCab
import csv
from kanjize import int2kanji, kanji2int
import random
t = MeCab.Tagger()
print("Eingeben")
inp = input()
kan_dic = { "hundert": "hundert","Fünf": "Fünf","5": "Fünf","Acht": "Acht","・": "・","Billion": "Billion","9": "Neun",
            "Sieben": "Sieben","drei": "drei","0": "〇","0": "〇","Zehntausend": "Zehntausend","Null": "〇","vier": "vier",
            "7": "Sieben","2": "zwei","4": "vier","1": "einer","6": "Sechs","〇": "〇","Zehn": "Zehn",
            "Sechs": "Sechs","8": "Acht","3": "drei","zwei": "zwei","○": "〇" ,"tausend": "tausend","einer": "einer",
            "Milliarde": "Milliarde","Neun": "Neun","Hyaku": "hundert","Null": "〇","Ichi": "einer"} #Ein Wörterbuch zum Normalisieren von Zahlen, die durch Verarbeiten des IPA-Wörterbuchs erstellt wurden

#(Weggelassen)
def incr(text):
    nodes_s = t.parseToNode(text)
    output = ""
    int_flag = False
    count = 0
    while nodes_s:
        count += 1
        nodes_a = nodes_s.feature.split(",")
        if nodes_a[1] == "Nummer" and nodes_s.surface in kan_dic.keys():
            if not int_flag:
                int_flag = True
                kansuji = ""
            kansuji += kan_dic[nodes_s.surface]
        else:
            if int_flag:
                int_flag = False
                random.seed(kansuji)
                output += int2kanji(kanji2int(kansuji) * (10 ** random.randint(2,4)))
            elif count > 1:
                if nodes_s.prev.surface in ["Was", "Was", "Wie viele"] and nodes_s.prev.feature.split(",")[1] == "Nummer":
                    random.seed(nodes_s.surface)
                    output += random.choice(["tausend","Zehntausend","Milliarde"])
            output += nodes_s.surface
        nodes_s = nodes_s.next
    return output

print("\n Ausgabe:\n" + makuring(incr(inp)))

Eingang Unter dem breiten Tor ist niemand außer diesem Mann. In einer großen Säule befindet sich jedoch ein with, wobei die Bräunungsbeschichtung stellenweise abgezogen ist. Solange Rashomon auf Suzaku Oji ist, gibt es neben diesem Mann wahrscheinlich noch ein paar Leute wie Ichimekasa und Koukara Hat, die im Regen sind. Das ist niemand außer diesem Mann. ``

Ausgabe Unter dem breiten Tor ist niemand außer diesem Mann. Es gibt jedoch tausend 蟋蟀 in einer großen Säule mit einer abgestreiften Bräunungsbeschichtung. Solange sich Rashomon auf Suzaku Oji befindet, werden neben diesem Mann wahrscheinlich noch 5.000 Menschen wie Ichimekasa und Koukara Hat im Regen sein. Das ist niemand außer diesem Mann. `` Der Grund, warum "zwei drei Personen" in "5.000 Personen" anstelle von "zweitausend Personen" geändert wird (dies ist eine falsche Interpretation), ist das "Kanjize", das für die gegenseitige Umwandlung zwischen Kanji und Zahlen verwendet wird. Ich denke, es hängt von den Spezifikationen der Bibliothek ab. Ich habe das Gefühl, ich kann es reparieren, aber es ist ein Ärger, also höre ich auf.

"Viele" Verarbeitung

Zum Zeitpunkt der Scheiße wird "viel" zu "viel in 100 Millionen Einheiten", nicht wahr? Mit nltk und Wordnet sieht es gut aus. Lesen Sie daher diesen Artikel.

python


pip install nltk
python -c "import nltk;nltk.download('wordnet')"
python -c "import nltk;nltk.download('omw')"

Wird an der Eingabeaufforderung ausgeführt, um die Umgebung vorzubereiten. Versuchen wir nun, viele Synonyme auszugeben. (Der Code des Artikels, den ich zuvor gepostet habe, ist fast der gleiche, tut mir leid)

python


from nltk.corpus import wordnet

synsets = wordnet.synsets("Viele", lang='jpn')
takusan_synset = synsets[0]
synonyms = takusan_synset.lemma_names("jpn")
print(synonyms)

Ausgabe "[" Viel "," Viel "," Viel "," Viel "," Viele "," Viel "," Kodai "," Überfluss "," Totally "," Yutaka "," Rich "," Fülle ',' Prall ',' Viel ',' Fruchtbarkeit '] ` Es ist gut, es ist viel. Speichern Sie diese Spuckliste als Array mit "vielen Wörtern" und fügen Sie den Wörtern, in denen die in diesem Array enthaltenen Wörter als Synonyme enthalten sind, bestimmte Zahlen hinzu. (Ich gab auf, weil ich mir keine Möglichkeit vorstellen konnte, die Anzahl der Diebe auf 60.000 zu erhöhen.)

python


# -*- coding: utf-8 -*-
import MeCab
import csv
from kanjize import int2kanji, kanji2int
import random
from nltk.corpus import wordnet
#(Weggelassen)
blacklist = []
t = MeCab.Tagger()
takusan = [ 'Viele', 'Groß', 'Große Menge', 'Masse', 'Viele', 'Menge', 'Kodai',
            'Reichlich', 'Total', 'Yutaka', 'Yutakaか', 'Yutaka富', 'Yutaka満', 'Yutaka潤', 'Yutaka饒']
#(Weggelassen)
def embod(text):
    global blacklist
    nodes_s = t.parseToNode(text)
    output = ""
    while nodes_s:
        nodes_a = nodes_s.feature.split(",")
        if not (nodes_a[1] in ["Verb", "Partikel", "Symbol", "助Verb"] or nodes_s.surface in blacklist):
            synsets = wordnet.synsets(nodes_s.surface, lang='jpn')
            synsets_a = []
            for i in synsets:
                synsets_a += i.lemma_names("jpn")
            if len(set(takusan) & set(synsets_a)) > 0:
                random.seed(nodes_s.prev.prev.surface +nodes_s.prev.surface) #Ich hatte das Gefühl, dass es besser wäre, wenn das generierte Ergebnis für eine Eingabe immer das gleiche wäre, also Seed-Einstellung
                output += random.choice(["In 10.000 Einheiten","In 100 Millionen Einheiten","In Billionen"])
            else:
                blacklist += nodes_s.surface
        output += nodes_s.surface
        nodes_s = nodes_s.next
    return output

Ich hatte das Gefühl, dass die Verarbeitung länger dauern würde, deshalb habe ich eine schwarze Liste hinzugefügt, um die Ausführungszeit zu verkürzen. Eingang Stattdessen versammelten sich viele Krähen von irgendwoher. Wenn ich es mir tagsüber ansehe, fliegen die Krähen im Kreis herum und knurren um den hohen Fuchsschwanz. Besonders als der Himmel über dem Tor bei Sonnenuntergang bewölkt wurde, sah es so aus, als hätte er Sesam. Die Krähe kommt natürlich, um das Fleisch der Toten am Tor zu schlürfen. »Aber heute kann ich keinen von ihnen sehen, wahrscheinlich weil das Zeitlimit zu spät ist. An einigen Stellen kann man jedoch auf den Steintreppen mit langem Gras im Einsturz den Krähenmist sehen, der sich an weißen Flecken festhält. Der Diener legte den ausgewaschenen dunkelblauen Hintern auf die sieben Steinstufen und beobachtete den Regen schwach, wobei er auf die großen Falten auf seiner rechten Wange achtete. .. **Ausgabe** Stattdessen versammelten sich viele Krähen in Billionen von irgendwoher. Als ich mich tagsüber umsah, zogen die Krähen Tausende von Vögeln im Kreis, flatterten um den hohen Fuchsschwanz und flogen herum. Besonders als der Himmel über dem Tor bei Sonnenuntergang bewölkt wurde, war er deutlich sichtbar, als wäre er mit Sesam bestreut worden. Die Krähe kommt natürlich, um das Fleisch der Toten am Tor zu schlürfen. »Aber heute kann ich nicht tausend Vögel sehen, wahrscheinlich weil das Zeitlimit zu spät ist. An einigen Stellen war es jedoch kurz vor dem Zerfall, und auf den Steinstufen des langen Grases im Streusel konnte ich den Mist der Krähen sehen, die sich an Weiß klammerten. Der Diener legt den ausgewaschenen dunkelblauen Hintern auf die 7.000 Steinstufen und streut den Regen vage, während er sich um die großen Falten auf seiner rechten Wange sorgt. Ich sah mich um. Ist es nicht ein ziemlich gutes Gefühl?

Verarbeitung von "zwei drei Personen"

Ich schrieb vorhin: "Ich habe das Gefühl, ich kann es reparieren, aber es ist ein Ärger, also werde ich damit aufhören", aber ich habe das Gefühl, dass es einfacher ist als ich dachte, also werde ich es reparieren.

python


#(Weggelassen)
        else:
            if int_flag:
                int_flag = False
                if len(kansuji) > 1:
                    if all((s in "eins zwei drei vier fünf sechs sieben acht neun") for s in [kansuji[0],kansuji[1]]): #Wenn die ersten beiden Buchstaben beide 1-9 sind, wird dies als "Nisan" ähnlich angesehen.
                        output += kansuji[0]
                        kansuji = kansuji[1:]
                random.seed(kansuji)
                output += int2kanji(kanji2int(kansuji) * (10 ** random.randint(2,4)))
#(Weggelassen)

Eingang Unter dem breiten Tor ist niemand außer diesem Mann. In einer großen Säule befindet sich jedoch ein with, wobei die Bräunungsbeschichtung stellenweise abgezogen ist. Solange Rashomon auf Suzaku Oji ist, gibt es neben diesem Mann wahrscheinlich noch ein paar Leute wie Ichimekasa und Koukara Hat, die im Regen sind. Das ist niemand außer diesem Mann. **Ausgabe** Es gibt niemanden außer diesem Mann unter dem Tor, das so breit wie eine Billion ist. Es gibt jedoch tausend 蟋蟀 in einer großen Säule mit einer abgestreiften Bräunungsbeschichtung. Solange sich Rashomon auf Suzaku Oji befindet, gibt es neben diesem Mann wahrscheinlich zweitausend weitere Menschen wie Ichimekasa und Koukara Hat, die im Regen sind. Das ist niemand außer diesem Mann.

Ist es perfekt

Hinzufügung der Beschreibung / Ficken

Vorwort (lang)

Ich bin endlich gekommen ... Wahrscheinlich die größte Herausforderung, ich verstehe immer noch nicht, wie ich das schreiben soll Nein, was soll ich tun? Nun, vorerst werde ich etwas wie "eine neue Beschreibung hinzufügen" zu "Wörtern, die noch nicht beschrieben wurden" versuchen.

↑ Ich habe diesen Satz vor 3 Tagen geschrieben ... Ich habe Hacknet gemacht, wenn es eine Lücke von 3 Tagen gab ......... Ich bin zu unproduktiv Weil ich Pointclickers Daten auf Hacknet manipuliert habe, während ich gelacht habe wie "Nein, es ist wirklich gut ~~~~~" ... Es ist ein schrecklicher Typ. Wenn Sie ** Cabocha innerhalb von 3 Tagen für die Abhängigkeitsanalyse verwenden, können Sie es übrigens in "Sätze mit Beschreibung" und "Sätze ohne Beschreibung" unterteilen. ** Das habe ich mir ausgedacht Deshalb habe ich Cabocha vorerst von hier installiert ……… Das Nun, ich installiere und teste es jetzt, aber ** es gibt nichts aus ** Ich habe in etwas versagt, ich kann nicht anders Deshalb ** suchen Sie nach einem anderen Abhängigkeitsanalysator als Cabocha **

Das ist es

COTOHA API. Laut einem Bekannten scheint dieser Typ eine (starke) Syntaxanalysefunktion zu haben. ** Ich dachte, ich würde die Zukunft damit erfassen **, aber ich weiß nicht, was es ist, aber "Ich lese die Nutzungsbedingungen". Ich kann das Kontrollkästchen nicht aktivieren und gebe auf. Es ist aus

Wenn es darum geht

Ich werde etwas dagegen tun. Machen wir einen Plan Nun, Sie sollten beurteilen, ob es "beschreibend" oder "nicht beschrieben" ist, und wenn dies nicht der Fall ist, fügen Sie etwas Neues und Angemessenes hinzu. Zuallererst muss es etwas zu sagen geben ** "zu beschreibende Wörter" **. Nehmen wir vorerst an, dass ** allgemeine Nomenklatur ** (Dieb, 蟋蟀 usw.) und ** eigenständiges Verb ** (Sprechen, Herumfliegen usw.) "zu beschreibende Wörter" sind. Und um zu beurteilen, ob "dieses zu beschreibende Wort" beschrieben wird, ** wird verwendet, ob das vorherige morphologische Element ein Fallhilfswort oder ein Interpunktionszeichen ** ist. Ich hatte das Gefühl, dass dies ein gutes Gefühl sein würde, also werde ich das tun. Lassen Sie uns eine darauf basierende Funktion erstellen.

python


#(Weggelassen)
def deco(text):
    nodes_s = t.parseToNode(text)
    output = ""
    count = 0
    while nodes_s:
        nodes_a = nodes_s.feature.split(",")
        count += 1
        if nodes_a[:2] in [["Substantiv", "Allgemeines"], ["Substantiv", "固有Substantiv"], ["Verb", "Unabhängigkeit"]] and count > 1:
            if nodes_s.prev.feature.split(",")[0] in ["Coalm"] or nodes_s.prev.feature.split(",")[1] in ["Fallassistent", "Phrase", "Lesepunkt", "Parallele Assistenten"]:
                output += "Verdammt groß"
        output += nodes_s.surface
        nodes_s = nodes_s.next
    return output

print("\n Ausgabe:\n" + makuring(embod(incr(deco(inp)))))

Zur Zeit haben wir eine Funktion geschaffen, die "Fucking Deca" vor ein morphologisches Element stellt, das noch nicht beschrieben worden zu sein scheint. Ich habe noch nicht einmal zwischen Verben und Nomenklatur unterschieden, aber machen wir es jetzt.

Eingang Unter dem breiten Tor ist niemand außer diesem Mann. In einer großen Säule befindet sich jedoch ein with, wobei die Bräunungsbeschichtung stellenweise abgezogen ist. Solange Rashomon auf Suzaku Oji ist, gibt es neben diesem Mann wahrscheinlich noch ein paar Leute wie Ichimekasa und Koukara Hat, die im Regen sind. Das ist niemand außer diesem Mann. ``

Ausgabe Es gibt niemanden außer diesem verdammt großen Mann unter dem Tor, der so breit wie eine Billion ist. Es gibt jedoch tausend Shit-Deca 蟋蟀 in einer großen Shit-Deca-Säule mit viel hellbraunem Scheiß. Solange es einen verdammt großen Rashomon auf dem verdammt großen Suzaku Oji gibt, gibt es neben diesem verdammt großen Mann wahrscheinlich zweitausend weitere Leute, wie Ichimekasa und den verdammt großen Krähenhut, die verdammt großes Regenwetter haben. Das ist niemand außer diesem verdammt großen Kerl. `` Äh ~~~~~~~~~~~~~ Kannst du gehen ...? Nein, huh ~~~~ Es ist immer noch schwer zu beurteilen, und ich werde es ein wenig beheben.

python


def deco(text):
    nodes_s = t.parseToNode(text)
    output = ""
    count = 0
    while nodes_s:
        nodes_a = nodes_s.feature.split(",")
        count += 1
        if count > 1:
            if nodes_s.prev.feature.split(",")[0] in ["Coalm"] or nodes_s.prev.feature.split(",")[1] in ["Fallassistent", "Phrase", "Lesepunkt", "Parallele Assistenten"]:
                if nodes_a[:2] in [["Substantiv", "Allgemeines"], ["Substantiv", "固有Substantiv"]]:
                    output += "Verdammt groß"
                elif nodes_a[:2] in [["Verb", "Unabhängigkeit"]]:
                    output += "Absurd"
        output += nodes_s.surface
        nodes_s = nodes_s.next
    return output

Für Verben wird "durcheinander" hinzugefügt, und für die Nomenklatur wird "verdammt groß" hinzugefügt. Ich denke, das macht es ein bisschen einfacher zu verstehen.

Eingang Unter dem breiten Tor ist niemand außer diesem Mann. In einer großen Säule befindet sich jedoch ein with, wobei die Bräunungsbeschichtung stellenweise abgezogen ist. Solange Rashomon auf Suzaku Oji ist, gibt es neben diesem Mann wahrscheinlich noch ein paar Leute wie Ichimekasa und Koukara Hat, die im Regen sind. Das ist niemand außer diesem Mann. ``

Ausgabe Es gibt niemanden außer diesem verdammt großen Mann unter dem Tor, der so breit wie eine Billion ist. Es gibt jedoch tausend Shit-Deca 蟋蟀 in einer großen Shit-Deca-Säule mit viel hellbraunem Scheiß. Solange der verdammt große Rashomon den verdammt großen Suzaku Oji durcheinander bringt, gibt es neben diesem verdammt großen Mann wahrscheinlich noch zweitausend weitere Leute, wie den Ichimekasa und den verdammt großen Krähenhut. .. Das ist niemand außer diesem verdammt großen Kerl. ``

Güte

Versuchen Sie vorerst, den Wortschatz zu erweitern

Einer der Reize von Koshideka Rashomon ist die Fülle von Koshideka. Grobe Kategorisierung der verdammten Redewendungen, ** "Dinge, die mit der Nomenklatur verbunden sind" ** (groß / riesig), ** "Dinge, die mit Verben verbunden sind" ** (wie Idioten / durcheinander) und ** "Interessenvertretung Es gibt drei Arten: "Dinge, die bei dir bleiben" ** (super / verdammt). "Dinge, die mit Adjektiven verbunden sind" sind manchmal mit Scheiße verbunden, daher ist es eine kleine Sonderstellung. Ich denke, es ist möglich, es mechanisch zu generieren, aber es ist ärgerlich, also ** habe ich es manuell generiert. ** ** **

Mein Wortschatz ist schlecht geworden, weil ich es richtig gemacht habe ... Nun, lass es uns damit machen Machen Sie vorerst Nomen und Verben zum Ficken

python


def deco(text):
    nodes_s = t.parseToNode(text)
    output = ""
    count = 0
    while nodes_s:
        nodes_a = nodes_s.feature.split(",")
        count += 1
        if count > 1:
            if nodes_s.prev.feature.split(",")[0] in ["Coalm"] or nodes_s.prev.feature.split(",")[1] in ["Fallassistent", "Phrase", "Lesepunkt", "Parallele Assistenten"]:
                random.seed(nodes_s.prev.surface + nodes_s.surface + nodes_s.next.surface) #Samenentscheidung unter Bezugnahme auf die Vorder- und Rückseite
                if nodes_a[:2] in [["Substantiv", "Allgemeines"], ["Substantiv", "固有Substantiv"]]:
                    output += random.choice(["Groß","Groß","Geki","巨Groß","Es gibt über Elefanten","Gefährlich","groß","Auf keinen Fall","Genial","Der Stärkste der Welt"])
                elif nodes_a[:2] in [["Verb", "Unabhängigkeit"]]:
                    output += random.choice(["Mecha Mecha","Wie ein Idiot", "Ernsthaft", "Es fühlt sich schlecht an"])
        output += nodes_s.surface
        nodes_s = nodes_s.next
    return output

Oh, und ich habe die Reihenfolge der Funktionen ein wenig geändert

python


print("\n Ausgabe:\n" + makuring(deco(embod(incr(inp)))))

Eingang "Der Autor schrieb gerade:" Der Diener wartete auf den Regen. " Selbst wenn der Regen aufhört, hat der Diener keine Ahnung, was er tun soll. Normalerweise sollte ich natürlich in der Lage sein, zum Haus meines Mannes zurückzukehren. Sein Meister gab ihm jedoch vor 45 Tagen Freizeit. Wie ich bereits schrieb, war die Stadt Kyoto zu dieser Zeit rückläufig. Es ist nichts anderes als die kleinen Folgen dieses Niedergangs, dass diesem Diener Zeit von seinem Meister gegeben wurde, der seit vielen Jahren benutzt wird. Daher ist es angemessener zu sagen: "Der Diener, der im Regen war, war ratlos, weil er nirgendwo hingehen konnte", als zu sagen: "Der Diener hat auf den Regen gewartet." Außerdem ist der heutige Himmel nicht wenig, der Diener dieser Heian-Dynastie

Ausgabe "Der Autor schrieb gerade:" Der Diener hat wirklich auf den starken Regen gewartet. " Selbst wenn der Regen wirklich aufhört, kann der große Diener nichts dazu sagen. Normalerweise sollte es natürlich möglich sein, wie ein Idiot zum Haus des großartigen Meisters zurückzukehren. Der schreckliche Meister gab ihm jedoch vor viertausend Tagen eine lächerliche Zeit. Wie ich bereits schrieb, ging die Stadt Kyoto zu dieser Zeit ohne tausend Straßen zurück. Die Tatsache, dass dieser große Diener mit seinem Meister herumgespielt hat, der seit vielen Jahren durcheinander ist, ist tatsächlich ein Durcheinander in den enormen Folgen dieses kleinen Niedergangs. Anstatt zu sagen: "Der Diener wartete wirklich auf den starken Regen", sagte er: "Der Diener, der im Regen durcheinander war, konnte nirgendwo hingehen, und er war wirklich ratlos in Billionen." Es ist angemessener, wie ein Narr zu sagen. Außerdem ist der heutige Himmel nicht wenig und diese Billionen Einheit des Dieners der riesigen Heian-Dynastie

Hmmm Ist es in Ordnung (ist es in Ordnung?)

Nicht wirklich

Das verdammte Deka Rashomon ändert im Grunde "nicht" in "nicht ernst". Das Wort Falsch, das nicht mehr gestärkt werden kann, wird unter dem Gesichtspunkt der "Gewissheit" groß gemacht, nicht wahr?

python


def deco(text):
    nodes_s = t.parseToNode(text)
    output = ""
    count = 0
    while nodes_s:
        nodes_a = nodes_s.feature.split(",")
        count += 1
        if count > 1:
            if nodes_s.prev.feature.split(",")[0] in ["Coalm"] or nodes_s.prev.feature.split(",")[1] in ["Fallassistent", "Phrase", "Lesepunkt", "Parallele Assistenten"]:
                random.seed(nodes_s.prev.surface + nodes_s.surface) #Samen vorher(Ich habe einen Fehler erhalten, beziehen Sie sich also nur auf prev)
                if nodes_a[:2] in [["Substantiv", "Allgemeines"], ["Substantiv", "固有Substantiv"]]:
                    output += random.choice(["Groß","Groß","Geki","巨Groß","Es gibt über Elefanten","Gefährlich","groß","Auf keinen Fall","Genial","Der Stärkste der Welt"])
                elif nodes_a[:2] in [["Verb", "Unabhängigkeit"]]:
                    output += random.choice(["Mecha Mecha","Wie ein Idiot", "Ernsthaft", "Es fühlt sich schlecht an"])
        if nodes_a[0] == "Adjektiv" and nodes_a[6] == "Abwesend":
            output += "Ernsthaft"
        output += nodes_s.surface
        nodes_s = nodes_s.next
    return output

Eingang "Der Autor schrieb gerade:" Der Diener wartete auf den Regen. " Selbst wenn der Regen aufhört, hat der Diener keine Ahnung, was er tun soll. Normalerweise sollte ich natürlich in der Lage sein, zum Haus meines Mannes zurückzukehren. Sein Meister gab ihm jedoch vor 45 Tagen Freizeit. Wie ich bereits schrieb, war die Stadt Kyoto zu dieser Zeit rückläufig. Die Tatsache, dass diesem Diener Zeit von seinem Meister gegeben wurde, der seit vielen Jahren benutzt wurde, ist nichts anderes als die kleinen Folgen dieses Niedergangs. Daher ist es angemessener zu sagen: "Der Diener, der im Regen war, war ratlos, weil er nirgendwo hingehen konnte", als zu sagen: "Der Diener hat auf den Regen gewartet." Darüber hinaus hatte der heutige Himmel keinen geringen Einfluss auf den Diener Sentimentalisme dieser Heian-Dynastie. Der Regen, der seit Shin zu fallen begonnen hat, ist immer noch unerbittlich. Also versuchte der Diener, das Leben von morgen zu verwalten, egal was sozusagen, und versuchte, etwas zu tun, dem nicht geholfen werden konnte. Er folgte den Gedanken, dem Geräusch des Regens, der vor einiger Zeit auf Suzaku Oji schwankte. Ich habe zugehört, ohne zu hören. ``

** Ausgabe ** (Da ich mit dem Startwert herumgespielt habe, hat sich die zuvor generierte Zufallszahl geändert) "Der Autor schrieb nur unangenehm:" Der Diener wartete auf einen schrecklichen Regen. " Doch selbst wenn der Regen wie ein Idiot aufhört, kann ein schrecklicher Diener nichts Besonderes darüber sagen. Normalerweise sollte ich natürlich ernsthaft in das Haus des Riesenmeisters zurückkehren können. Der wilde Meister gab mir jedoch vor 45.000 Tagen eine enorme Menge an Freizeit. Wie ich bereits schrieb, ging die Stadt Kyoto zu dieser Zeit ohne tausend Straßen zurück. Die Tatsache, dass der stärkste Diener dieser Welt von seinem Meister, der seit vielen Jahren wie ein Idiot benutzt wird, mit einer enormen Menge an Zeit durcheinander gebracht wurde, ist nichts anderes als ein Chaos in den lächerlichen Folgen dieses Niedergangs. Anstatt zu sagen: "Der Diener wartete auf den schrecklichen Regen und die Unordnung", sagte er: "Der Diener, der im Regen durcheinander war, war wirklich durcheinander, nicht wirklich, wohin er ging." Es ist angemessener zu sagen, dass es unangenehm war. Darüber hinaus ist der heutige Himmel nicht wenig einflussreich und beeinflusst den Diener Sentimentalisme dieser lächerlichen Heian-Dynastie. Der Regen, der durch das lächerliche Schnitzen von Shin ernsthaft zu spritzen begann, ist immer noch nicht ernst. Der schreckliche Diener versucht also vorerst, das Leben von morgen zu verwalten, egal was ihm unangenehm ist - er versucht, etwas zu tun, dem nicht geholfen werden kann, und denkt unangenehm unangenehm Während ich herumfuhr, hörte ich das Geräusch von Regen, der vor einiger Zeit auf Big Suzaku Oji herumwirbelte, auch wenn ich es wie einen Idioten hörte. ``

Ich verstehe nicht, aber ...

Apokalypse

Es wird ein bisschen scharf, also möchte ich es beenden Erstellen Sie eine ** obiv ** -Funktion, um Adjektive zum Ficken zu bringen. Verwenden Sie für die Schwerter die Liste, die ich gerade gepostet habe, und ** verdoppeln Sie die Funktion **, um den Schwertern Tiefe zu verleihen. (Stellen wir die Fickrate auf ungefähr 50% ein, um nicht überflüssig zu werden.)

python


def obiv(text):
    nodes_s = t.parseToNode(text)
    output = ""
    count = 0
    while nodes_s:
        count += 0
        nodes_a = nodes_s.feature.split(",")
        if nodes_a[0] == "Adjektiv":
            random.seed(nodes_s.surface + str(count))
            if random.random() < 0.5:
                output += random.choice(["Super","Mecha Mecha","Wie ein Idiot","Ernsthaft","Scheisse","Äußerst","Gachi","Böse","Soweit es in der Geschichte der Menschheit bleibt"])
        output += nodes_s.surface
        nodes_s = nodes_s.next
    return output
print("\n Ausgabe:\n" + obiv(obiv(makuring(deco(embod(incr(inp)))))))

Eingang "Der Autor schrieb gerade:" Der Diener wartete auf den Regen. " Selbst wenn der Regen aufhört, hat der Diener keine Ahnung, was er tun soll. Normalerweise sollte ich natürlich in der Lage sein, zum Haus meines Mannes zurückzukehren. Sein Meister gab ihm jedoch vor 45 Tagen Freizeit. Wie ich bereits schrieb, war die Stadt Kyoto zu dieser Zeit rückläufig. Die Tatsache, dass diesem Diener Zeit von seinem Meister gegeben wurde, der seit vielen Jahren benutzt wurde, ist nichts anderes als die kleinen Folgen dieses Niedergangs. Daher ist es angemessener zu sagen: "Der Diener, der im Regen war, war ratlos, weil er nirgendwo hingehen konnte", als zu sagen: "Der Diener hat auf den Regen gewartet." Darüber hinaus hatte der heutige Himmel keinen geringen Einfluss auf den Diener Sentimentalisme dieser Heian-Dynastie. Der Regen, der seit Shin zu fallen begonnen hat, ist immer noch unerbittlich. Also versuchte der Diener, das Leben von morgen zu verwalten, egal was sozusagen, und versuchte, etwas zu tun, dem nicht geholfen werden konnte. Er folgte den Gedanken, dem Geräusch des Regens, der vor einiger Zeit auf Suzaku Oji schwankte. Ich habe zugehört, ohne zu hören. ``

Ausgabe "Der Autor schrieb nur unangenehm:" Der Diener wartete auf einen schrecklichen Regen. " Doch selbst wenn der Regen wie ein Idiot aufhört, kann ein schrecklicher Diener nichts Besonderes darüber sagen. Normalerweise sollte ich natürlich ernsthaft in das Haus des Riesenmeisters zurückkehren können. Der wilde Meister gab mir jedoch vor 45.000 Tagen eine enorme Menge an Freizeit. Wie ich bereits schrieb, ging die Stadt Kyoto zu dieser Zeit ohne tausend Straßen zurück. Die Tatsache, dass der stärkste Diener dieser Welt von seinem Meister, der seit vielen Jahren wie ein Idiot benutzt wird, mit einer enormen Menge an Zeit durcheinander gebracht wurde, ist nichts anderes als ein Chaos in den lächerlichen Folgen dieses Niedergangs. Anstatt zu sagen: "Der Diener wartete auf den schrecklichen Regen und die Unordnung", sagte er: "Der Diener, der im Regen durcheinander war, war wirklich durcheinander, nicht wirklich, wohin er ging." Es ist angemessener zu sagen, dass es unangenehm war. Darüber hinaus sieht der heutige Himmel sehr ernst und nicht wenig aus, was den Diener Sentimentalisme dieser lächerlichen Heian-Dynastie beeinflusst hat. Der Regen, der durch das lächerliche Schnitzen von Shin ernsthaft zu spritzen begann, ist immer noch nicht ernst. Der schreckliche Diener versucht also vorerst, das Leben von morgen zu verwalten, egal was ihm unangenehm ist - er versucht, etwas zu tun, dem nicht geholfen werden kann, und er fühlt sich unwohl mit den Gedanken, die nicht ernst sind Während ich herumfuhr, hörte ich das Geräusch von Regen, der vor einiger Zeit auf Big Suzaku Oji herumwirbelte, auch wenn ich es wie einen Idioten hörte. `` Ist es okay, es zu beenden, es wird ein wenig scharf

Impressionen

Ich konnte es nicht so genau machen ... Ich denke, ich hätte mit Cabocha etwas Fortgeschritteneres machen können, aber es war eine Menge Ärger ... Ich würde es gerne noch einmal versuchen, wenn die Installation eines Tages erfolgreich ist, etwas mehr "je nach Ziel". Ich wollte eine "wechselnde verdammte Sprache" (zB "mit Unterschallgeschwindigkeit")

Referenz

https://web.archive.org/web/20171212152621/http://adsmedia.hatenablog.com/entry/2016/10/20/002211 https://qiita.com/pocket_kyoto/items/1e5d464b693a8b44eda5 https://qiita.com/matsuatsu/items/fc696741a994f011f91e

[^ 1]: Es gibt einen Ort, an dem zwei "verdammte Deka" wie ein Satz sind, aber die Bedeutung wird auch von "Deka Rashomon" verstanden, und wenn Sie "dumm" hinzufügen, können Sie auch "dumm Rashomon" so getrennt machen Ich dachte es wäre geschafft.

Recommended Posts

Ich wollte einen Satz wie "Fucking Rashomon" (vergangene Form) generieren
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
[Fehler] Ich wollte Sätze mit Flairs TextRegressor generieren
Eine Geschichte über den Wunsch, die Django-Administrationsseite ein wenig zu ändern
Ich möchte automatisch einen modernen Metal-Bandnamen generieren
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
Ich wollte es so machen, als würde ich einen Testfall für AtCoder ausführen.
Ich wollte eine intelligente Präsentation mit Jupyter Notebook + nb present erstellen
Ich wollte mein Gesichtsfoto in einen Yuyu-Stil umwandeln.
Ich wollte so etwas wie Elixirs Pipe in Python machen
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
[Django] Ich wollte testen, wenn ich eine große Datei poste [TDD]