Ich bin völlig neu in word2vec, also tragen Sie es bitte mit mir. Ich habe eine Reihe von Textdateien, die jeweils eine Reihe von Tweets zwischen 1000 und 3000 enthalten. Ich habe ein allgemeines Schlüsselwort ("kw1") ausgewählt und möchte mit word2vec semantisch relevante Begriffe für "kw1" finden. Wenn das Schlüsselwort beispielsweise "apple" lautet, würde ich erwarten, dass verwandte Begriffe wie "ipad" "os" "mac" ... basierend auf der Eingabedatei angezeigt werden. Dieser Satz verwandter Begriffe für "kw1" wäre also für jede Eingabedatei unterschiedlich, da word2vec für einzelne Dateien trainiert würde (z. B. 5 Eingabedateien, führe word2vec 5 Mal für jede Datei aus).
Mein Ziel ist es, Sätze verwandter Begriffe für jede Eingabedatei mit dem gemeinsamen Schlüsselwort ("kw1") zu finden, das für andere Zwecke verwendet wird.
Meine Fragen / Zweifel sind:
- Ist es sinnvoll, word2vec für eine solche Aufgabe zu verwenden? Ist es technisch richtig, es angesichts der geringen Größe einer Eingabedatei zu verwenden?
Ich habe den Code von code.google.com heruntergeladen: https://code.google.com/p/word2vec/ und habe ihn gerade wie folgt getestet :
time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50
./distance vectors.bin
Aus meinen Ergebnissen habe ich gesehen, dass ich viele verrauschte Begriffe (Stoppwörter) bekomme, wenn ich das 'Distanz'-Tool verwende, um verwandte Begriffe zu "kw1" zu erhalten. Also habe ich Stoppwörter und andere verrauschte Begriffe wie Benutzererwähnungen entfernt. Aber ich habe nirgendwo gesehen, dass word2vec bereinigte Eingabedaten benötigt ...?
Wie wählen Sie die richtigen Parameter aus? Ich sehe, dass die Ergebnisse (beim Ausführen des Distanzwerkzeugs) stark variieren, wenn ich Parameter wie '-window', '-iter' ändere. Welche Technik soll ich verwenden, um die richtigen Werte für die Parameter zu finden? (Manuelles Ausprobieren ist für mich nicht möglich, da ich den Datensatz vergrößern werde).