[PYTHON] Je veux gérer la rime part3

__ Contenu __

Je souhaite utiliser davantage MeCab dans le flux précédent. Il était trop subdivisé dans la division. Utilisez MeCab pour faire des choses comme la segmentation. Je ne sais pas s'il y a Cabocha et KNP (je le répète, ~~ jaune B-boy ~~ je veux utiliser MeCab). Je n'utilise pas d'analyse morphologique, donc je vais essayer l'analyse morphologique et attacher les mots attachés (mots auxiliaires, verbes auxiliaires) aux mots précédents.

__ Concaténation des mots attachés __

D'après les résultats, je n'ai pas utilisé MeCab. J'ai décidé que janome était plus concis parce que je n'avais besoin que de la forme superficielle et d'une partie du mot. ~~ Cependant, j'ai essayé diverses choses avec MeCab, lu l'article à mettre dans DataFrame, et cela s'est étrangement transformé en quelques minutes et c'est devenu une erreur de mémoire, donc j'ai tellement apprécié ~~ En concaténant les compléments avec le code ci-dessous, la longueur moyenne des mots séparés était de 2,96 (2,16 en écriture séparée).

from janome.tokenizer import Tokenizer

with open("./gennama.txt","r") as f:
    data = f.read()
    
tokenizer = Tokenizer()
tokens = tokenizer.tokenize(data)

surface_list = []
part_of_speech_list = []
for token in tokens:
    surface_list.append(token.surface)
    part_of_speech_list.append(token.part_of_speech.split(",")[0])
    
text_data = []
for i in range(len(surface_list)):
    if part_of_speech_list[i] == "symbole":
        continue
    elif part_of_speech_list[i] == "Particule" or part_of_speech_list[i] == "Verbe auxiliaire":
        row = text_data.pop(-1) + surface_list[i]
    else:
        row = surface_list[i]
    text_data.append(row)

Avec cela, comme dans le temps précédent, nous avons classé les voyelles qui sont disposées dans les données d'entrée et sortie les mots qui les incluent. Le résultat de sortie est supérieur à celui de l'écriture séparée, mais aucun aspect pratique n'a été trouvé. Après tout, N-gramme est le plus approprié pour le moment, l'ordre des mots reste et il est divisé là où il ne doit pas être divisé, donc si vous le connectez, vous pouvez détecter la rime. Remarquez que c'est ici. Hiragana pour Kanji avant N-gramme ... À l'origine, si vous convertissez Kanji en lecture, la variation de N-gramme est susceptible d'augmenter. (~~ Kanji peut être fait avec kakasi ~~) Au fait, quand j'ai analysé la morphologie avec MeCab plus tôt, il y avait un élément de "lecture". Utilisons MeCab.

__ Convertir en lecture de données __

import MeCab

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

yomi_data = ""
mecab = MeCab.Tagger("-Ochasen")
lines = mecab.parse(data).split("\n")
for line in lines:
    if line.split("\t")[0] == "EOS":
        break
    else:
        yomi_data += line.split("\t")[1]        

"Shitamachi" -> "Tamachi" -> "iaai", et 4 voyelles peuvent être représentées par 4 lettres. Mais qu'en est-il du cas du "moment" -> "shunkan" -> "ua"? Deux voyelles doivent être représentées par cinq lettres. Si vous le divisez en N caractères en fonction de la lecture, vous pouvez également faire "Tama / Chi" etc. Cependant, "Shunkan" devient inutilement long. Ensuite, utilisez-vous N-gramme après avoir créé des données de voyelle? La couche de surface ne peut pas être récupérée même si un index est attribué aux données. Il ne peut être bon que la séquence «aa» dans «centre-ville» ne soit pas détectée. Je ne peux pas penser à un plan d'amélioration tout de suite, mais je veux y réfléchir ici.

Planifiez à partir de maintenant

D'une part, il peut être bon d'ajouter diverses méthodes de notation. Par exemple, même si vous laissez des consonnes, si elles correspondent, vous pouvez les ajouter et vous pouvez additionner plusieurs scores. Dans ce cas, il semble possible de traiter le «réfrigérateur» comme (Reizoko, Reizoko). L'autre consiste à dessiner un graphique de mots divisés en nœuds en utilisant le score sur les arêtes. En fait, je l'ai essayé quand la méthode de division ne pouvait être que la division spatiale, mais elle ne s'est pas déroulée comme prévu (je suppose que le thème en vient à la centralité de la médiation?). J'essaierai d'étudier «networkx» à partir de zéro. (~~ Je m'inquiète de la date de publication du prochain article. Cependant, lorsque j'étudiais le moteur de recherche et que j'ai vu la somme des scores de PageRank et de distance de mots, j'ai pensé que cela pourrait être utile, alors j'ai étudié. Je vais ~~)

Recommended Posts

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 afficher la barre de progression
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 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 pouvoir analyser des données avec Python (partie 3)
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)
[Python] Je souhaite utiliser l'option -h avec argparse
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
J'ai essayé de calculer l'intégrale de probabilité (I à l'intégrale)
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.
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
[Linux] Je souhaite connaître la date à laquelle l'utilisateur s'est connecté