Итак, хитрость хеширования заключается в том, что она не позволяет поддельным словам занимать дополнительную память. В обычной модели Bag-Of-Words (BOW) у вас есть 1 измерение на слово в словаре. Это означает, что слово с ошибкой и обычное слово могут принимать разные измерения - если у вас есть слово с ошибкой в модели вообще. Если слово с ошибкой отсутствует в модели (в зависимости от вашей модели), вы можете полностью его игнорировать. Это складывается со временем. И, используя слово с ошибкой, я просто использую пример любого слова, отсутствующего в словаре, который вы используете для создания векторов для обучения вашей модели. Это означает, что ни одна модель, обученная таким образом, не может адаптироваться к новому словарю без повторного обучения.
Метод хеширования позволяет вводить слова без слов, что может привести к потере точности. Это также гарантирует, что вы можете связать свою память. По сути, метод хэширования начинается с определения хеш-функции, которая принимает некоторый вход (обычно слово), и сопоставляет его с выходным значением в пределах уже определенного диапазона. Вы бы выбрали свою хеш-функцию для вывода где-нибудь между, скажем, 0-2 ^ 16. Таким образом, вы знаете, что ваши выходные векторы всегда будут ограничены размером 2 ^ 16 (произвольное значение на самом деле), так что вы можете предотвратить проблемы с памятью. Кроме того, хеш-функции имеют «коллизии» - это означает, что хеш (a) может равняться hash (b) - очень редко с соответствующим выходным диапазоном, но это возможно. Это означает, что вы теряете некоторую точность - но поскольку теоретически хеш-функция может принимать любую входную строку, она может работать с словарными словами, чтобы получить новый вектор того же размера, что и исходные векторы, используемые для обучения модели. Поскольку ваш новый вектор данных имеет тот же размер, что и те, которые использовались для обучения модели ранее, вы можете использовать его для уточнения модели, вместо того, чтобы заставлять обучать новую модель.