И, вот, мы запускаем нашу модель на валидационном датасете, где она... досрочно завершается с ошибкой!
Мы поместили в embedding слой из модели fasttext векторы всех слов, которые входят в train и test выборки, но не подумали о том, как мы будем обрабатывать незнакомые слова.
По ссылке ниже вы можете ознакомиться с решением этой проблемы, использующим возможности fastText:
https://github.com/Samsung-IT-Academy/stepik-dl-nlp/blob/master/task7.1_aspect_sentiment_eval.ipynb
А какие еще решения позволят решить проблему с незнакомыми словами?
- Для незнакомых слов добавить тэг и задать для него случайный вектор в embedding слое; Сделать embedding слой обучаемым.
- Положиться на возможности fastText: убрать из модели embedding слой и сделать отдельный конвертер: слово -> вектор fastText.
- Помимо замороженного embedding слоя сделать тренируемый embedding слой, состоящий из вектора >
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.