0

Mit gensim word2vec, baute ein CBOW-Modell mit einer Reihe von Prozessdateien für die Darstellung von Wort als Vektor in einem Named-Entity-Erkennungsproblem, aber ich möchte wissen, wie zu bewerten meine Darstellung von Wörtern. Wenn ich andere Datensätze wie wordsim353 (NLTK) oder andere Online-Datensätze von Google verwende, funktioniert das nicht, weil ich das Modell speziell für meine Domäne erstellt habe. Wie evaluiere ich meine Word2vec-Darstellung von Wortvektoren. Ich möchte, dass Wörter, die zu einem ähnlichen Kontext gehören, näher im Vektorraum sind. Wie stelle ich sicher, dass das Build-Modell das tut?Wie man word2vec auf einer spezifischen Kontextdatei auswerten kann

Ich begann mit einer Technik namens ungerade aus. ZB:

model.wv.doesnt_match("breakfast cereal dinner lunch".split()) --> 'cereal' 

ich mein eigenes Daten-Set (für die Validierung) die Worte in der Ausbildung von word2vec .Started mit mit der Einnahme von drei Worten ähnlichen Kontext zu bewerten und ein ungerades Wort aus context.But der Genauigkeit des mein Modell ist nur 30%.

Wird die obige Methode wirklich helfen, mein w2v Modell zu bewerten? Oder gibt es einen besseren Weg?

Ich möchte mit Word_similarity Maß gehen, aber ich brauche eine Referenz-Score (Mensch bewertet), um mein Modell zu bewerten, oder gibt es Techniken dafür? Bitte schlagen Sie Ideen oder Techniken vor.

Antwort

0

Letztendlich hängt das von dem Zweck ab, den Sie für die Wortvektoren beabsichtigen - Ihre Auswertung sollte den endgültigen Gebrauch so gut wie möglich nachahmen.

Der "Odd One Out" -Ansatz kann sinnvoll sein. Es wird oft mit nur zwei Worten gemacht, die irgendwie über externes Wissen/Kategorisierung bekannt sind (in den Aspekten, die für deinen Endgebrauch wichtig sind), dann wird ein drittes Wort zufällig ausgewählt.

Wenn Sie glauben, dass Ihr handgefertigtes Evaluierungsset für Ihre Zwecke von hoher Qualität ist, aber Ihre Wortvektoren nicht gut laufen, kann es sein, dass es andere Probleme mit Ihrem Training gibt: zu wenig Daten, Fehler in der Vorverarbeitung, schlecht ausgewählte Metaparameter, etc.

Sie müssten einzelne Fehlerfälle genauer betrachten, um auszuwählen, was Sie als nächstes verbessern möchten. Zum Beispiel, selbst wenn es bei einem Ihrer Odd-One-Out-Tests scheitert, machen die Listen der am meisten ähnlichen Wörter, für jedes der Wörter, oberflächlich Sinn in einem Augentest? Werden durch die Verwendung von mehr Daten oder mehr Trainings-Iterationen die Auswertungsergebnisse signifikant verbessert?

Ein häufiger Fehler während des Trainings und der Evaluierung/Bereitstellung ist, zu viele seltene Wörter zu behalten, auf der (falschen) Intuition, dass "mehr Informationen besser sein müssen". In der Tat können Wörter mit nur wenigen Vorkommen keine sehr hochwertigen Vektoren erhalten. (Im Vergleich zu häufigeren Wörtern werden ihre Endvektoren stärker durch die zufällige ursprüngliche Initialisierung und durch die Idiosynkrasien ihrer wenigen Vorkommen eher als durch ihre allgemeinste Bedeutung beeinflusst.) Ferner neigt ihre Anwesenheit dazu, die Verbesserung zu stören anderer in der Nähe häufigerer Wörter. Dann, wenn Sie den "langen Schwanz" der schwächeren Vektoren in Ihre Bewertungen einschließen, tendieren sie dazu, etwas willkürlich in Rankings einzudringen, vor gewöhnlichen Wörtern mit starken Vektoren, und verstecken die "richtigen" Antworten auf Ihre Bewertungsfragen.

Beachten Sie auch, dass der absolute Wert einer Bewertungszahl nicht so wichtig sein, weil Sie nur nach etwas suchen, das Ihren anderen Optimierungen Punkten in der richtigen Richtung für echtes End-Ziel. Wortvektoren, die bei präzisen Bewertungsfragen nur geringfügig besser sind, könnten in anderen unscharfen Informations-Retrieval-Kontexten noch gut genug funktionieren.

Verwandte Themen