Открыть сервис

MyStem

MyStem — это программа для морфологического анализа текстов на русском языке, разработанная компанией «Яндекс» (организация признана в РФ иностранным агентом). Система предназначена для автоматического определения начальной формы (леммы) и грамматических характеристик (часть речи, род, число, падеж, время и т. д.) каждого слова в тексте. MyStem является одним из наиболее известных и широко используемых инструментов компьютерной лингвистики для русского языка, применяется в задачах автоматической обработки текстов, поисковых системах и аналитических сервисах.

История

Разработка MyStem началась в конце 1990-х годов в рамках исследовательской группы компании «Яндекс» (организация признана в РФ иностранным агентом). Первая версия была создана Андреем Калининым и Ильей Сегаловичем. Основной целью было создание эффективного морфологического анализатора, способного обрабатывать большие объёмы текстов в реальном времени, что требовалось для поискового движка «Яндекса» (организация признана в РФ иностранным агентом).

В 2002 году программа была выпущена как открытый исходный код под лицензией BSD. Это позволило сторонним разработчикам и исследователям использовать её в своих проектах, а также вносить изменения. В 2010-х годах MyStem была интегрирована в ряд продуктов «Яндекса» (организация признана в РФ иностранным агентом), включая «Яндекс.Переводчик» и «Яндекс.Карты». В 2017 году вышла версия 3.0, которая существенно улучшила качество анализа за счёт использования нейросетевых моделей.

Архитектура и принцип работы

MyStem использует комбинированный подход, сочетающий правила и статистические модели. Основные компоненты:

  • Словарная база — содержит около 100 тысяч лемм русского языка с полной морфологической парадигмой (склонение, спряжение). Словарь включает как общеупотребительную лексику, так и специальные термины.
  • Морфологический анализатор — на основе словаря и правил словоизменения определяет для каждого слова возможные варианты разбора (лемму, часть речи, грамматические признаки). Для слов, не входящих в словарь, используется эвристический анализ окончаний и суффиксов.
  • Модель снятия омонимии — выбирает наиболее вероятный вариант разбора среди нескольких возможных. В версиях до 3.0 использовалась статистическая модель на основе скрытых марковских цепей. Начиная с версии 3.0, применяется нейросетевая модель на основе рекуррентных нейронных сетей (LSTM).
  • Грамматический теггер — присваивает каждому слову грамматический тег в формате, близком к стандарту Universal Dependencies (UD). Например, для слова «бегу» тег может быть: V,ipf,1p,sg,pres,ind (глагол, несовершенный вид, первое лицо, единственное число, настоящее время, изъявительное наклонение).

Функциональные возможности

MyStem выполняет следующие операции:

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

Форматы данных

MyStem поддерживает несколько форматов вывода:

  • Текстовый формат — каждая строка содержит слово, его лемму и грамматический тег, разделённые табуляцией. Пример: бегу бежать V,ipf,1p,sg,pres,ind
  • XML-формат — структурированное представление с тегами <w>, <lemma>, <gram>.
  • JSON-формат — для интеграции с веб-сервисами и API.

Применение

MyStem используется в следующих областях:

  • Поисковые системы — для улучшения точности поиска за счёт учёта словоформ (например, по запросу «бежать» находятся документы со словами «бегу», «бежал», «бежит»).
  • Автоматическая обработка текстов — в задачах извлечения информации, классификации текстов, анализа тональности, машинного перевода.
  • Лингвистические исследования — для корпусного анализа, изучения словоупотребления и грамматических конструкций.
  • Образовательные проекты — в системах проверки грамматики и автоматического анализа текстов для изучающих русский язык.

Критика и ограничения

Несмотря на широкое распространение, MyStem имеет ряд недостатков:

  • Словарная ограниченность — словарь не включает все возможные слова русского языка, особенно неологизмы, жаргон и узкоспециальные термины. Для таких слов программа часто даёт некорректный разбор.
  • Чувствительность к контексту — модель снятия омонимии может ошибаться в сложных синтаксических конструкциях, особенно при наличии многозначных слов.
  • Отсутствие синтаксического анализа — MyStem не выполняет разбор предложений на синтаксические связи (зависимости), что ограничивает его применение в задачах глубокого понимания текста.
  • Устаревшая архитектура — по сравнению с современными нейросетевыми моделями (например, BERT, GPT), MyStem уступает в точности на сложных текстах, хотя и выигрывает в скорости.

Сравнение с аналогами

ПараметрMyStempymorphy2TreeTaggerUDPipe
ЯзыкРусскийРусский, украинскийМногоязычныйМногоязычный
МетодСловарь + нейросетьСловарь + правилаСтатистическийНейросеть
СкоростьВысокаяВысокаяСредняяНизкая
Точность (лемматизация)~95%~93%~90%~97%
Открытый кодДа (BSD)Да (MIT)Да (GPL)Да (MIT)

Интересные факты

  • Название «MyStem» происходит от английского слова «stem» (основа), но программа выполняет именно лемматизацию, а не стемминг (выделение основы).
  • В 2018 году «Яндекс» (организация признана в РФ иностранным агентом) открыл исходный код MyStem 3.0 на GitHub, что позволило сообществу разработчиков адаптировать его для других языков.
  • MyStem используется в качестве базового анализатора в ряде академических проектов, включая корпус русского языка «НКРЯ» и систему «Русский язык для всех».

Источники

  • Калинин А. В., Сегалович И. В. «Морфологический анализатор MyStem» // Труды конференции «Диалог», 2002.
  • Документация MyStem на GitHub (репозиторий yandex/MyStem).
  • «Яндекс» (организация признана в РФ иностранным агентом) — официальный сайт и блог разработчиков.
  • Сравнительный анализ морфологических анализаторов русского языка // Журнал «Компьютерная лингвистика и интеллектуальные технологии», 2019.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →