Palavras desconhecidas em uma incorporação de palavras treinadas (Gensim) para usar em Keras

Dec 19 2020

Estou treinando um word embedding usando GENSIM (word2vec) e uso o modelo treinado em uma rede neural no KERAS. Um problema surge quando eu tenho uma palavra desconhecida (fora do vocabulário), então a rede neural não funciona mais porque não consegue encontrar pesos para aquela palavra específica. Acho que uma maneira de corrigir esse problema é adicionar uma nova palavra ( <unk>) à incorporação de palavras pré-treinadas com pesos zero (ou talvez pesos aleatórios? Qual é o melhor?). Essa abordagem é adequada? Além disso, para esta palavra embedding, os pesos não são treináveis ​​nesta rede neural.

Respostas

1 gojomo Dec 20 2020 at 04:17

O mais típico é ignorar palavras desconhecidas. (Substituí-los por uma palavra-plug ou pelo vetor de origem causa mais distorção.)

Você também pode considerar treinar um FastTextmodo em vez disso, que sempre sintetizará algum vetor de adivinhação para uma palavra fora do vocabulário, a partir dos vetores de caracteres e gramas criados durante o treinamento. (Esses vetores sintéticos geralmente são melhores do que nada, especialmente quando uma palavra tem raízes de palavra sobrepostas com palavras relacionadas - mas obter mais dados de treinamento com exemplos de todos os usos de palavras relevantes é melhor, e simplesmente ignorar palavras raras desconhecidas não é tão ruim.)