Para uma tarefa de processamento de linguagem natural (PNL), geralmente se usa vetores word2vec como uma incorporação para as palavras. No entanto, pode haver muitas palavras desconhecidas que não são capturadas pelos vetores word2vec simplesmente porque essas palavras não são vistas com bastante frequência nos dados de treinamento (muitas implementações usam uma contagem mínima antes de adicionar uma palavra ao vocabulário). Este pode ser especialmente o caso de textos do, por exemplo, Twitter, onde as palavras são frequentemente incorretas.
Como essas palavras desconhecidas devem ser tratadas ao modelar uma tarefa de PNL, como previsão de sentimentos, usando uma rede de longo prazo (LSTM)? Eu vejo duas opções:
- Adicionando um token de 'palavra desconhecida' ao dicionário word2vec.
- Excluindo essas palavras desconhecidas, de modo que o LSTM nem saiba que a palavra estava na frase.
Qual é a maneira preferida de lidar com essas palavras?
Respostas:
A opção 1 (adicionando um token de palavra desconhecida) é como a maioria das pessoas resolve esse problema.
A opção 2 (excluir as palavras desconhecidas) é uma péssima idéia, pois transforma a sentença de uma maneira que não é consistente com a forma como o LSTM foi treinado.
Outra opção que foi desenvolvida recentemente é criar uma palavra incorporada rapidamente para cada palavra usando uma rede neural convolucional ou um LSTM separado que processa os caracteres de cada palavra, um de cada vez. Usando essa técnica, seu modelo nunca encontrará uma palavra para a qual não possa criar uma incorporação.
fonte
Mapear palavras raras para simplesmente significa que as excluímos e as substituímos pelo token nos dados de treinamento. Assim, nosso modelo não conhece nenhuma palavra rara. É uma forma bruta de suavização, porque o modelo pressupõe que o token nunca ocorrerá realmente em dados reais ou, melhor ainda, ignora completamente esses n-gramas.
fonte