[PYTHON] Je veux gérer la rime part5

__ Contenu __

Depuis que j'ai fait un graphique la dernière fois, je vais essayer le clustering, etc. De plus, la manière de capturer la rime est élargie. Il est converti de "e i" → "ee", "o u" → "oo", et celui avec la même voyelle après conversion est également considéré comme "rimp". Ceci était basé sur le katakana anglais et japonais, ce qui est facile pour les enfants de faire des erreurs. Ne pas écrire «ei» signifie que «eki» ne devient pas «oui». «I» et «U» doivent être des voyelles seules. ("Reizoko" est "Reizoko")

__ Opération graphique __

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")
#Séparez les nœuds de chaque communauté dans une liste.[[Liste des nœuds de la communauté 0],[Liste des nœuds de la communauté 1]…]
part_sub = [[] for _ in set(list(partition.values()))]
for key in partition.keys():
    part_sub[partition[key]].append(key)
#Lister les nœuds qui ont la centralité maximale des vecteurs propres dans chaque communauté
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])
#Indicateur de modularité
print(community.modularity(partition,G))

Nous avons regroupé et trouvé celui avec la centralité maximale des vecteurs propres pour chaque communauté. Si une bonne division est effectuée, de bons résultats seront obtenus lorsque chacun sera défini comme target_word. Pensez à définir un seuil pour la pièce utilisée pour l'épaisseur du bord afin que le poids soit différent.

__ Extension de la façon d'attraper la rime __

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,Obtenez le texte converti comme o u → oo
def expansion(text_data):
    #Selon la dernière lettre, je,Résoudre le u supplémentaire en ajustant la longueur
    text_data_len = len(text_data)
    #Traiter de bonnes chaises et une série de "I, U" comme cette rumeur.
    text_data = text_data.replace("bien", "Je je").replace("U","U u")
    text_data = text_data.split("je")
    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))

Premièrement, j'avais pour politique de convertir les données en katakana, de les diviser par «i, u» et de changer le traitement en fonction de la voyelle du caractère immédiatement précédent, mais j'ai eu du mal. Si la fin des données est "i, u" ou autre, "iu" reste. Je l'ai traité en faisant en sorte que la longueur soit la même que celle des données d'argument, mais quand j'ai essayé print," i "est resté à la fin. Je ne m'attendais pas à l'apparition continue de "Good, U". Après tout, lorsque vous l'essayez, cela ne se passe pas bien et vous ne le remarquez souvent pas à moins de le faire.

Planifiez à partir de maintenant

Je vais marquer la partie correspondante pour chacun (données de conversion katakana, données avec seulement des voyelles restantes, données étendues) et essayer de capturer (correspondance de consonnes, correspondance de voyelles, correspondance de son). Il a été jugé inutile de voir la correspondance entre un son long, une répulsion sonore et un son stimulant. En d'autres termes, résumons ce que nous avons fait jusqu'à présent. Je pense que N-gramme et la partie de division spatiale devraient être considérés, et il y a un problème dans la façon de voir la partie correspondante. Je voudrais résumer la meilleure méthode actuelle, préparer quelques données d'entrée et la vérifier.

Recommended Posts

Je veux gérer la rime part1
Je veux gérer la rime part3
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
Je veux gérer la rime part7 (BOW)
Je veux gérer la rime part6 (organiser une fois)
Je veux gérer la rime part8 (fini une fois)
Je veux automatiser ssh en utilisant la commande expect! partie 2
Je veux épingler Spyder à la barre des tâches
Je veux sortir froidement sur la console
Je souhaite personnaliser l'apparence de zabbix
Je souhaite utiliser la fonction d'activation Mish
Je veux afficher la progression en Python!
Je veux voir le nom de fichier de DataLoader
Je veux grep le résultat de l'exécution de strace
Je veux faire défiler la table de décalage Django, mais ...
Je veux gérer l'optimisation avec python et cplex
Je veux résoudre SUDOKU
Je veux hériter de l'arrière avec la classe de données python
Je veux bien comprendre les bases de Bokeh
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai essayé d'effacer la partie négative de Meros
Je veux automatiser ssh en utilisant la commande expect!
Je souhaite publier le produit au moindre coût
Je veux utiliser le jeu de données R avec python
Je souhaite augmenter la sécurité de la connexion SSH
[TensorFlow] Je souhaite maîtriser l'indexation pour Ragged Tensor
Je veux utiliser la dernière version de gcc même si je n'ai pas les privilèges sudo! !!
Je veux initialiser si la valeur est vide (python)
Je souhaite enregistrer les photos envoyées par LINE vers S3
maya Python Je veux réparer à nouveau l'animation cuite.
Je veux déplacer le sélénium pour le moment [pour mac]
Je veux pouvoir analyser des données avec Python (partie 1)
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
Je veux changer le drapeau japonais en drapeau des Palaos avec Numpy
Je veux pouvoir analyser des données avec Python (partie 4)
Je souhaite calculer le temps d'arrêt autorisé à partir du taux de fonctionnement
Je veux pouvoir analyser des données avec Python (partie 2)
Je veux déterminer l'authenticité d'un élément du tableau numpy
Je veux connaître la nature de Python et pip
Je veux rendre le type de dictionnaire dans la liste unique
Je souhaite mapper le code EDINET et le numéro de valeur
Keras Je veux obtenir la sortie de n'importe quelle couche !!
Je veux aligner les nombres valides dans le tableau Numpy
Je veux connaître la légende du monde des technologies informatiques
Je veux créer un Dockerfile pour le moment.
Je ne voulais pas écrire la clé AWS dans le programme
Je veux comprendre à peu près systemd
Je veux gratter des images et les former
Je veux faire ○○ avec les Pandas
Je veux copier l'annotation de yolo
Je veux déboguer avec Python
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
Je veux obtenir le nom de la fonction / méthode en cours d'exécution
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
[Pytorch] Je souhaite attribuer manuellement les paramètres d'entraînement du modèle
Je veux trouver automatiquement des pièces de haute qualité à partir des vidéos que j'ai tournées
Je veux connaître la météo avec LINE bot avec Heroku + Python