[PYTHON] Vectorisation du pedigree des courses de chevaux à l'aide de fastText

Aperçu

fastText est un outil publié par Facebook pour le traitement du langage naturel. Le traitement du langage naturel peut être effectué à grande vitesse. GitHub fastText

Veuillez vous référer au site d'explications pour le mécanisme. Que pouvez-vous faire avec fastText qui apprend 1 milliard de mots publiés par Facebook en quelques minutes

Cette fois, j'aimerais utiliser ce fastText pour vectoriser le pedigree des courses de chevaux au lieu du traitement du langage naturel. L'idée d'utiliser fastText pour faire plus que le traitement du langage naturel a été inspirée par l'article ci-dessous. Utilisez fastText pour obtenir des représentations distribuées de non-mots

Résultat d'exécution

Je télécharge un fichier vectoriel et un fichier notebook jupyter pour savoir comment faire pour github. github keiba_ketto_vec

Comment faire

base de données

Pedigree Les 3 dernières générations sont mises au format fastText.

Il s'agit d'un tableau généalogique dans le cas du cheval de course Satono Diamond.

Pedigree Nom du cheval
Enfant Diamant Satono
père impact profond
mère Malpensa
Père Silence du dimanche
Parents Vent dans ses cheveux
Mère père Orpen
Mère mère Marsella
Père père Halo
Parents Wishing Well
Père des parents Alzao
Parents Burghclere
Mère père Lure
Mère parents Bonita Francita
Mère mère père Halo sud
Mère mère mère Riviere

Convertissez les noms de chevaux du tableau ci-dessus en une ligne séparée par des espaces demi-largeur. La même chose est vraie pour les autres chevaux de course.

input.csv


Satono Diamond Deep Impact Marsella Sunday Silence Wind In Her Hair Orpen Marsella Halo WishingWell Alzao Burghclere Lure BonitaFrancita Southern Halo Riviere
Simon Trunale Gold Allure Humoresk Sunday Silence Nikiya Afleet Ally Win Halo WishingWell Noureev réticentGuest Mr.Prospector PoliteLady Alydar FleetVictress
Eau Lourdes Water League Water Enan Dehere Solo BostonHarbor Scrape DeputyMinister SisterDot Halo MineOnly Capote HarborSprings Mr.Prospector File
...

Vectorisation

Utilisez la commande fasttext skipgram pour la vectorisation. Lorsque vous l'exécutez, vous devriez avoir généré des fichiers bin et vec.

$fasttext skipgram -input input.csv -output ketto_model -minn 50

Concernant l'option minn, en tant que mécanisme de fastText, en plus des mots séparés par des espaces, il semble que chaque mot soit encore décomposé au niveau des caractères pour l'analyse. Regardé l'implémentation de fastText

Cette fonction, par exemple, regroupe les chevaux «Gold Allure» et «Gold Ship» avec «Gold». Cette fois, le nom lui-même n'a aucune signification, utilisez donc l'option minn pour l'empêcher de se décomposer au niveau du caractère pour désactiver la fonctionnalité.

Vérifiez le résultat

Utilisez gensim pour lire le fichier vectorisé et effectuer des opérations vectorielles.

Utilisez l'arithmétique vectorielle de Satono Diamond pour vérifier si vous pouvez calculer Linate, la sœur cadette de votre père.

Alors

Diamant Satono+Restez or-impact profond=Linate

Devrait tenir.

howto.py


import gensim

#Lire des données vectorielles à l'aide de gensim
model = gensim.models.KeyedVectors.load_word2vec_format('ketto_model.vec', binary=False)

# most_Calculé à l'aide de méthodes similaires
#Passez les données à ajouter au positif dans une liste et les données à soustraire au négatif dans une liste.

model.most_similar(
    positive=["Restez or", "Diamant Satono"],
    negative=["impact profond"]
)

Vérifiez les éléments suivants pour savoir comment utiliser gensim. gensim models.word2vec

result.


[('Paulen', 0.8220623731613159),
 ('Marquessa', 0.8190209865570068),
 ('Malpensa', 0.814713716506958),
 ('Linate', 0.80884850025177),
 ('Shapira', 0.8080180287361145),
 ('Nuit au clair de lune', 0.8041872382164001),
 ('Semplice', 0.7995823621749878),
 ('OnAir', 0.7940067648887634),
 ('Serrure à fusion', 0.7933699488639832),
 ('Orpen', 0.7927322387695312)]

Le résultat était que Paulen du système mère-père Orpen était le plus similaire, mais après la Malpensa de la mère et la demi-sœur Malpensa (père Orphevre, le séjour du père en or), Linate est également apparue fermement dans le résultat du calcul. Par conséquent, on peut dire que la vectorisation a réussi.

c'est tout.

Recommended Posts

Vectorisation du pedigree des courses de chevaux à l'aide de fastText
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
Comment récupérer des données de courses de chevaux à l'aide de pandas read_html
Mémorandum de fastText (édition)
Exemple d'utilisation de lambda
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
Jugement de la polarité émotionnelle des phrases à l'aide du classificateur de texte fastText