[PYTHON] Vektorisierung des Stammbaums von Pferderennen mit fastText

Überblick

fastText ist ein von Facebook veröffentlichtes Tool zur Verarbeitung natürlicher Sprache. Die Verarbeitung natürlicher Sprache kann mit hoher Geschwindigkeit durchgeführt werden. GitHub fastText

Informationen zum Mechanismus finden Sie auf der Erklärungsseite. Was können Sie mit fastText tun, das innerhalb von Minuten 1 Milliarde von Facebook veröffentlichte Wörter lernt?

Dieses Mal möchte ich diesen fastText verwenden, um den Stammbaum des Pferderennsports anstelle der Verarbeitung natürlicher Sprache zu vektorisieren. Die Idee, fastText nicht nur für die Verarbeitung natürlicher Sprache zu verwenden, wurde durch den folgenden Artikel inspiriert. Verwenden Sie fastText, um verteilte Darstellungen von Nichtwörtern zu erhalten

Ausführungsergebnis

Ich lade eine Vektordatei und eine Jupyter-Notizbuchdatei hoch, um zu erfahren, wie man githubt. github keiba_ketto_vec

Wie man ... macht

Datensatz

Stammbaum Die letzten 3 Generationen wurden in das fastText-Format gebracht.

Beim Rennpferd Satono Diamond handelt es sich um einen Stammbaum.

Stammbaum Pferdename
Kind Satono Diamant
Vater tiefe Wirkung
Mutter Malpensa
Vater Sonntagsstille
Eltern Wind in ihren Haaren
Mutter Vater Orpen
Mutter Mutter Marsella
Vater Vater Halo
Eltern Wishing Well
Eltern Vater Alzao
Eltern Burghclere
Mutter Vater Lure
Mutter Eltern Bonita Francita
Mutter Mutter Vater Südlicher Halo
Mutter Mutter Mutter Riviere

Konvertieren Sie die Pferdenamen in der obigen Tabelle in eine Zeile, die durch Leerzeichen halber Breite getrennt ist. Gleiches gilt für andere Rennpferde.

input.csv


Satono Diamond Deep Impact Marsella Sonntag Stille Wind in ihrem Haar Orpen Marsella Halo WishingWell Alzao Burghclere locken BonitaFrancita Southern Halo Riviere
Simon Trunale Gold Allure Humoresk Sonntagsstille Nikiya Afleet Verbündeter Gewinnen Sie Halo WishingWell Nureyev ReluctantGuest Mr..Prospector PoliteLady Alydar FleetVictress
Wasser Lourdes Wasserliga Wasser Enan Dehere Solo BostonHarbor Scrape DeputyMinister SisterDot Halo MineNur Capote HarborSprings Mr..Prospector File
...

Vektorisierung

Verwenden Sie den Befehl fasttext skipgram zur Vektorisierung. Wenn Sie es ausführen, sollten Sie bin- und vec-Dateien generiert haben.

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

In Bezug auf die Minn-Option als Mechanismus von fastText scheint es, dass zusätzlich zu den durch Leerzeichen getrennten Wörtern jedes Wort auf Zeichenebene zur Analyse weiter zerlegt wird. Betrachtet die Implementierung von fastText

Diese Funktion bündelt beispielsweise die Pferde "Gold Allure" und "Gold Ship" mit "Gold". Diesmal hat der Name selbst keine Bedeutung. Verwenden Sie daher die Option minn, um zu verhindern, dass er auf die Zeichenebene herunterfällt, um die Funktion zu deaktivieren.

Überprüfen Sie das Ergebnis

Verwenden Sie gensim, um die vektorisierte Datei zu lesen und Vektoroperationen auszuführen.

Verwenden Sie die Vektorarithmetik von Satono Diamond, um zu überprüfen, ob Sie Linate, die jüngere Schwester Ihres Vaters, berechnen können.

Damit

Satono Diamant+Bleib Gold-tiefe Wirkung=Linate

Sollte halten.

howto.py


import gensim

#Lesen Sie die Vektordaten mit gensim
model = gensim.models.KeyedVectors.load_word2vec_format('ketto_model.vec', binary=False)

# most_Berechnet mit ähnlichen Methoden
#Übergeben Sie die Daten, die in einer Liste zu positiv hinzugefügt werden sollen, und die Daten, die in einer Liste zu negativ subtrahiert werden sollen.

model.most_similar(
    positive=["Bleib Gold", "Satono Diamant"],
    negative=["tiefe Wirkung"]
)

Überprüfen Sie im Folgenden, wie Sie Gensim verwenden. gensim models.word2vec

result.


[('Paulen', 0.8220623731613159),
 ('Marquessa', 0.8190209865570068),
 ('Malpensa', 0.814713716506958),
 ('Linate', 0.80884850025177),
 ('Shapira', 0.8080180287361145),
 ('Mondscheinnacht', 0.8041872382164001),
 ('Semplice', 0.7995823621749878),
 ('OnAir', 0.7940067648887634),
 ('Fusionsschloss', 0.7933699488639832),
 ('Orpen', 0.7927322387695312)]

Das Ergebnis war, dass Paulen vom Mutter-Vater-Orpen-System am ähnlichsten war, aber nach der Malpensa der Mutter und der Halbschwester Malpensa (Vater Orphevre, Aufenthaltgold des Vaters) erschien Linate auch fest im Berechnungsergebnis. Daher kann gesagt werden, dass die Vektorisierung erfolgreich war.

das ist alles.

Recommended Posts

Vektorisierung des Stammbaums von Pferderennen mit fastText
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
Wie man Pferderenndaten mit pandas read_html kratzt
Memorandum of fastText (Bearbeitung)
Beispiel für die Verwendung von Lambda
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Beurteilung der emotionalen Polarität von Sätzen mit dem Textklassifikator fastText