Наш опыт создания контекстного переводчика

в 7:16, , рубрики: изучение языков, контекстный поиск, обработка естественного языка, переводчик, стартапы

Выбор проекта

Все началось осенью 2017 года, тогда у нас уже был опыт разработки веб-приложений. Искали проект, удовлетворяющий следующим условиям:

  1. Можно сделать небольшой командой.

  2. Проверенная идея и большой потенциал роста.

  3. Понимание как сделать лучше.

  4. Оптимальное время разработки и выход на самоокупаемость.

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

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

  1. Команда у нас тогда уже была. 

  2. Нашли context.reverso.net и linguee.com. Главная идея, на наш взгляд, заключалась в наличии примеров употребления искомой фразы/слова и их перевода в контексте предложения. Второй момент, это переводы самих фраз — большой плюс по сравнению с большинством классических словарей. Эти сайты уже тогда неплохо себя чувствовали. Достижения даже десятой доли от их трафика было бы успехом. Даже если не получится переплюнуть конкурентов, долю рынка отъедим, и нам хватит.

  3. Сделаем лучше за счет добавления нового контента и других языковых пар перевода. Новый уникальный контент будем добывать, распарсивая сайты, имеющие разные языковые версии и pdf документы с одним и тем же текстом на разных языках. Языков в мире много, а у конкурентов были представлены только основные — расширяться есть куда. Данные по многим языкам тоже есть, как минимум, по субтитрам. В будущем можно было бы заняться переводом текстов.

  4. Быстро сделаем, потому что искать вхождения слов в предложении мы уже умеем, данные есть в открытом доступе, а красиво подсвечивать переводы научимся.

  5. Данные, на то время, это в основном, корпуса ООН, Europarl, субтитры. Раз с их использованием у вышеописанных сайтов проблем не возникает, то и у нас все будет ок.

Как уже сказал, начали разработку осенью 2017, параллельно завершая старые проекты. Спустя 3 месяца стало понятно, что быстро сделать не получилось, вернее, то, что получилось не устраивало нас по качеству и времени работы. Примерно через год запустились. К моменту запуска над проектом работало 6 человек.

Над чем мы работали

1. Объем и качество параллельных предложений

Параллельные предложения — это оригинальное предложение и его перевод. Совокупность таких предложений - параллельный корпус.

Если качеству корпусов ООН, Europarl можно доверять, то с субтитрами и другими источниками есть проблемы: некорректно построенные предложения, некачественные переводы, нецензурная лексика и даже написание слов с использованием символов разного алфавита так, что слово выглядит адекватно, но его нельзя найти в поиске. Парсинг новых примеров, их фильтрация и сопоставление — можно сказать, создание своего параллельного корпуса. Занимались выравниванием (сопоставлением фраз с их переводом на другой язык) субтитров на разных языках. Впоследствии мы отказались от парсинга новых данных и самостоятельного выравнивания субтитров, т.к. стало появляться достаточно данных из открытых источников в уже обработанном виде и мы просто не успевали все обрабатывать. База на некоторых направлениях превышает 300 миллионов предложений. Большой объем осложняет и замедляет внедрение изменений. Учитывая большое число направлений (78 на сегодня), нужно выдерживать баланс объема корпусов, количества направлений и скорости внесения обновлений.

2. Качество сопоставления слов и фраз друг другу в параллельных предложениях.

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

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

Если перевод фразы повторялся несколько раз, можно сделать вывод о правильности перевода. Главное, не основываться на данных, спарсенных с сайтов со специфическим однотипным контентом, переведенным через автоматический переводчик.

3. Скорость поиска и компоновка результатов

Для увеличения скорости занимались оптимизацией формата хранения таблицы соответствий (запросов, переводов и сопутствующей информации). Настраивали кэширование.

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

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

4. Сайт: удобство пользователя, удобство индексации для ботов поисковых систем

Пробовали формат отображения как в классических словарях: последовательно выводили примеры использования для каждого варианта перевода. Это хорошо работало для перевода отдельных слов, но с фразами выходило плохо. В итоге, чтобы не сбивать пользователей, решили оставить прежний вариант.

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

5. Правообладатели

Вопросы от правообладателей все‑таки появились. Запросы на удаление контента приходили от представителей брендов (интересно, они и киношникам пишут, чтобы в фильмах не звучало слово «джакузи») и от людей, желающих, чтобы нигде не употреблялись их фамилии или даже имена. Были и интересные моменты, например, пришло письмо с просьбой показать источник предложения. Человек нашел упоминания о своих родственниках, которых искал. Мы стараемся указывать точный источник примеров перевода, например, конкретный фильм, pdf файл или URL. Однако в данном случае была наша недоработка, исправились, отправили ссылку на источник. Надеюсь, родственники нашлись.

Почему бы не использовать google.translate или chatGPT?

Мы не ставим перед собой задачу переводить предложение целиком, как в гугл переводчике. В случае нейросетей вам приходится просто доверять переводу. Не доверяете? Придется поправлять, если есть компетенции, или сверяться с примерами из жизни, которые найдете на нашем сайте :).

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

Путь развития

Трафик на проекте стал заметно расти где-то в 2020 году, ускорился в середине 2021 и на пике, в июле 2022 года, составлял около 600 тысяч человек в сутки. В августе 2022 тенденция поменялась. Как уже говорил выше, наш проект, те, что брали за ориентир, и похожие на них сильно зависят от трафика с поисковых систем, который может резко измениться за короткий срок. Конечно, мы задавали себе вопросы: из-за чего это может происходить, почему некоторым везет больше, и где теперь люди, использующие сайты с контекстом? Точных ответов на эти вопросы нет, возможно, многим достаточно обычных словарей с переводами и/или объяснением слова на том же языке, но от авторитетных издателей. Может людям достаточно получить перевод от искусственного интеллекта, сейчас поисковики часто отвечают на подобные запросы сами.

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

Куда двигаться дальше

Заниматься качеством предложений и добавлять новые направления, на данный момент, себя не окупает. Дополнительные связанные сервисы запустили, посмотрим, будут ли пользоваться спросом. Делать упор на обучение, добавить больше упражнений и тестов на основе предложений из разных корпусов?

Буду рад обратной связи, идеям и предложениям по сотрудничеству.

Автор: ayaroslavskiy

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js