Para una tarea de procesamiento de lenguaje natural (PNL), a menudo se usan vectores word2vec como incrustación de las palabras. Sin embargo, puede haber muchas palabras desconocidas que no son capturadas por los vectores word2vec simplemente porque estas palabras no se ven con la suficiente frecuencia en los datos de entrenamiento (muchas implementaciones usan un recuento mínimo antes de agregar una palabra al vocabulario). Este puede ser especialmente el caso con el texto de, por ejemplo, Twitter, donde las palabras a menudo están mal escritas.
¿Cómo deben manejarse esas palabras desconocidas cuando se modela una tarea de PNL como la predicción de sentimientos utilizando una red a largo plazo (LSTM)? Veo dos opciones:
- Agregar un token de 'palabra desconocida' al diccionario word2vec.
- Eliminar estas palabras desconocidas de modo que el LSTM ni siquiera sepa que la palabra estaba en la oración.
¿Cuál es la forma preferida de manejar estas palabras?
Respuestas:
La opción 1 (agregar un token de palabra desconocida) es cómo la mayoría de las personas resuelve este problema.
La opción 2 (eliminar las palabras desconocidas) es una mala idea porque transforma la oración de una manera que no es coherente con la forma en que se entrenó el LSTM.
Otra opción que se ha desarrollado recientemente es crear una palabra incrustada sobre la marcha para cada palabra utilizando una red neuronal convolucional o un LSTM separado que procesa los caracteres de cada palabra uno por uno. Con esta técnica, su modelo nunca encontrará una palabra para la que no pueda crear una incrustación.
fuente
El mapeo de palabras raras simplemente significa que eliminamos esas palabras y las reemplazamos con el token en los datos de entrenamiento. Por lo tanto, nuestro modelo no conoce palabras raras. Es una forma cruda de suavizado porque el modelo supone que el token nunca ocurrirá realmente en datos reales o, mejor aún, ignora estos n-gramos por completo.
fuente