Как стать автором
Обновить

Как Яндекс научил машину самостоятельно создавать переводы для редких языков

Время на прочтение10 мин
Количество просмотров19K
Всего голосов 87: ↑85 и ↓2+83
Комментарии55

Комментарии 55

Так вы научили машину самостоятельно создавать переводы для редких языков или нет?
Можно сказать, что да :)
На самом деле, точнее будет сказать, что мы научили машину использовать родственные связи между языками для создания переводов для редких языков.
только мне кажется этот подход проигрывает гугловскому?
У Гугля — примерно то же самое. С некоторыми своими нюансами.
насколько я понимаю
«если дополнить сугубо лексическую модель еще и моделями морфологии (словоизменение и словообразование) и синтаксиса (построение предложений)» в гугловском переводчике не используется. он примитивнее, Скорее всего ему требуется существенно больше данных, чем подходу гугла…
На самом деле, наоборот — при нашем подходе для построения машинного перевода хватает меньшего объёма данных. При этом для компенсации недостающих данных мы научились использовать данные родственных языков.
Извиняюсь, я так и хотел сказать, что Яндексу требуется меньше данных за счет предобработки. Но вы становитесь заложниками такого подхода, правильности определения и т д.

Не пытались использовать SyntaxNet?
Прогоняете SyntaxNet, получаете дополнительную информацию о предложении и обучаете с доп информацией?
кроме единичного вектора слова, еще тип речи, взоимосвязанность и т д
кроме того для языков с падежами можно существенно сократить количество слов за счет передачи именительного падежа и принадлежности слова (кто ему подчинен, кому он подчинен), в принципе можно перестраивать предложение в языково независимую структуру. что должно упростить обучение разных языков.
Если Вы говорите про парсинг предложения на малом языке с помощью SyntaxNet — так просто сделать не получится, так как для обучения SyntaxNet требуются составленные лингвистами сложные обучающие данные наподобие Universal Dependencies. Обычно составление таких корпусов занимает многие месяцы и даже годы ручного труда.
  1. можно попробовать упростить.

есть начальный корпус и множество других предложений.
делаем допустим 5 сетей с разной инициализацией. и обучаем на размеченном корпусе.
далее прогоняем по оставшимся предложениям и там где все 5 сетей разбирают предложение одинаково включаем в обучающую выборку с коэффициентом 0,8 (если например коэффициент обучения 0,0001 то для этих данных будет 0,0001*0,8)
далее повторяем для оставшихся с последовательно убывающими коэффициентами обучения.


или можно сжимать информацию ставя на вход image

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

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

Ваш вариант конечно лучше, но требует вмешательство человека, а это дорого.


я пробовал нечто такое, сработало. Но это была игрушечный пример....

гугль используют Sequence-to-sequence model для перевода
когда я читаю топики Яндекса, то вообще не вижу технической информации. Это удручает. Схема сети сильно порадовала бы.
Если вы про GNMT, то далеко не для всех языков в продакшне.
ага, только для популярных. для RNN надо очень много входных данных
Насколько нам известно, Гугл-переводчик не применяет никаких специальных технологий для перевода малых языков. Соответственно, возможности переводить с/на языки, для которых крайне мало данных (например, башкирский, папьяменто, эльфийский) в нём пока что нет.
Башкирский — достаточно много письменных источников имеет
Смотря для каких целей. Для создания системы машинного перевода нужны, во-первых, достаточно специфические данные — параллельные тексты (например тексты с одинаковым содержанием на русском и на башкирском языках). Во-вторых, этих данных требуется много — хотя бы сотни тысяч предложений (в идеале — десятки и сотни миллионов).
Легко.
Государственные документы, например.
Эпосы.

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

В любом случае, текущая версия не финальная, и мы работаем над её улучшением.
Художественные тексты, особенно поэтические — крайне плохо подходят для Sequence-to-sequence модели, как мне кажется (если верно высказанное выше утверждение про гугл).
Насколько я знаю, Гугл для языков с очень большим объёмом параллельных текстов использует end-to-end нейросети, в том числе в продакшне. Для большинства обычных — просто статистический подход с самой простой языковой моделью — Stupid Backoff. Хитрые вещи с морфологией они не делают, надеясь на просто языковую модель. Нейросети правда частично решают эту проблему, так как гугловская модель использует не слова, а subword units, что будет приводить к сегментации на что-то, похожее на морфемы, но я подробностей про русский не слышал. Разве что параллельный корпус у них примерно на 0.3B предложений.
but I think this approach loses link?

Only it seems to me, this approach loses Googley?

(первый — яндекс, второй гугль. ;)
Вот вы пишете, что «перевод с/на идиш, дополненный заимствованиями из иврита и немецкого, отличается более высоким качеством в сравнении с классическим подходом».
А как вы измеряете качество перевода?
Переводы машины сравниваются с переводами людей. Подробнее тут https://en.wikipedia.org/wiki/BLEU
Что-то не узнаю язык с синей ногой. Вроде бы и похож на хинди, а вроде бы и так что бы очень (ни буквы, ни расположение)
на хинди было бы आपका नीला पैर — ваша синяя нога
а правильнее
आपका पैर नीला है
Это маратхи, а не хинди. Они схожи, и письменность у них одна.
А как на эльфийский (и обратно) переводятся подобные вещи? :)
image
Для таких современных слов, конечно же, Профессор Толкиен переводов на эльфийский не придумал, поэтому нам приходится импровизировать :)
В таких случаях мы пытаемся заимствовать слова из кельтских языков — шотландского, ирландского, валлийского. При этом соблюдаем все правила орфографии письменности Тенгвар :)
> В таких случаях мы пытаемся заимствовать слова из кельтских языков — шотландского, ирландского, валлийского

Позвольте сказать вам, как автор синдарино-русского словаря(первого достаточно полного, законченного в 2001 году, но так и не изданного), что вы глубоко неправы. Вы сами додумали за автора языка про заимствования и сами пытаетесь их делать. Не надо так. Прежде всего для неосиндарина нужно использовать имеющиеся корни, пример: вам кажется, что в синдарине нет слова «телевизор», но это же не так, ибо «теле» = палан, а «видеть» — тир, таким образом в языке уже есть слово «палантир»(множественное число «палантири») для телевизора, аналогично будет с телефоном, который у нас будет что-нибудь типа palanrhoss(сейчас не уверен, сходу вспомнил rhoss для звука, но может что-то иное, надо заглянуть в словарь, а его вот прямо сейчас под рукой нет, я не за своим компом). Не нужно тащить в язык чужие корни, нужно образовывать из его корней, если нет корней в синдарине смотреть в квэнья, смотреть как слово должно было изменяться при переходе в синдарин и делать из него.

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

Знаете классическую ошибку тех, кто прочитал пару статей и думает, что он разбирается в синдарине? Эта ошибка называется «Ошибка Гэндальфа» и она нам видна в «Lord of the Rings». Когда Митрандир смотрит на ворота Мории он там видит надпись «Pedo mellon a mino», но он не помнит(или не знает, ибо не жил в Смертных Землях), что у синдарина были диалекты. Он рассуждает, что эта надпись значит что если ты друг, то знаешь пароль по той простой причине, что надпись требующая сказать слово друг писалась бы через vellon, а не mellon, он не понимает, что в эрэгионском диалекте правильно так, как написано.
Вот и вы рассуждаете о синдарине не вдаваясь во внутреннюю историю в пределах мира описанного(выдуманного) JRRT. На синдарин внутри мира не могут влиять шотландские, ирландские и прочие японские языки, на синдарин влияют кхуздул и вестрон, синдарин не вышел из шотландского или ирландского, синдарин вышел из квэнья.
Извините, но вы не правы по нескольким пунктам. Во-первых, pálantír со множественным числом pálantíri — это не синдарин, а quenya. В синдарине множественное число образуется умлаутом по особым правилам (aran — erein > erain, toron — töryn > teryn, mellon — mellyn и т.д. См., например, обзор Хельге Фаускангера). Во-вторых, синдарин не происходит от quenya, оба они происходят от протоэльфийского (если быть совсем точным, от протоэльдарского, который, в свою очередь, происходит от протоквендианского, бывшего в ходу в часы Пробуждения у озера Куйвиэнен и породившего также шесть языков авари).
А по теме статьи: почему выбрали именно синдарин? У quenya словарный корпус больше и морфология прописана во многом тщательнее :). Кстати (сам убедиться не могу из-за отсутствия зрения), в сообществе Languages of Middle-Earth говорили, что у вас много где не перевод, а транслитерация английских слов на tengwar. Это правда?)
Лень разбирать ваши частичные ошибки, вам и слово «нолдорин» ничего не скажет, вы не поймете влияния языков.
А про транслитерацию у Яндекса это чистая правда. Проверьте сами, тенгвар достаточно прост.
Мне как раз слово noldorin скажет многое. Точно так же, как и Gnomish, Qenya, Ilkorin и прочие интересные слова. Проверить же Яндекс самостоятельно не могу по уже указанной выше причине. Если вам действительно интересны эти вещи, приходите в Google+-сообщество Languages of Middle Earth.
Простите, а что Вы подразумеваете под фразой «сам убедиться не могу из-за отсутствия зрения»?
Именно это и значит: я не вижу, то есть совсем)
вам кажется, что в синдарине нет слова «телевизор», но это же не так, ибо «теле» = палан, а «видеть» — тир, таким образом в языке уже есть слово «палантир»(множественное число «палантири») для телевизора


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

А почему тогда, все же, не более близкий к нему валийский?
Где я предлагаю тянуть русский?
Далековизор буквально переводится на синдарин. Никакого русского. Прямой перевод.
А далековизор какое?
;)

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

Но есть слова, которые серьезно различаются в разных языках.

По вашей же системе получится, что русско-эльфийский перевод и, скажем китайско-эльфийский для одного и того же понятия будут давать разные эльфийские варианты.
Вы абсолютно правы. Исландцы, например, почти не используют заимствований. Для слова «телефон» они взяли старое слово, которое означало «нить, верёвка», но которое перестало использоваться в речи уже давно. При этом, как видите, пошли по ассоциации: нить -> провод -> длинные провода -> телефон). Поэтому так трудно и так неоднозначно дело составления словарей для нео-quenya и нео-синдарина.
Удачи вам в дальнейшем расширении!
Эльфийский есть, чувашского нет :(.
Спасибо!
Не отчаивайтесь, над чувашским мы работаем :)
А в будущем мы хотим добавить и другие языки народов России.
А у вас это есть где-нибудь в опубликованное в более подробном виде. Ссылки на arXiv/ACL Anthology были бы хороши.
Яндекс-переводчик прекрасен!
https://translate.yandex.ru/?text=humongous&lang=en-ru

Не хватает переводчика с одного языка программирования на другой в любых комбинациях.

благо можно много нагенерировать примеров.
правда скорость и затраты памяти, но "работают роботы, а не человек".

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

Например. Пока, пока яндекс считает кофе мужским родом. Но надолго ли? В разговорной речи он уже официально записан средним родом. В интернете употребление в среднем роде весьма распространено. А ведь яндекс на этом учится. Не получится ли завтра так, что переведет что-нибудь типа «в будующем оплатите за проезд, вообщем извени, надо ложить экспрессо или какое кофе будите, да и надо иметь ввиду выйгрышь»?
Мне кажется, что вы привели так называемые минусы «статистического машинного перевода» (SMT). Прогресс не стоит на месте и машинный перевод не ограничивается одним только SMT.
Кофе уже давным давно допустимо в среднем роде. В том числе «официально» с 2009 года. Да и в целом — язык развивается, появляются новые слова, новые формы, возможно когда-нибудь, ваша фраза в кавычках станет допустимой нормой, как бы дико это сейчас ни звучало
Опять же, если встанет выбор между детализацией и свободном общении всего человечества, я всеми руками за последнее. В моем представлении это куда большая ценность, чем лингвистическое различение 40 видов снега, по преданию доступного экскимосам. Впрочем, крайне маловероятен жесткий выбор подобного рода — обычно находятся энтузиасты, исследующие и поддерживающие этнические особенности из разных побуждений
Кофе уже давным давно допустимо в среднем роде. В том числе «официально» с 2009 года
Разумеется, поэтому мы и привели это в пример.

Да и в целом — язык развивается, появляются новые слова, новые формы, возможно когда-нибудь, ваша фраза в кавычках станет допустимой нормой, как бы дико это сейчас ни звучало
Может и станет допустимой нормой, но суть в том — почему это произойдет.
Если это произойдет в ходе естественного общения (образованных) людей — ок, если же это произойдет в ходе ориентации безграмотных людей на автопереводчик который ориентируется на безграмотных людей (а не правила языка) — это не ок.
Идиократию смотрели? Как Вам будущее?

Опять же, если встанет выбор между детализацией и свободном общении всего человечества, я всеми руками за последнее.
А мы все же предпочтем жить в разнообразном мире, там где есть пальмы и клёны, а не только упрощенные деревья без детализации.
Где люди общаются с хорошим словарным запасом выражая нюансы, а не на уровне эллочки людоедки, пусть даже все эллочки могут свободно общаться друг с другом и их это не напрягает.
Интернет и так уже отнял у человечества возможность выражать эмоции, заменив их упрощенным суррогатом ¯\_(ツ)_/¯. Теперь автопереводчики лишат нас словарного запаса, корректности языка и его разнообразия?
Реально хотите жить в мире «идиократии»?
Идиократию не смотрел, занесу в список к просмотру.
Но я не очень понял вашу мысль.
Каким образом интернет отнял у человечества возможность выражать эмоции? К вам лично пришел интернет и отнял эту возможность? Кто вам мешает их выражать доступным для вас образом? Умеете восхитительно обращаться со словами — используйте навык. Не дано, нет времени, нет желания или неуместно — поставьте смайл. Каким образом, развивающиеся уже не первое десятилетие смайлы (что вы очень элегантно показали смайлом из условно «третьего поколения») могут запретить вам что-то делать? Лично я их рассматривал бы как расширение доступного инструментария общения, а не как какой-то запрет или деградацию. И кстати, оцените нюанс, смайлы «из коробки» доступны и относительно идентичны на всех языках.
Английский язык де-факто является общим языком мира и почему-то развивается год от года, а не вырождается в basic english.
Русский язык за время жизни интернета пополнился падонкафским языком, йожиным диалектом и многими другими, прошедшими мимо меня.
И я не могу понять, как вы приходите к мысли, что объединиться могут лишь эллочки-людоедки. Если у умных людей появиться потребность в детализации и нюансах — они найдут способ их выразить. Смайлами, мимикой, жестами, словообразованием, или любым другим доступным способом. Но я уже обозначил свою позицию — лучше пусть десять человек будут свободно общаться на языке, сколь угодно далеком от «корректного», чем это будут пять пар, где каждому человеку будет доступен лишь один собеседник. Это полезнее в любом плане — хоть в бытовом, хоть в общецивилизационном.

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

Ну что же, встречайте новый девиз Яндекса — «Переведется всё» )
Скажите, а имеющийся у вас инструментарий может помочь в правильном «запараллеливании» корпусов?

Задачка, которая у меня крутится в голове и к которой я пока не знаю, с какого конца подступиться, примерно такова:
Дано:
  1. Библия и большой слабо размеченный корпус богослужебных текстов на греческом языке.
  2. Библия и большой слабо размеченный корпус богослужебных текстов на церковнославянском языке.
  3. Известно, что зачастую перевод — это калька (тот же порядок слов и даже грамматические признаки)

Найти:
  1. церковнославянско-греческий словарь
  2. греческо-церковнославянский словарь
  3. различия между корпусами
Пример с Мордором похоже захардкожен, что становится заметно при замене Мордора на другие топонимы.
Похоже, у яндекс переводчика будут проблемы при переводе мемов с Боромиром.
Тема переводов очень интересна… хотя бы потому, что мне, как и многим другим, приходится активно работать с английскими изданиями, а чтобы засесть и «литературно перевести» для себя книгу, хочется для начала понять, стоит ли это делать, хороша ли книга настолько, чтобы потратить на неё уйму времени. Конечно, есть вариант — довести свой английский до такого уровня, когда уже не имеет значения, на каком языке ты читаешь, пишешь или говоришь… но это пока что только в мечтах (и никак не касается редких языков)…

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

По поводу книг и прочих документов, имеющихся в оригинале и в переводе, могу сказать по своему опыту, что они могут очень сильно не соответствовать друг другу. В лучшем случае — будет, как говорил Фазиль Искандер — из лошади сделают осла, а затем и осла превратят в крысу. В худшем случае… Когда-то, давным-давно, пришлось мне «сдавать тысячи» (кто учился в аспирантуре, поймёт — нужно было сделать перевод текстов общим объёмом примерно на 500-600 тысяч печатных знаков, это довольно-таки много, особенно если переводить качественно), и нашёл я в библиотеке книгу, изданную на немецком и на русском (один экземпляр на немецком, другой — на русском). В общем, схалявил… ну, то, что перевод был очень «вольным» и «примерно по тексту», стало понятно на первом же занятии… а где-то к третьему оказалось, что в русском «переводе» отсутствовали целые фрагменты текста оригинала и были весьма заметные куски «отсебятины»… так что всё равно пришлось садиться за перевод самому и многое переделывать… Ещё было у нас на одном занятии интересное обсуждение того, что не всё можно перевести с одного языка на другой дословно… например, в фразе «и вот на этом пятачке они встретились» слово «пятачок» не может быть переведено на немецкий иначе как «очень ограниченное пространство», что, согласитесь, уже не так элегантно, как в оригинале… В общем, если нужно перевести с одного языка на другой нечто образное, то компьютер с этим скорее всего не справится… нужен «толмач», который воспримет текст, выстроит в своём воображении корректный образ — и передаст его на другом языке…

Ещё в переводах есть одна проблема, на мой взгляд — технически достаточно сложно решаемая… Это проблема знания предметной области, к которой относится текст (сразу же вспоминается старый добрый «двойной удар по левой почке мыши...» из конца 90-х). Проще показать эту проблему на примере… Недавно я начал осваивать Kdenlive (неплохой такой видеоредактор под linux с весьма крутыми возможностями, но не об этом сейчас речь), и решил, что прежде чем заниматься практикой монтажа фильма, неплохо было бы разобраться с теорией режиссуры и операторского искусства. Нашел одну интересную книгу, первую часть которой (про конкретную программу) писал технарь (он использовал «компьютерные» термины — кальки с английского), а вторую часть — человек, работающий в киноиндустрии (опиравшийся на богатую кинематографическую традицию и терминологию). Оказалось, что для того, чтобы объединить теорию и практику, я должен сделать перевод с русского на русский! А всё потому, что многие переводы с английского (языка подавляющего большинства компьютерных программ) на русский делались второпях, «энтузиастами» и компьютерными технарями (ну ведь про компьютерную программу же, книга-то!), которые ничего не знали про терминологию съёмочного процесса и дальнейшей обработки материала… Поэтому мы видим в русскоязычных книгах «футажи», «клипы», «таймлайны» и прочее, прочее… В общем-то, программисты ведь тоже очень не любят, когда переводчик «не в теме» и предлагает своё «понимание» какой-то базовой технологии…

Так что без человеческого (жизненного, профессионального) опыта никак не обойтись в переводах с/на какой-то (человеческий) язык… Да, компьютерные технологии анализа текста и перевода становятся всё совершеннее, и могут всё больше помочь человеку, но всё равно сохранятся области, где программа останется бессильна малоэффективна…

P.S. Моя мама по работе вынуждена периодически вести переписку с иностранными компаниями… не зная английского, она поступает очень просто: пишет письмо на русском языке, вставляет его в окошко переводчика, кликает «перевести на английский»… Но ведь она не знает, хорошо ли перевёлся текст, верно? Этот перевод она снова вставляет в окошко переводчика и кликает «перевести на русский»… то, что по-русски звучит плохо, она переписывает — и опять переводит на английский и обратно… обычно за 2-3 итерации ей удаётся получить более-менее понятное и корректное письмо… Переводчика уволили, приглашают два-три раза в год, на переговоры…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий