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")
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.
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.
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