[PYTHON] Je veux gérer la rime part7 (BOW)

__ Contenu __

Essayez quelque chose d'un peu différent qu'avant. Je m'inquiétais de savoir comment diviser le texte, mais si vous voyez la correspondance de la voyelle "aiueo", vous pouvez comparer les phrases en arrangeant les voyelles de différentes manières et en montrant si la voyelle apparaît dans la phrase. N'est-ce pas? Je vais l'essayer sur la base de l'idée. En d'autres termes, chaque mot de la méthode d'expression binaire, qui "ne se soucie pas de la fréquence d'apparition et ne fait attention qu'à savoir si chaque mot apparaît ou non", est organisé en différentes voyelles.

__ Créer une liste de mots qui ressemble à une séquence de voyelles sous forme de mot __

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"]
#Liste de mots. Un mot de 2 à 4 caractères qui peut être créé en utilisant uniquement des voyelles. 775 types
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]

A part ça, c'est simple. Il n'y a pas tellement de types de mots, 755. En règle générale, la correspondance de voyelles de 5 caractères ou plus est extrêmement rare, nous l'avons donc limitée à 4 caractères. Jusqu'à présent, j'ai créé divers dictionnaires, mais je vais les résumer dans DataFrame.

__DataFrame création __

df = pd.DataFrame({"Phrase": text_data, "voyelle": vowel_text_list})
#Nom de colonne"aa"S'il apparaît dans le texte, ce sera 1, sinon ce sera 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")

Les colonnes sont "phrases, voyelles, mots ...", "phrases" sont des phrases dans lesquelles les données textuelles originales sont divisées, "voyelles" sont celles converties en voyelles uniquement et "mots ..." sont des phrases. S'il était à l'intérieur, il a reçu 1, et s'il n'était pas à l'intérieur, il a reçu 0.

__ Exemple d'utilisation __

#Similitude cosinus
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))

Par exemple, de cette manière, la similitude entre la phrase 0 et la phrase 3 est affichée. Vous pouvez également utiliser sum pour trouver rapidement les mots les plus couramment utilisés.

__ Résumé __

Comme je me suis concentré uniquement sur les voyelles, le nombre de mots était limité à 755 même en considérant toutes les combinaisons de 2 à 4 caractères. Jusqu'à présent, j'avais essayé de diviser le texte et de le gérer, mais je pouvais faire certaines choses telles qu'elles étaient. C'est un grand événement pour moi, alors j'ai écrit un article bien que le contenu soit mince. À l'avenir, je ferai quelque chose basé sur le DataFrame créé, par exemple si je peux faire quelque chose de plus éloigné de la similitude des phrases.

Recommended Posts

Je veux gérer la rime part7 (BOW)
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 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 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
Je veux résoudre SUDOKU
[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é
Je veux lire la version html de la version "OpenCV-Python Tutorials" OpenCV 3.1