fastText — библиотека для обучения текстовых представлений (эмбеддингов) и классификации текстов, разработанная Facebook AI Research (FAIR) в 2016 году. Главное нновшество — работа с подсловными единицами: слово разбивается на символьные n-граммы, что позволяет обрабатывать неизвестные слова и опечатки без специальной подготовки.
Архитектура и идея
Классические word2vec-эмбеддинги рассматривают каждое слово как атомарную единицу. fastText идёт глубже: слово «бегать» представляется как совокупность n-грамм: <бе, бег, ега, гат, ать, ть> (плюс спецсимволы < и >). Вектор слова — сумма векторов его n-грамм. Преимущества:
- Редкие слова и опечатки («бигать», «бегтать») получают разумные векторы
- Морфологически богатые языки (русский, финский, турецкий) обрабатываются значительно лучше word2vec
- Обучение быстрее, чем у конкурентов, на CPU
Предобученные модели
Facebook опубликовала предобученные модели для 157 языков, обученные на Википедии и Common Crawl. Модели доступны в двух форматах: полная (4+ Гб) и квантизованная (несколько сотен МБ). Для русского языка вектор размерностью 300 — стандарт. Эти векторы можно использовать как базис в downstream-задачах (NER, классификация).
Текстовая классификация
fastText также включает быстрый классификатор текстов. На задачах тональности и тематики он соперничает с нейросетями, но работает в тысячи раз быстрее. Архитектура: средний вектор слов → линейный слой → softmax. Пригоден для production на слабом железе. Обучение на миллионе документов занимает секунды.
