[PYTHON] Ich möchte mit dem Reim part5 umgehen

__ Inhalt __

Da ich das letzte Mal ein Diagramm erstellt habe, werde ich versuchen, Clustering usw. durchzuführen. Außerdem wird die Art der Erfassung des Reims erweitert. Es wird von "e i" in "ee" und "o u" in "oo" konvertiert, und derjenige mit demselben Vokal nach der Konvertierung wird auch als "rimp" angesehen. Dies basierte auf Katakana Englisch und Japanisch, was für Kinder leicht ist, Fehler zu machen. Wenn Sie "ei" nicht schreiben, wird "eki" nicht zu "yes". "Ich" und "U" müssen nur Vokale sein. ("Reizoko" ist "Reizoko")

__ Grafikoperation __

import networkx as nx
import matplotlib.pyplot as plt
import community

G = nx.Graph()
G.add_weighted_edges_from(edge_list)
#Clustering
partition = community.best_partition(G, weight="weight")
#Trennen Sie die Knoten für jede Community in eine Liste.[[Community 0-Knotenliste],[Community 1-Knotenliste]…]
part_sub = [[] for _ in set(list(partition.values()))]
for key in partition.keys():
    part_sub[partition[key]].append(key)
#Listen Sie die Knoten mit der maximalen Eigenvektorzentralität in jeder Community auf
max_betw_cent_node = []
for part in part_sub:
    G_part = nx.Graph()
    for edge in edge_list:
        if edge[0] in part and edge[1] in part:
            G_part.add_weighted_edges_from([edge])
    max_betw_cent_node.append(max(G_part.nodes(), key=lambda val:
                                 nx.eigenvector_centrality_numpy(G_part, weight="weight")[val]))
    
print([dic[i] for i in max_betw_cent_node])
#Modularitätsanzeige
print(community.modularity(partition,G))

Wir gruppierten uns und fanden diejenige mit der maximalen Eigenvektorzentralität für jede Community. Wenn Sie es gut teilen können, können Sie gute Ergebnisse erzielen, wenn Sie jedes als Zielwort festlegen. Stellen Sie in dem Teil, der für das Kantengewicht verwendet wird, einen Schwellenwert ein, damit das Gewicht unterschiedlich ist.

__ Erweiterung des Reimfangs __

from pykakasi import kakasi
import re

with open("./gennama.txt","r", encoding="utf-8") as f:
    data = f.read()
    
kakasi = kakasi()
kakasi.setMode('J', 'K')
kakasi.setMode('H', 'K')
conv = kakasi.getConverter()
text_data = conv.do(data)

#e i → ee,Holen Sie sich den konvertierten Text wie o u → oo
def expansion(text_data):
    #Abhängig vom letzten Buchstaben, ich,Lösen Sie das zusätzliche u durch Anpassen der Länge
    text_data_len = len(text_data)
    #Der Umgang mit guten Stühlen und einer Reihe von "Ja, du" mag dieses Gerücht.
    text_data = text_data.replace("gut", "Ich ich").replace("U.","U u")
    text_data = text_data.split("ich")
    new_text_data = []
    kakasi.setMode('K', 'a')
    conv = kakasi.getConverter()
    for i in range(len(text_data):
        if len(text_data[i]) > 0:
            if ("e" in conv.do(text_data[i][-1])):
                new_text_data.append(text_data[i] + "e")
            else:
                new_text_data.append(text_data[i] + "i")
            
    text_data = "".join(new_text_data).split("C.")
    new_text_data = []
    for i in range(len(text_data):
        if len(text_data[i]) > 0:
            if ("o" in conv.do(text_data[i][-1])):
                new_text_data.append(text_data[i] + "o")
            else:
                new_text_data.append(text_data[i] + "u")

    return "".join(new_text_data)[:text_data_len]

print(expansion(text_data))

Zuerst hatte ich die Richtlinie, die Daten in Katakana umzuwandeln, durch "i, u" zu teilen und die Verarbeitung gemäß dem Vokal des unmittelbar vorhergehenden Zeichens zu ändern, aber es fiel mir schwer. Wenn das Ende der Daten "i, u" oder anders ist, bleibt "iu". Ich habe mich damit befasst, indem ich die Länge mit den Argumentdaten übereinstimmte, aber als ich "print" versuchte, blieb "i" am Ende. Ich habe das kontinuierliche Erscheinen von "Good, U" nicht erwartet. Wenn Sie es versuchen, läuft es schließlich nicht reibungslos und Sie bemerken es oft nicht, wenn Sie es nicht tun.

Plan von nun an

Ich werde den passenden Teil für jeden Punkt bewerten (Katakana-Konvertierungsdaten, Daten mit nur noch Vokalen, erweiterte Daten) und versuchen zu erfassen (Matching von Konsonanten, Matching von Vokalen, Matching von Ton). Es wurde als unnötig erachtet, das Zusammentreffen von langem Klang, Schallabweisung und aufforderndem Klang zu sehen. Mit anderen Worten, lassen Sie uns zusammenfassen, was wir bisher getan haben. Ich denke, dass N-Gramm und der Raumteilungsteil berücksichtigt werden sollten, und es gibt ein Problem, wie man den passenden Teil sieht. Ich möchte die derzeit beste Methode zusammenfassen, einige Eingabedaten vorbereiten und überprüfen.

Recommended Posts

Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 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 part7 (BOW) 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 Spyder an die Taskleiste anheften
Ich möchte kühl auf die Konsole ausgeben
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 die Optimierung mit Python und CPlex behandeln
Ich möchte SUDOKU lösen
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
[TensorFlow] Ich möchte die Indizierung für Ragged Tensor beherrschen
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)
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 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.
[Pytorch] Ich möchte die Trainingsparameter des Modells manuell zuweisen
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