Обработка естественного языка

FastText

FastText

классикаЖивёт как быстрый классификатор и для морфологичных языков без GPU.

Представляет слово суммой векторов его символьных n-грамм, что даёт эмбеддинги даже для незнакомых слов.

Ключевые тезисы

  • Особенно полезен для морфологически богатых языков, включая русский.
  • Решает проблему out-of-vocabulary без отдельного словаря.
  • Встроенный быстрый классификатор — хороший бейзлайн.

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Символьные n-граммы

Почему FastText особенно хорош для русского языка.

Вектор слова — сумма векторов его символьных n-грамм
Пример

«машина» при n=3 даёт <ма, маш, аши, шин, ина, на>. Слово «машинка», ни разу не встреченное при обучении, получит близкий вектор — общие n-граммы обеспечивают это автоматически.

  • Проблема out-of-vocabulary исчезает: вектор можно построить для любого слова.
  • Опечатки и словоформы обрабатываются устойчиво.
  • Есть встроенный классификатор — быстрый и сильный бейзлайн для коротких текстов.
2

Встроенный классификатор

Бейзлайн, который обучается за секунды.

FastText-классификатор усредняет векторы n-грамм документа и подаёт результат в линейный слой с иерархическим softmax. Это делает обучение на миллионах документов вопросом минут на CPU.

import fasttext
model = fasttext.train_supervised("train.txt", epoch=25, wordNgrams=2, dim=100)
print(model.test("valid.txt"))    # (N, precision@1, recall@1)
Формат файла: `__label__класс текст документа`
На практике

Часто отстаёт от дообученного трансформера всего на несколько процентов, а стоит в тысячи раз дешевле — хороший выбор для больших потоков коротких текстов.

Связанные темы

От слов к векторам

Tokenization75%

Токенизация · Обработка естественного языка

Разбиение текста на единицы, с которыми работает модель: слова, подслова или байты.

Bag of Words75%

Мешок слов · Обработка естественного языка

Текст представляется вектором частот слов, порядок полностью игнорируется.

TF-IDF75%

TF-IDF · Обработка естественного языка

Взвешивает частоту слова в документе на его редкость в корпусе, подавляя общеупотребительные слова.

Word2Vec75%

Word2Vec · Обработка естественного языка

Обучает плотные векторы слов по контексту: близкие по смыслу слова оказываются рядом в пространстве.

GloVe75%

GloVe · Обработка естественного языка

Строит эмбеддинги из глобальной матрицы совстречаемости слов, а не только из локальных окон.

Embeddings75%

Эмбеддинги · Обработка естественного языка

Плотные векторные представления объектов, где геометрическая близость означает смысловое сходство.