Найти в Дзене

Лемматизация: как компьютер понимает, что «мыла» - это не только мыло, но и «мыть» в прошедшем времени

Разбираемся, почему Siri иногда звучит как инопланетянин и как русская лингвистика 1970-х помогает ИИ говорить по-человечески. Поисковик, который не умеет лемматизировать, видит: Лемматизация объединяет их в одну лексему «машина», и выдача вырастает в 3-5 раз. Глагол «идти» порождает:
иду, идёшь, идёт, идём, идут, шёл, шла, шли, иди, идя, идущий…
Словарь Зализняка описывает все формы кодом «ид/ти (1c)». Нейросеть решает по контексту: «купить мыла» → «мыло», «мама мыла пол» → «мыть». Алгоритм смотрит на тип склонения из словаря Зализняка:
Павел - 1b, Павлов - 1a, и выбирает правильное окончание.
Оглавление

Разбираемся, почему Siri иногда звучит как инопланетянин и как русская лингвистика 1970-х помогает ИИ говорить по-человечески.

1. Что такое лемматизация и чем она отличается от стемминга

  • Лемматизация - приведение словоформы к словарной (нормальной) форме:
    «мыла» → «мыть», «стола́» → «стол», «лучше» → «хороший».
  • Стемминг - грубое отрезание суффиксов: «столами» → «стол», «лучшими» → «лучш».
    Разница в точности: стемминг режет слова, лемматизация «понимает» их.

2. Почему без лемматизации Google не находит «машину» по запросу «машины»

Поисковик, который не умеет лемматизировать, видит:

  • «машины» - одно слово;
  • «машину» - другое слово;
  • «машинам» - третье слово.

Лемматизация объединяет их в одну лексему «машина», и выдача вырастает в 3-5 раз.

3. Три уровня сложности русского языка для алгоритма

3.1. 250 000 словоформ на один корень

Глагол «идти» порождает:
иду, идёшь, идёт, идём, идут, шёл, шла, шли, иди, идя, идущий…
Словарь Зализняка описывает
все формы кодом «ид/ти (1c)».

3.2. Омонимия: «мыла» = мыло? мыль? мыть?

  • мыло (сущ.): «купить мыла»
  • мыла (глаг.): «мама мыла пол»
  • мыль (прилаг.): «мыль пузырь»

Нейросеть решает по контексту: «купить мыла» → «мыло», «мама мыла пол» → «мыть».

3.3. Имена и фамилии: «Павлу» vs «Павлову»

  • Павлу Ивановичу (имя, дат. падеж)
  • Павлову Сергею (фамилия, дат. падеж)

Алгоритм смотрит на тип склонения из словаря Зализняка:
Павел - 1b, Павлов - 1a, и выбирает правильное окончание.

4. Как это работает: от словаря Зализняка до нейросетей

  • pymorphy2 - открытая библиотека на базе словаря Зализняка, 99 % точности для обычных слов
  • UDPipe - универсальные модели для 70 языков, обучены на корпусе Universal Dependencies
  • BERT + рус. лемматизатор - нейросеть «читает» контекст и выбирает лемму среди омонимов
  • Google Search - внутренний лемматизатор для русского + индекс «семантических токенов»

5. Лайфхаки для разработчиков и обычных пользователей

  • SEO-специалисту - Проверяй лемматизацию ключей через pymorphy2 перед продвижением
  • Студенту-филологу - Используй онлайн-калькулятор «Лемматизатор Зализняка» на сайте Института русского языка
  • Обычному пользователю - Если Яндекс.Переводчик «глупит», вставьте слово в контекст - нейросеть поймёт омоним