Jestem zupełnie nowy w word2vec, więc proszę, zabierzcie to ze sobą. Mam zestaw plików tekstowych, z których każdy zawiera zestaw tweetów, między 1000 a 3000. Wybrałem wspólne słowo kluczowe („kw1”) i chcę znaleźć semantycznie odpowiednie terminy dla „kw1” za pomocą word2vec. Na przykład, jeśli słowem kluczowym jest „jabłko”, oczekiwałbym, że zobaczę powiązane terminy, takie jak „ipad” „os” „mac” ... na podstawie pliku wejściowego. Tak więc ten zestaw powiązanych terminów dla „kw1” byłby inny dla każdego pliku wejściowego, ponieważ word2vec byłby szkolony na poszczególnych plikach (np. 5 plików wejściowych, uruchom word2vec 5 razy na każdym pliku).
Moim celem jest znalezienie zestawów powiązanych terminów dla każdego pliku wejściowego, biorąc pod uwagę wspólne słowo kluczowe („kw1”), które byłoby używane w innych celach.
Moje pytania / wątpliwości to:
- Czy warto używać word2vec do takich zadań? czy jest technicznie poprawne użycie, biorąc pod uwagę niewielki rozmiar pliku wejściowego?
Pobrałem kod z code.google.com: https://code.google.com/p/word2vec/ i właśnie nadałem mu następujący test:
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
Z moich wyników wynika, że otrzymuję wiele hałaśliwych haseł (stopwords), gdy używam narzędzia „odległość”, aby uzyskać powiązane terminy z „kw1”. Więc usunąłem stopwords i inne hałaśliwe warunki, takie jak wzmianki użytkownika. Ale nigdzie nie widziałem, że word2vec wymaga wyczyszczonych danych wejściowych ...?
Jak wybrać odpowiednie parametry? Widzę, że wyniki (od uruchomienia narzędzia odległości) różnią się znacznie, gdy zmieniam parametry, takie jak „-window”, „-iter”. Której techniki należy użyć, aby znaleźć prawidłowe wartości parametrów. (ręczne próby i błędy nie są dla mnie możliwe, ponieważ będę powiększać zestaw danych).