aplicação do word2vec em pequenos arquivos de texto

11

Eu sou totalmente novo no word2vec, então pls aguenta comigo. Eu tenho um conjunto de arquivos de texto, cada um contendo um conjunto de tweets, entre 1000 e 3000. Eu escolhi uma palavra-chave comum ("kw1") e deseja encontrar termos semanticamente relevantes para "kw1" usando o word2vec. Por exemplo, se a palavra-chave for "apple", esperaria ver termos relacionados, como "ipad" "os" "mac" ... com base no arquivo de entrada. Portanto, esse conjunto de termos relacionados para "kw1" seria diferente para cada arquivo de entrada, pois o word2vec seria treinado em arquivos individuais (por exemplo, 5 arquivos de entrada, execute o word2vec 5 vezes em cada arquivo).

Meu objetivo é encontrar conjuntos de termos relacionados para cada arquivo de entrada, dada a palavra-chave comum ("kw1"), que seria usada para outros fins.

Minhas perguntas / dúvidas são:

  • Faz sentido usar o word2vec para uma tarefa como essa? é tecnicamente correto usar o tamanho pequeno de um arquivo de entrada?

Fiz o download do código em code.google.com: https://code.google.com/p/word2vec/ e acabei de executar o processo da seguinte maneira:

 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 
  • Pelos meus resultados, vi que estou recebendo muitos termos barulhentos (palavras irrelevantes) quando estou usando a ferramenta 'distance' para obter termos relacionados a "kw1". Então, removi palavras irrelevantes e outros termos barulhentos, como menções de usuários. Mas eu não vi em nenhum lugar que o word2vec exija dados de entrada limpos ...?

  • Como você escolhe os parâmetros certos? Vejo que os resultados (da execução da ferramenta de distância) variam muito quando altero parâmetros como '-window', '-iter'. Qual técnica devo usar para encontrar os valores corretos para os parâmetros. (tentativa e erro manuais não são possíveis para mim, pois estarei ampliando o conjunto de dados).

samsamara
fonte

Respostas:

9

O Word2Vec não é uma boa opção para um conjunto de dados desse tamanho. A partir de pesquisas que eu vi, ele liberará seu poder se você alimentar pelo menos dois milhões de palavras, 3 mil tweets não seriam suficientes para uma similaridade concisa de palavras.

chewpakabra
fonte
precisamos remover palavras irrelevantes como uma etapa de pré-processamento de dados?
samsamara
2
Não, na abordagem word2vec, você não precisa fazer isso, já que o próprio algoritmo se baseia em um amplo contexto para encontrar semelhanças nas palavras, portanto, interromper as palavras (a maioria das quais são preposições, pronomes e outros) são importantes para o algoritmo .
precisa saber é o seguinte
mas quando eu estava usando a ferramenta de distância para encontrar as palavras mais semelhantes a uma determinada palavra, a versão com palavras-chave removidas me deu palavras sensíveis do que a versão sem. você consegue adivinhar o que isso significa?
samsamara
Provavelmente, você está usando um contexto muito restrito: se o seu modelo analisar, digamos, duas palavras para frente e para trás, você terá até duas palavras de parada no contexto e isso poderá gerar resultados piores. Se você ampliar o contexto (o que tornará o modelo maior e o tempo de treinamento mais longo), o modelo with-stopwords fornecerá melhores resultados, presumo.
Chewpakabra 15/04
obrigado pela entrada, faz mais sentido agora. Além disso, como o word2vec processa a entrada sentença por sentença, o que aconteceria se eu misturasse as sentenças no documento de entrada? isso deve mudar totalmente os vetores de saída, certo? Além disso, dado o processamento enviado por enviado, como o word2vec difere do doc2vec? obrigado novamente.
samsamara