Soy totalmente nuevo en word2vec, así que por favor llévelo conmigo. Tengo un conjunto de archivos de texto que contienen cada uno un conjunto de tweets, entre 1000-3000. Elegí una palabra clave común ("kw1") y quiero encontrar términos semánticamente relevantes para "kw1" usando word2vec. Por ejemplo, si la palabra clave es "apple", esperaría ver términos relacionados como "ipad" "os" "mac" ... según el archivo de entrada. Por lo tanto, este conjunto de términos relacionados para "kw1" sería diferente para cada archivo de entrada, ya que word2vec se entrenaría en archivos individuales (por ejemplo, 5 archivos de entrada, ejecute word2vec 5 veces en cada archivo).
Mi objetivo es encontrar conjuntos de términos relacionados para cada archivo de entrada dada la palabra clave común ("kw1"), que se utilizaría para otros fines.
Mis preguntas / dudas son:
- ¿Tiene sentido usar word2vec para una tarea como esta? ¿es técnicamente correcto usarlo teniendo en cuenta el pequeño tamaño de un archivo de entrada?
Descargué el código de code.google.com: https://code.google.com/p/word2vec/ y acabo de ejecutarlo en seco de la siguiente manera:
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
De mis resultados, vi que obtengo muchos términos ruidosos (palabras vacías) cuando uso la herramienta 'distancia' para obtener términos relacionados con "kw1". Así que eliminé las palabras vacías y otros términos ruidosos, como las menciones de los usuarios. Pero no he visto en ninguna parte que word2vec requiera datos de entrada limpios ...
¿Cómo se eligen los parámetros correctos? Veo que los resultados (al ejecutar la herramienta de distancia) varían mucho cuando cambio parámetros como '-ventana', '-iter'. ¿Qué técnica debo usar para encontrar los valores correctos para los parámetros? (La prueba y error manual no es posible para mí, ya que ampliaré el conjunto de datos).
fuente