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
Je télécharge un fichier vectoriel et un fichier notebook jupyter pour savoir comment faire pour github. github keiba_ketto_vec
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
...
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é.
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