Die meisten ähnlichen Wörter, angesichts der Vektor, der das Wort (und nicht das Wort selbst)
Mithilfe der gensim.models.Word2Vec
Bibliothek haben Sie die Möglichkeit, um ein Modell und ein "Wort", für die Sie möchten, um die Liste der meisten ähnlichen Wörter:
model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True)
model.most_similar(positive=[WORD], topn=N)
Ich Frage mich, ob es eine Möglichkeit geben das system als Eingabe des Modells und ein "Vektor", und bitten Sie den Systemadministrator, die Rückkehr der top-ähnliche Wörter (die Ihre Vektoren ist sehr nah an dem gegebenen Vektor). Etwas ähnliches wie:
model.most_similar(positive=[VECTOR], topn=N)
Ich brauche diese Funktion für ein zweisprachiges Umfeld, in dem ich 2 Modelle (Englisch und Deutsch), sowie einige englische Wörter, für die ich brauche zu finden, die Ihre meisten ähnlich deutschen Kandidaten.
Was ich will zu tun ist, um den Vektor, der jedes englische Wort aus dem englischen model:
model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True)
vector_w_en=model_EN[WORD_EN]
und dann-Abfrage wird das Deutsche Modell mit diesen Vektoren.
model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True)
model_DE.most_similar(positive=[vector_w_en], topn=N)
Habe ich implementiert diese in C unter Verwendung der original-Abstand-Funktion in der word2vec Paket. Aber, nun muss ich es in python, um der Lage sein zu integrieren, Sie mit meinen anderen Scripten.
Wissen Sie, ob es bereits eine Methode in gensim.models.Word2Vec
Bibliothek oder von anderen ähnlichen Bibliotheken, die dies tut? Brauche ich, um es zu implementieren, indem ich mich?
- Tut
most_similar(..)
Gegenzug die Punktzahlen für Sie als auch? Ich bin Malte Sie eine benutzerdefinierte Funktion schreiben Sie, dass Anrufemost_similar
für jedes Wort in dem Vektor, fügt die Ergebnisse ALLE auf die gleiche Liste und sortiert dann in der Partitur und zurück. - Dank nbryans. Wenn es keine Methode, die dies tut, ich habe es zu implementieren, wie folgt: für jedes Wort im Vokabular, um seine entsprechenden Vektor aus dem Modell. Berechne die Kosinus-ähnlichkeit des input Vektor und die zurückgegebenen. Und dann wieder die meisten top-similars. Aber, dachte ich, dass solch eine Methode vorhanden sein; die scheint nicht.
- Hi amin, hast du umgesetzt, deine Methode? wenn dem so ist, dann bin ich daran interessiert zu wissen, warum verwenden Sie Kosinus-ähnlichkeit statt der euklidischen Distanz?
- Hi @MiNdFrEaK, ich es umgesetzt habe. naja, eigentlich war es keine große Sache, aber damals war ich gerade gefragt, ob es schon umgesetzt und ich kann es aus dem Regal. Leider eine sehr kurze Zeit, danach habe ich aufgehört zu arbeiten, ist das Thema. Ich muss schauen in meine codes für meine Implementierung. Ich werde Sie wissen lassen, sobald ich es finde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Methode
similar_by_vector
gibt die top-N die meisten ähnlichen Wörter von vector:Ich glaube nicht, dass das, was du versuchst zu erreichen, geben kann, um eine genaue Antwort. Ganz einfach, weil die beiden Modelle sind ausgebildete getrennt. Und obgleich sowohl die englische und das Deutsche Modell ähnlichen Entfernungen zwischen Ihren jeweiligen Wort-Vektoren. Es gibt keine Garantie, dass das Wort Vektor für 'House' haben die gleiche Richtung wie das Wort Vektor für 'Haus'.
In einfachen Worten, wenn Sie trainiert beide Modelle mit Vektor-Größe=3.
Und 'Haus' hat-Vektor [0.5,0.2,0.9], es gibt keine Garantie, dass 'das Haus' wird der Vektor [0.5,0.2,0.9] oder sogar nahe dran.
Um dieses Problem zu lösen, könnten Sie zuerst übersetzen Sie die englischen Wörter ins Deutsche und verwenden Sie dann den Vektor für das Wort zu suchen, für ähnliche Wörter im deutschen Modell.
TL:DR;
Sie können nicht nur stecken Sie in Vektoren von einem Modell in eine andere Sprache und erwarten, dass genaue Ergebnisse erzielt werden.