Ivan Panin

Перенос старославянского стиля на современный язык

Описание проекта

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

Особенности решения:

1) Корпус параллельных русских и древнерусских текстов предобработан так, чтобы обеспечить их максимальное выравнивание.

2) Размер базы составил 15000 парных фраз. Максимальная длина 205 символов.

3) Использована слегка модифицированная нейросетевая архитектура ByteNet.

 

Состав команды:

  • Ivan Panin, Data scientist

Комментарии

Иван Бондаренко

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

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

Прошу простить за, возможно, излишне обширную критику, но всё же дополню ещё. Система игнорирует грамматическую структуру оригинала, не пытается делать грамматически корректные предложения, непонятно откуда берёт слова, придумывает и т. п.
Вот здесь есть пример:
https://github.com/Ivanx32/NeuralTranslation/blob/master/example.png
В оригинале написано «твоему горю пособить постараюся», а в переводе «твоему господу пособить да постарается»; оригинал — «и пошли дары драгоценные», перевод «и пошли дарования дождался», оригинал — «когда сизый орёл зовёт голосом», перевод — «и эти судом отрочьего очень говорили» (обратный перевод везде мой).

Ivan Panin

Спасибо, что указали на возможную проблему со старославянскими вставками в базе!

Запросил помощь лингвистов. Пока могу сказать только, что не нашел явных указаний на наличие таковых.  Кроме того, про некоторые жития в базе явно сказано, что это древнерусский перевод, например http://lib.pushkinskijdom.ru/Default.aspx?tabid=2175

Ivan Panin

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

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

Иван Федоров

А если матюги загрузить, что выдаст? :)

Ivan Panin

Просто для примера и только переведенные без исходных слов:

отхоряти, хренъ, охуп?вше, пидария

Думаю, можно исходные можно угадать.

Pavel Mochalov

Можно брать на вооружение)

Иван Федоров

Огонь:)

Pavel Mochalov

Круто! Особенно благоверный алгоритм мне понравился))

Pavel Mochalov

А современные слова если переводить на старославянский , то что получится?  В примере тоже достаточно устаревшие слова.

Ivan Panin

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

1) Сетка находит слово, близкое по звучанию.

2) Сетка генерирует произвольное слово

Ivan Panin

Несколько примеров:

"Здравствуй, как жизнь?" - "възрадова же вьсяко бысть"

"первый общий рабочий алгоритм"  - "первый обычай есть благов?рный"

"был опубликован в книге советских учёных" - "бяше учитель сынъ во книгоша обр?теся сотворихъ"

"и уходом от эстетики" - "и отходят усты стоятъ"

Эмиль Закиров

Местный движок не смог переварить старославянскую ь
В любом случае интересно. Кусок текста взят из статьи на вики о старославянском

Ivan Panin

пример есть на: https://github.com/Ivanx32/NeuralTranslation/blob/master/example.png

Эмиль Закиров

А качество в итоге нормальное получилось?
Можно попробовать перевести вот эту фразу:
Ащє ли въпросиши слов?ньскыя боукаря, глаголя: „Къто вы письмена сътворилъ есть, или кънигы пр?ложилъ?“ — То вьси в?дятъ и отъв?щавъше рекутъ: „Святыи Костанътинъ Философъ, нарицаемыи К?риллъ, тъ намъ письмєна сътвори и кънигы пр?ложи, и Мє?одие, братъ єго. Суть бо єщє живи ижє суть вид?ли ихъ“. И ащє вопросиши: „в коє время?“ то ведят и рекут: „яко въ вр?мена Михаила, ц?саря грьчьска, и Бориса, къняза блъгарьска, и Растица къняза моравьска, и Коцеля къняза блатьньска въ л?то же отъ съзъданья вьсего мира ?

Ivan Panin

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

Соответственно, модель транслирует пока только с русского на древнерусский, так что ей еще учиться и учиться, чтобы такое перевести :)