3. Verarbeitung natürlicher Sprache durch Python 1-1. Word N-Gramm

⑴ Textdaten lesen

from google.colab import files
uploaded = files.upload()

image.png

image.png

with open('Neko.txt', mode='rt', encoding='utf-8') as f:
    read_text = f.read()
nekotxt = read_text

print(nekotxt)

image.png

⑵ Morphologische Analyse von MeCab

!apt install aptitude
!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y
!pip install mecab-python3==0.7
import MeCab
tagger = MeCab.Tagger("-Owakati")
nekotxt = tagger.parse(nekotxt)

print(nekotxt)

image.png

nekotxt = nekotxt.split()
print(nekotxt)

image.png

⑶ Generierung eines N-Gramm-Wörterbuchs

from collections import Counter
import numpy as np
from numpy.random import *
string = nekotxt

#Auszuschließende Zeichen
delimiter = ['「', '」', '…', ' ']

#2-Wort-Liste
double = list(zip(string[:-1], string[1:]))
double = filter((lambda x: not((x[0] in delimiter) or (x[1] in delimiter))), double)

#Liste von 3 Wörtern
triple = list(zip(string[:-2], string[1:-1], string[2:]))
triple = filter((lambda x: not((x[0] in delimiter) or (x[1] in delimiter) or (x[2] in delimiter))), triple)

#Zählen Sie die Anzahl der Elemente und erstellen Sie ein Wörterbuch
dic2 = Counter(double)
dic3 = Counter(triple)
for u,v in dic2.items():
    print(u, v)

image.png

for u,v in dic3.items():
    print(u, v)

image.png

⑷ Definition der Satzgenerierungsmethode

def nextword(words, dic):
    ##➀ Ermitteln Sie die Anzahl der Elementgramm der ersten Wortwörter
    grams = len(words)

    ## ➁N-Extrahieren Sie passende Elemente aus dem Gramm-Wörterbuch dic
    #Für 2 Wörter
    if grams == 2:
        matcheditems = np.array(list(filter(
            (lambda x: x[0][0] == words[1]), #1. Spiele
            dic.items())))
    #Für 3 Wörter
    else:
        matcheditems = np.array(list(filter(
            (lambda x: x[0][0] == words[1]) and (lambda x: x[0][1] == words[2]), #1. und 2. Spiel
            dic.items())))

    ##➂ Fehlermeldung, wenn kein übereinstimmendes Wort vorhanden ist
    if(len(matcheditems) == 0):
        print("No matched generator for", words[1])
        return ''

    ##➃ Liste der gewichteten Erscheinungshäufigkeiten
    #Abrufen der Häufigkeit des Auftretens von übereinstimmenden Elementen
    probs = [row[1] for row in matcheditems]
    #Generieren Sie eine Pseudozufallszahl von 0 bis 1 und multiplizieren Sie sie mit der Häufigkeit des Auftretens
    weightlist = rand(len(matcheditems)) * probs

    ##➄ Holen Sie sich das Element mit der höchsten gewichteten Erscheinungshäufigkeit aus übereinstimmenden Elementen
    if grams == 2:
        u = matcheditems[np.argmax(weightlist)][0][1]
    else:
        u = matcheditems[np.argmax(weightlist)][0][2]
    return u

⑸ Ausführung des Satzgenerierungsprogramms

#Geben Sie die ersten Wortwörter ein
words = ['', 'ich'] # 2-gram
#words = ['', 'ich', 'Ist'] # 3-gram

#Betten Sie Wörter am Anfang der Ausgabe ein
output = words[1:]

#Holen Sie sich "nächstes Wort"
for i in range(100):
    #Für 2 Wörter
    if len(words) == 2:
        newword = nextword(words, dic2)
    #Für 3 Wörter
    else:
        newword = nextword(words, dic3)

    #Fügen Sie der Ausgabe die folgenden Wörter hinzu
    output.append(newword)
    #Ende, wenn das nächste Zeichen ein Ende ist
    if newword in ['', '。', '?', '!']:
        break
    #Das nächste Wort vorbereiten
    words = output[-len(words):]
    print(words)

#Ausgabe Ausgabe anzeigen
for u in output:
    print(u, end='')

image.png

image.png

Recommended Posts

3. Verarbeitung natürlicher Sprache durch Python 1-1. Word N-Gramm
Python: Verarbeitung natürlicher Sprache
3. Verarbeitung natürlicher Sprache durch Python 2-1. Netzwerk für das gleichzeitige Auftreten
3. Verarbeitung natürlicher Sprache durch Python 2-2. Koexistenznetzwerk [mecab-ipadic-NEologd]
[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt
Verarbeitung natürlicher Sprache 3 Wortkontinuität
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
3. Verarbeitung natürlicher Sprache durch Python 3-1. Wichtiges Tool zur Wortextraktion TF-IDF-Analyse [Originaldefinition]
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
Fallstudie zur Verarbeitung natürlicher Sprache: Worthäufigkeit in 'Anne mit einem E'
RNN_LSTM2 Verarbeitung natürlicher Sprache
Bildverarbeitung mit Python
Erste Schritte mit Python mit 100 Klopfen bei der Sprachverarbeitung
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Lassen Sie uns die Verarbeitung natürlicher Sprache mit der COTOHA-API genießen
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
Bildverarbeitung mit Python (Teil 2)
100 Sprachverarbeitung Knock-51: Wortausschnitt
"Apple-Verarbeitung" mit OpenCV3 + Python3
Akustische Signalverarbeitung mit Python (2)
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Bildverarbeitung mit Python (Teil 1)
Verarbeitung natürlicher Sprache 1 Morphologische Analyse
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Bildverarbeitung mit Python (3)
Sprachverarbeitung 100 Knock-87: Wortähnlichkeit
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Python: Vektordarstellung in natürlicher Sprache
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Python] Bildverarbeitung mit Scicit-Image
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
[Python] Einfache Parallelverarbeitung mit Joblib
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 4 Kommentar
100 Sprachverarbeitung Knock Kapitel 1 in Python
Verarbeitung natürlicher Sprache für vielbeschäftigte Menschen
100 Sprachverarbeitung Knock-82 (Kontextwort): Kontextextraktion
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
Künstliche Sprache Logivan und Verarbeitung natürlicher Sprache (Verarbeitung künstlicher Sprache)
Sprachverarbeitung 100 knock-86: Wortvektoranzeige
[Sprachverarbeitung 100 Schläge 2020] Kapitel 7: Wortvektor
10 Funktionen von "Sprache mit Batterie" Python
100 Sprachverarbeitung Knock 2020 Kapitel 7: Word Vector
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)