Automatisch generierte Catch-Kopie [Python]

Überblick

Verwenden Sie Pythons Mecab, um "ähnliche Sätze" aus verschiedenen Lehrerdaten zu generieren

Referenz

Verwenden Sie MeCab aus Python 3 https://qiita.com/taroc/items/b9afd914432da08dafc8

Ich habe versucht, mithilfe der Markov-Kette automatisch XX-ähnliche Sätze zu generieren https://www.pc-koubou.jp/magazine/4238

Ich habe versucht, mithilfe der Markov-Kette automatisch einen Blog-Artikel zu erstellen https://karaage.hatenadiary.jp/entry/2016/01/27/073000

Quelle

main.py


file = 'Lehrerdaten/Kenshi YONEZU.txt'
roopCnt = 5
size = 2

learnText.createText(file, roopCnt, size)

learnText.py


def load_from_file(files_pattern):
    '''
Liest Dateien, die dem angegebenen Dateimuster entsprechen, führt sie zusammen, bereitet sie für die Analyse vor und gibt sie dann zurück.
    '''

    #Text lesen
    text = ""
    for path in iglob(files_pattern):
        with open(path, 'r') as f:
            text += f.read().strip()

    #Entfernen Sie einige Symbole
    unwanted_chars = ['\r', '\u3000', '-', '|']
    for uc in unwanted_chars:
        text = text.replace(uc, '')

    #Die Blue Sky Library-Notation wurde gelöscht
    unwanted_patterns = [re.compile(r'《.*》'), re.compile(r'[#.*]')]
    for up in unwanted_patterns:
        text = re.sub(up, '', text)

    return text


def split_for_markovify(text):
    '''
Teilen Sie Text in Sätze mit Unterbrechungen und Sätze in Wörter mit Leerzeichen auf
    '''
    #Verwenden Sie Mecab, um Wörter zu trennen
    mecab = MeCab.Tagger()
    splitted_text = ""

    #Diese Zeichen können markovify brechen
    # https://github.com/jsvine/markovify/issues/84
    breaking_chars = [
        '(',
        ')',
        '[',
        ']',
        '"',
        "'",
    ]

    #Teilen Sie den gesamten Text in Sätze mit Unterbrechungen auf und teilen Sie den Satz in Wörter mit Leerzeichen auf
    for line in text.split():
        mp = mecab.parseToNode(line)
        while mp:
            try:
                if mp.surface not in breaking_chars:
                    splitted_text += mp.surface    #Überspringen, wenn der Knoten markovify ist
                if mp.surface != '。' and mp.surface != '、':
                    splitted_text += ' '    #Wörter mit Leerzeichen teilen
                if mp.surface == '。':
                    splitted_text += '\n'    #Reexpression durch Zeilenumbruch
            except UnicodeDecodeError as e:
                print(line)
            finally:
                mp = mp.next

    return splitted_text


def createText(file, roopCnt, size = 3):
    '''
Generieren Sie automatisch Dokumente aus Lehrerdaten

    Parameters
    ----------
    String : file
Lehrerdatenpfad
    String : roopCnt
Anzahl der Generationen
    String : size
Wortblock

    Returns
    -------
    List
Liste der generierten Dokumente
    '''

    #Lesen von Lehrertexten
    rampo_text = load_from_file(file)

    #Teilen Sie den Text in ein lernbares Format
    splitted_text = split_for_markovify(rampo_text)

    #Lernen Sie das Modell aus dem Text.
    text_model = markovify.NewlineText(splitted_text, state_size = size)

    textList = []
    while len(textList) < roopCnt:
        time.sleep(5)
        #Aus Modell generieren
        sentence = text_model.make_sentence()

        if(len(sentence) <= 50):
            text = ''.join(sentence.split())
            textList.append(text)
            print(text)
            continue

        while len(sentence) >= 50 :
            index = sentence.find(' ', 50)

            sliceText = sentence[:index]
            text = ''.join(sliceText.split())
            sentence = sentence[index:]

            print(text)
            textList.append(text)

Generierungsbeispiel

Romanartig

Natsume Soseki-ähnlich

Fülle das Loch in der vierten Wand und hole den schwarzen Stein. Nach vielen Wiederholungen war ich nie zufrieden. Ich bin ein Mann, der wahrscheinlich nicht in die absolute Grenze kriecht, also sei dir dessen bitte sofort bewusst. " "Was ist die Yamato-Seele, oder ich habe nicht gestanden. Abhängig von der Antwort werde ich es nicht wegwerfen.

Wie Ango Sakaguchi

Als Bedingung ist es einfach, Utsumi zu töten und entweder die Moroi-Krankenschwester zu töten oder der Moroi-Krankenschwester zu folgen. Als er in der Halle erschien, hatte er eine kaputte Teeschale. Auf diese Weise war das Töten von Chigusa leicht vorbei, und die Kriminellen schlugen jeden Tag den Ball, um zu wetten, und schliefen jeden Tag. Gibt es keine Übung? “Die Tatsache, dass Dr. Giant auch den Leser kannte Bevor ich mein Gesicht abgewischt hatte, war sich die pralle und glänzende klare Stimme der Frau nur des folgenden weitreichenden Spiels bewusst. Als die Antwort herauskam, kam die Magd hinter mir her, und als ich wieder zurückkam, konnte ich sie hier sehen.

Eigentum fangen kopierartig

Wie Naka-ku, Nagoya

Es ist ein 1LDK mit einer automatischen Sperre für ein beruhigendes Gefühl. Es gibt auch eine Grundschule für Feinschmecker. 5 Gehminuten von Sakae entfernt, einem Zwei-Mund-Herd, der sich hervorragend für Feinschmecker eignet. Apartment Die Wohnung befindet sich neben dem Park. Das beliebte Nishiki 1 liegt nur wenige Gehminuten vom schönen Zwei-Mund-Ofen und Sakae in der Nähe entfernt 1LDK auf dem Sprungboden.

Es sieht aus wie Higashi-ku, Nagoya

Es gibt zwei Schuleinrichtungen, ein TV-Türtelefon und Aufwärmen. Es ist eine Stadt mit einem Lebensumfeld. Kostenlose Internet-Wohnung! Dies ist ein einzigartiges Hotel für diejenigen, die viele Systemküchentypen und eine hochwertige Thekenküche haben.

Wie Texte

Wie Genshi Yonezu

Auch in der Ferne muss ich mich daran erinnern, was das nächste Mal passiert ist Ich bin immer noch traurig und erinnere mich an das Ziel, nach Eifersucht zu suchen. Jeder, der voller Fehler ist, hat sich daran gewöhnt. Gibt es zwei Leute? Nein, nein, es tut mir leid, dass ich irgendwann 4 in Ihrer Mitte bin. Vielen Dank für jeden Anruf, also schlafen Sie nicht einmal ein bisschen. Deshalb werde ich nicht Zehntausende gehen! Das einzige Produkt, das für den Körper ruhig ist, ist, dass es weich und klar in der Bedeutung ist und ich mit Ihnen sprechen möchte Sag mir, dass ich nicht denken sollte, dass wir es sein werden, obwohl ich es behalten habe

B'z-ish

Wenn Sie stark bleiben können, lassen Sie das Gerücht nicht leicht auflösen, sobald Sie glücklich sind Ich muss nicht trainiert werden, weil meine Nägel so stark rot gebrannt sind, dass ich es selbst überprüfen kann Ich bereue es nicht und brauche dich nicht mehr Lassen Sie uns das Datum festlegen, an dem Sie fließen. Sie haben geweint, wild gestanden und zerrissen Ich bin ein Transfer-Student, mir wird immer eine Tür angeboten Push!Yeah!Crush!Yeah!Weve got you come true Every time I gotta go Landschaft, die sich miteinander vermischt Ich habe Angst, aber ich möchte immer zurück

Aimyon-ish

Außerdem die Wangen des anderen weißen und weichen Mashimaro-Herzens "Nichts verschluckt einen Traum, es ist ein Schatten, der blau blutet. Ich wünschte, ich könnte vor diesem Tag überlaufen, an dem ich mich lächerlich gemacht habe. Schleifen Sie, was Sie nicht gewählt haben, und zeigen Sie Ihre Kopfhörer. Liebe ist immer der Abiturient, von dem Sie gekommen sind Natürlich, zumindest, halt deine Klappe. "Ich fühle mich, als wäre ich jetzt hier Ich bin ein flirtendes Kind, aber ich bin sicher, es ist diese Liebe Ich denke, ich werde meinen Körper abkühlen und glücklich werden, also wird es im schlimmsten Fall besser

Nishino Kana-ähnlich

Es ist nicht so, dass ich zusammen bin. Ich kann nicht alle Mädchen aufhalten Ich weiß nicht wer, aber ich werde es definitiv beschützen, also werde ich mich verbinden. Ich kann dich endlich treffen. Vielen Dank für Ihre harte Arbeit jetzt! nana Es ist auf Wiedersehen, ich fühle mich immer unruhig Ich weiß sowieso nicht, wie ich es hasse. Ich weiß nicht, wann ich es mag. Ich kann dich nicht lachen hören Auch wenn ich ihn nicht treffen konnte, war das Kind wach

Ich wollte einen Namen für eine Cartoon-Technik generieren ...

Bleichen | Kunst und Gesang http://ort.yh.land.to/bleach/chantp.html Ich habe es versucht, aber viele Wörter wurden nicht im Wörterbuch registriert, und es wurde ein Generierungsfehler ausgegeben. Ist es schwierig, Comics mit häufig geprägten Wörtern in SF zu erstellen?

Recommended Posts

Automatisch generierte Catch-Kopie [Python]
Führen Sie die Python-Datei automatisch aus
Fangen Sie Strg-C in Python
Formatieren Sie Python-Code automatisch mit Vim
Erstellen Sie automatisch eine Python-Dokumentation mit Sphinx
[Python] Parsen von zufällig generiertem XML [ElementTree]