fuzzywuzzy и «Невидимая брань» между людьми и роботами-переводчиками

    Начала добраго добрейший быти и конец, право непщуют предели вещей


    Наверное, во все века были переводчики-буквалисты и переводчики-«вольнодумцы». Последние чувствовали себя совершенно вправе изменять текст, перекопмоновывать его, выбрасывать одни куски и дописывать другие. А перед современными исследователями стоит типичный вопрос: «Что детально произошло во время трансформации оригинала? Что вычеркнуто, что сохранено, что переделано, что дописано?»


    Перед тем, как вчитываться в тексты со всей тщательностью, хотелось попробовать отдать их роботам на предварительную проработку. Надежд на роботов у нас было мало, однако помощь от них мы получили существенную. О том, как мы заставили Google Translate и Яндекс.Переводчик тягаться в работе над греческим текстом «Невидимой брани», читайте под катом.


    Рабочий материал


    «Невидимая брань» — аскетический трактат, изначально написанный на итальянском, потом переведённый на греческий в XVIII веке, отредактированный в соответствии с восточно-христианской аскетической практикой, и после этого переведённый на русский. Но тоже не буквально, а с существенными изменениями. Описывая принципы своей работы по переводу на русский, святитель Феофан Затворник писал:


    Я [эту книгу] не перевожу, но свободно перелагаю своею речью… прибавляя и убавляя и изменяя против подлинника.

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


    Метод сопоставления


    Для этого оба текста (новогреческий и русский) были разбиты на абзацы. Получилось примерно по 700 абзацев в каждом.


    Греческий текст мы перевели на русский дважды — один раз при помощи Яндекс.Переводчика, другой раз — при помощи Google Translate. Просто создали большие страницы с полным текстом и открыли их через соответствующие веб-морды. Читать переведённый текст было почти невозможно: видимо, слишком сложный оригинал, однако что-то можно было из этого ужаса извлечь. Ключевые слова где-то должны были совпасть, циферки тоже.


    Особого разнообразия инструментария для поиска нечётких дубликатов не нашлось, ухватились за fuzzywuzzy, который считает расстояние Левенштейна. Из четырёх функций: ratio, partial_ratio, token_sort_ratio, token_set_ratio — была выбрана последняя, не связанная ни с порядком слов, ни с их повторами. И, как оказалось впоследствии, выбор был правильным.


    Для всех пар абзацев (русский vs греческий) были вычислены степени сходства token_set_ratio феофановского перевода с яндексовским и с гугловским. Решили не опираться ни на один из них в отдельности, а на их сумму (à la бивалютная корзина — и это тоже оказалось правильным решением), и далее уже глазками и ручками смотрелись и перепроверялись кандидаты с большими значениями этой суммы, а также рассматривались соседние с проверенными пары.


    В итоге за несколько часов работы удалось сопоставить 2/3 абзацев, из остальных только единицы можно будет сопоставить вручную.


    Перепроверка методов


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


    Вычисление partial_ratio слишком времязатратное (было лениво 120 часов кряду гонять свою компутерку), но примерно за час были посчитаны остальные три функции: ratio, token_sort_ratio и token_set_ratio как для яндексовских, так и для гугловских переводов. Итого шесть функций близости текста и седьмая — наша «бивалютная корзина».


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


    функция вероятность нахождения с трёх попыток
    google_set_ratio + yandex_set_ratio 66.5%
    google_ratio 65.0%
    google_set_ratio 64.8%
    yandex_ratio 62.0%
    google_sort_ratio 61.8%
    yandex_set_ratio 56.2%
    yandex_sort_ratio 54.6%

    То есть примерно в 2/3 случаев мы почти сразу наткнёмся на нужный абзац. А в остальной трети случаев придётся изрядно помучиться. Вот гляньте на вторую табличку, которая отвечает на вопрос: «Сколько в среднем придётся просмотреть кандидатов, пока мы увидим нужный абзац?»


    функция среднее количество попыток
    google_set_ratio + yandex_set_ratio 36.7
    google_set_ratio 37.6
    yandex_set_ratio 47.0
    google_sort_ratio 65.9
    yandex_sort_ratio 69.7
    google_ratio 71.7
    yandex_ratio 75.3

    Просматривать 40 и более абзацев — это печальная печалька, и машина в таком случае вовсе не выглядит как разумный подсказчик. В итоге оптимальной стратегией при сопоставлении текстов будет «снять сливки», просматривая только наиболее вероятных кандидатов, а остальное сопоставление делать, исходя из структуры и каких-то иных факторов.


    Похвала собственной интуиции


    Удивительным для нас самих стало то, что взятая «с потолка» «бивалютная корзина» google_set_ratio + yandex_set_ratio сработала лучше всего, даже лучше, чем каждая из этих функций по отдельности. Кроме того, значения в обеих таблицах показывают, что по всем параметрам с этой задачей Google Translate справляется лучше, чем Яндекс.Переводчик. Так что отечественным роботам есть куда расти.


    P.S. В использованных скриптах особой премудрости нет, но если кому надо, можем выложить. Сам же итог сопоставления вот тут.


    P.P.S. Если кому интересно, то картинка в заголовке — это фрагмент страницы из «Букваря славено-греко-латинского» Фёдора Поликарпова-Орлова (1701 г.).


    P.P.P.S. Может быть, есть научный журнал, куда этот текст, соответствующим образом допиленный, стоит предложить для публикации?

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 5

      +1
      А в итоге то: «Что детально произошло во время трансформации оригинала? Что вычеркнуто, что сохранено, что переделано, что дописано?»

    Only users with full accounts can post comments. Log in, please.