[PYTHON] Ich möchte mit dem Reim part7 (BOW) umgehen

__ Inhalt __

Probieren Sie etwas anderes als zuvor. Ich war besorgt darüber, wie der Text geteilt werden soll, aber wenn Sie die Übereinstimmung des Vokals "aiueo" sehen, können Sie die Sätze vergleichen, indem Sie die Vokale auf verschiedene Arten anordnen und zeigen, ob der Vokal im Satz erscheint. Ist es nicht? Ich werde es basierend auf der Idee versuchen. Mit anderen Worten, jedes Wort in der binären Ausdrucksmethode, das "sich nicht um die Häufigkeit des Auftretens kümmert und nur darauf achtet, ob jedes Wort erscheint oder nicht", ist in verschiedenen Vokalen angeordnet.

__ Erstellen einer Wortliste, die einer Folge verschiedener Vokale als Wort ähnelt __

from pykakasi import kakasi
import re
import numpy as np
import pandas as pd

with open("./gennama.txt","r", encoding="utf-8") as f:
    data = f.read()

vowel_list = ["a","i","u","e","o"]
#Wortliste. Ein 2- bis 4-stelliges Wort, das nur mit Vokalen erstellt werden kann. 775 Typen
word_list = []
for i in vowel_list:
    for j in vowel_list:
        for k in vowel_list:
            for l in vowel_list:
                    word_list.append(i+j)
                    word_list.append(i+j+k)
                    word_list.append(i+j+k+l)                    

text_data = re.split("\u3000|\n", data)
kakasi = kakasi()
kakasi.setMode('J', 'a')
kakasi.setMode('H', 'a')
kakasi.setMode('K', 'a')
conv = kakasi.getConverter()
vowel_text_list = [conv.do(d) for d in text_data]
vowel_text_list = [re.sub(r"[^aeiou]+","",text) for text in vowel_text_list]

Davon abgesehen ist es einfach. Es gibt nicht so viele Arten von Wörtern, 755. Als Faustregel gilt, dass übereinstimmende Vokale mit 5 oder mehr Zeichen äußerst selten sind. Daher haben wir sie auf 4 Zeichen beschränkt. Bis jetzt habe ich verschiedene Wörterbücher erstellt, aber ich werde sie in DataFrame zusammenfassen.

__DataFrame-Erstellung __

df = pd.DataFrame({"Satz": text_data, "Vokal": vowel_text_list})
#Spaltenname"aa"Wenn es im Text erscheint, ist es 1, andernfalls ist es 0.
binaly_dic = {}
temp = []
for word in word_list:
    for vowel in vowel_text_list:
        if word in vowel:
            temp.append(1)
        else:
            temp.append(0)
        binaly_dic[word] = temp
    temp = []

for k, v in binaly_dic.items():
    df[k] = v
df.to_csv("df_test.csv")

Die Spalten sind "Sätze, Vokale, Wörter ...", "Sätze" sind Sätze, in die die ursprünglichen Textdaten unterteilt sind, "Vokale" sind solche, die nur in Vokale umgewandelt werden, und "Wörter ..." sind Sätze. Wenn es drinnen war, wurde es 1 gegeben, und wenn es nicht drinnen war, wurde es 0 gegeben.

__ Anwendungsbeispiel __

#Kosinusähnlichkeit
def cosine_similarity(v1, v2):
    cos_sim = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
    return cos_sim

print(cosine_similarity(df.iloc[0, 2:].values, df.iloc[3, 2:].values))

Auf diese Weise wird beispielsweise die Ähnlichkeit zwischen Satz 0 und Satz 3 angezeigt. Sie können auch sum verwenden, um schnell herauszufinden, welche Wörter am häufigsten verwendet werden.

__ Zusammenfassung __

Da ich mich nur auf Vokale konzentrierte, war die Anzahl der Wörter auf 755 begrenzt, selbst wenn alle Kombinationen mit 2 bis 4 Zeichen berücksichtigt wurden. Bis jetzt hatte ich versucht, den Text zu teilen und damit umzugehen, aber es gab einige Dinge, die ich so tun konnte, wie sie waren. Es ist ein großes Ereignis für mich, deshalb habe ich einen Artikel geschrieben, obwohl der Inhalt dünn ist. In Zukunft werde ich etwas tun, das auf dem erstellten DataFrame basiert, z. B. ob ich etwas mehr tun kann, basierend auf der Ähnlichkeit der Sätze.

Recommended Posts

Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte mit dem Reim part6 umgehen (einmal organisieren)
Ich möchte mit dem Reim part8 umgehen (einmal fertig)
Ich möchte ssh mit dem Befehl expected automatisieren! Teil 2
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte den Dateinamen von DataLoader sehen
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich möchte ssh mit dem Befehl expected automatisieren!
Ich möchte das Produkt zu den niedrigsten Kosten veröffentlichen
Ich möchte R-Datensatz mit Python verwenden
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Ich möchte SUDOKU lösen
[TensorFlow] Ich möchte die Indizierung für Ragged Tensor beherrschen
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Ich möchte die von LINE an S3 gesendeten Fotos speichern
maya Python Ich möchte die gebackene Animation wieder reparieren.
Ich möchte vorerst Selen bewegen [für Mac]
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte die zulässige Ausfallzeit aus der Betriebsrate berechnen
Ich möchte Daten mit Python analysieren können (Teil 2)
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte die gültigen Zahlen im Numpy-Array ausrichten
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich möchte vorerst eine Docker-Datei erstellen.
Ich wollte den AWS-Schlüssel nicht in das Programm schreiben
Ich möchte systemd grob verstehen
Ich habe versucht, das Wahrscheinlichkeitsintegral (I zu Integral) zu berechnen.
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
Ich möchte automatisch hochwertige Teile aus den von mir aufgenommenen Videos finden
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
[Linux] Ich möchte das Datum wissen, an dem sich der Benutzer angemeldet hat
Ich möchte die HTML-Version der OpenCV 3.1-Version "OpenCV-Python Tutorials" lesen