Как робот-переводчик находит и выучивает новые слова

Мы постоянно пользуемся машинными переводчиками, но редко задумываемся над тем, кто их составляет и, главное, пополняет по мере того, как в разные языки мира входят новые слова и значения. Создатели Яндекс.Переводчика разработали алгоритм, позволяющий им автоматически находить недавно вошедшие в язык новые слова, снабжать их переводами и словарным описанием и включать в корпус. О том, как это происходит, читателям N + 1 рассказывает разработчик сервиса Екатерина Еникеева.

Новые слова появляются в языке постоянно: в связи с технологическим прогрессом, модой и другими изменениями в окружающем мире. Какая-то часть новых слов образуется по действующим в языке механизмам словообразования: например, хлебопечка — явление относительно новое, но слово образовано из существующих корней по регулярной модели типа «соковыжималка» и так далее. Другие слова заимствуются из иностранных языков и постепенно адаптируются, начинают участвовать в словообразовании (например, хайп -> хайповый).

Обычные словари (бумажные и электронные), как толковые, так и переводные, над которыми работают лингвисты-лексикографы, составляются несколько лет, выпускаются отдельными томами или целиком, поэтому не могут оперативно фиксировать изменения в языке, особенно в лексике, которая меняется и обновляется постоянно. И хотя существуют специальные словари новых слов, многие из них уже представляют собой исторические памятники, например, «Новые слова и значения» — словари 1980-90 годов.

В Яндекс.Переводчике мы разрабатываем уникальные машинные словари — это переводные словари, которые создаются автоматически на основе параллельных корпусов, то есть коллекций текстов на одном языке с их переводом на другой. О соответствии разноязычных текстов мы знаем благодаря тому, что Яндекс — это поисковая машина, которая видит практически весь интернет. Например, существуют параллельные переводы описания отелей или различной литературы, статей.

Для составления машинного словаря такие тексты выравниваются, то есть сначала сопоставляются те предложения, которые являются переводами друг друга, а затем более короткие их фрагменты — слова и словосочетания. Затем с помощью статистических методов и дополнительных лингвистических фильтров выделяются те слова и словосочетания, которые являются регулярными переводами. В результате наши машинные словари постепенно приближаются к традиционным переводным словарям, поскольку содержат также грамматическую информацию, примеры употребления, синонимы и некоторые другие дополнительные разделы.

Статьи в машинном словаре выглядят следующим образом:

При этом следует помнить, что машинные словари — это отдельный продукт внутри Яндекс.Переводчика. Они дополняют знание пользователя о переведенном слове, тогда как сам машинный перевод использует другую модель. Статьи из машинного словаря размещаются под полями ввода и перевода.

Один из главных плюсов таких словарей — возможность их регулярного обновления. Машинные словари строятся по параллельным корпусам, которые регулярно обновляются, поэтому новые слова и значения там появляются значительно быстрее. Кроме того, использование текстов из интернета позволяет нам получать более общеупотребительные или даже разговорные переводы.

Однако параллельных текстов в интернете в принципе не так много, поэтому частое обновление корпуса не всегда дает хорошие результаты: реальные изменения и новые слова сложно отличить от шума — ошибок, опечаток и тому подобного. Поэтому мы решили использовать одноязычные данные (в первую очередь на русском языке), чтобы находить слова, недавно возникшие в языке.

Когда появляются новые слова и понятия, люди начинают искать их в интернете. Проанализировать изменения мы можем, посмотрев на историю поисковых запросов. Мы предположили, что новые слова, появившиеся в последние полгода, будут искать в несколько раз чаще, чем в предыдущие полгода. Предположение подтвердилось: так, слово «хайп» в первом полугодии 2017 года искали почти в два раза чаще, чем в 2016 году, даже несмотря на то, что слово на самом деле не новое.

Вообще, среди слов, которые чаще искали в 2017 году, оказываются далеко не только новые слова, и для создания машинных словарей это серьезная проблема. Часто новые запросы — это имена ньюсмейкеров, то есть персон, появляющихся в новостях (например, Шурыгина). Кроме того, это названия фильмов, сериалов и вообще актуальных событий того периода, который мы сравниваем с предыдущим. Так, в первом полугодии 2017 года начинают искать Ривердейл, деспосито, инстаграмщицы. Еще одна категория — сезонные запросы (весной, например, популярны запросы апрель, пасха, ландыши и тому подобное).

Чтобы из всего этого разнообразия оставить действительно новые слова, приходится использовать набор специальных лингвистических фильтров. В частности, мы проверяем, является ли слово именованной сущностью, есть ли оно в морфологическом словаре (можно ли с уверенностью предсказать грамматические признаки слова, например, к какой части речи оно относится), встречается ли оно в запросах о значении слов (например, «что такое …» или «… значение»). Запросы с опечатками исправляются и объединяются с правильными написаниями, если они встречаются в полученном списке. Таким образом мы получаем намного меньше кандидатов в новые словарные слова (за первое полугодие 2017 года, например, около тысячи из исходных 78 тысяч, например агриться, биткойн, мессенджер, хайлайтер).

Таким образом, мы получаем список слов, предположительно ставших популярными в определенное время. Следующий этап автоматического составления словарной статьи — поиск перевода для этих слов. При построении машинного словаря по параллельным текстам мы используем имеющуюся там информацию о переводе. При отборе новых слов мы пользовались только одноязычными данными поисковых запросов на русском языке, следовательно, теперь нужно применять другой подход.

Значительная часть новых слов — заимствования, в основном — из английского, но не только. Этот факт можно использовать, чтобы попытаться предсказать переводы на английский язык для неологизмов. Современные заимствования получаются обычно в результате записи кириллицей чего-то похожего на произношение иностранного слова, причем не всегда соответствующего нормативной транскрипции (например, свитшот — от англ. sweatshirt, то есть толстовка из плотного материала без карманов).

Итак, из имеющихся словарных статей машинного словаря мы получили список слов, похожих на заимствования, и их переводов, а затем обучили специальную модель транслитерации из русского слова обратно в иноязычное. Эта модель позволяет порождать несколько вариантов транслитерации заданного слова, например, для слова «свитшот» получаем такие варианты: sweetshot, sweetshirt, sweatshirt. Известно, что по произношению не всегда можно однозначно восстановить исходную запись слова (есть много шуток на эту тему), поэтому мы применяем собственный алгоритм машинного обучения CatBoost, чтобы ранжировать варианты написания. Те переводы, в которых классификатор уверен, сохраняются для дальнейшей проверки.

Как уже было сказано выше, статьи в нашем машинном словаре включают не только слово и варианты его перевода, но и некоторую дополнительную информацию. В случае с неологизмами эта информация особенно важна: примеры использования и грамматические пометы могут помочь понять значение слова и правильно его использовать.

Чтобы составить словарную статью, а не только правильно перевести новое слово, нужны еще некоторые данные. Важными составляющими словарной статьи в нашем машинном словаре являются грамматические пометы (в основном это части речи, но могу быть и дополнительные) и примеры употребления. Поскольку слово может иметь несколько омонимов разных частей речи (например, русское слово знать может быть существительным и глаголом), важно учитывать контекст.

С другой стороны, в примерах употребления слова могут быть не в начальной форме (например, существительное в косвенном падеже), а их нужно сопоставить со словом именно в начальной форме. Поэтому мы получаем морфологическую информацию одновременно с примерами: разбираем синтаксическим парсером запросы за необходимый период и ищем в них уже найденные новые слова по начальной форме. Запросы с новыми словами также нужно отфильтровать: во-первых, убрать грамматически некорректные фразы (например, «мультиварка редмонд инструкция скачать»), затем неинформативные примеры («айфоны в москве»). Отсортировав результаты по частоте, мы получаем достаточно хорошие примеры употребления для многих новых слов.

Так, например, выглядит статья для слова «хайповый»:

В результате у нас есть «черновик» словарной статьи, полученный автоматически, который затем проверяют пользователи Толоки (сервиса Яндекса, в котором размещены задания по анализу и оценке контента). С помощью внутренних технологий мы смогли сделать этот процесс регулярным и не зависящим от разработчиков: обновление запускается само, после разметки на Толоке новые слова также сами добавляются в словарь.

Таким образом, с помощью технологий машинного обучения машинные словари сервиса Яндекс.Переводчик оперативно пополняются переводами самых разных новых слов, включая сленговые, и нам для этого не нужно ждать обновления неповоротливых словарей на стороне, потому что современный язык, к сожалению или к счастью, развивается гораздо быстрее.