Понимают ли модели Hugging Face короткие аббревиатуры
Что проверяют
Понимаете ли вы, что модель видит не слова, а токены, и умеете ли объяснить провал на редкой лексике механикой, а не фразой «модель этому не обучена». Заодно смотрят, знаете ли, что с этим делать: нормализация, дообучение, расширение словаря.
Как отвечать
Сначала поправьте формулировку: Hugging Face это хаб с моделями разных архитектур, и поведение зависит от конкретной модели, её данных и токенизатора.
Механика такая. Современные токенизаторы (BPE, WordPiece, Unigram) режут текст на подслова, поэтому неизвестных слов у них не бывает: редкое сокращение просто распадается на несколько малоинформативных кусков. Значение ему придаёт контекст и то, насколько часто оно встречалось при обучении. Общеупотребительное модель разберёт, узкоотраслевое и многозначное перепутает.
Что предлагать дальше:
- посмотреть, во что превращается строка:
tokenizer.tokenize(...)и число токенов. Это первое действие, а не гипотезы; - нормализовать вход словарём сокращений, подставляя полную форму, иногда рядом с исходной;
- при поиске по эмбеддингам расширять и запрос, и документы, иначе сокращение и расшифровка окажутся в разных местах пространства;
- дообучить на доменном корпусе или взять модель, уже обученную на этом домене;
- добавить частые сокращения в словарь через
add_tokensиresize_token_embeddings, помня, что новые векторы стартуют случайными и без дообучения пользы не дадут.
Где спотыкаются
Рассуждают про слово вне словаря. У подсловных токенизаторов такой категории нет, закодировать можно любую строку. Проблема не в том, что сокращение нельзя представить, а в том, что представление размазано по кускам со своей историей в обучающих данных.
Второе: судят по одному примеру. Модель правильно расшифровала два знакомых сокращения, и делается вывод, что всё работает. Нужна размеченная выборка своей предметной области и метрика, иначе решение принимается по впечатлению.
Третье: принимают уверенность за понимание. Генеративная модель почти никогда не отвечает «не знаю», она выдаёт правдоподобную и неверную расшифровку. При извлечении сущностей это опаснее отказа, поэтому результат сверяют со справочником сокращений, а не берут как есть.