LINUX.ORG.RU

Перевод фрагмента текста

 ,


0

2

Есть оригинальный текст на английском и перевод его на русский. Хочу написать скрипт на Python, в который можно было бы ввести фрагмент на русском из перевода и получить соответствующий фрагмент оригинала на английском. Что предложите?

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

Deleted

это вебсервис или локальная софтина?

если вебсервис, может, декомпильнуть словари Lingvo?

stevejobs ★★★★☆ ()

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

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

provaton ★★★★★ ()

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

bvn13 ★★★★★ ()
Ответ на: комментарий от stevejobs

Это должна быть локальная программа. Спасибо за напоминание про словари Lingvo, они уже минимум частично есть декомпилированные - для использования в Stardict.

Deleted ()
Ответ на: комментарий от provaton

Делать полуавтоматическую индексацию обеих фрагментов.

Каким образом?

В англ. языке слова очень многозначные, и конкретное значение зачастую определяется лишь из контекста.

Текст технический, поэтому словари, как правило, содержат нужное значение. Учитывая то, что перевод уже имеется, планирую просто суммировать число «попаданий» и таким образом вычислить нужный фрагмент.

Deleted ()
Ответ на: комментарий от mashina

Мне не нужно с наскока. Если получится, бОльшую часть моей офисной работы можно будет считать выполненной.

Deleted ()
Ответ на: комментарий от bvn13

Хороший вариант, но одно предложение может быть на пол-страницы, а фрагмент может потребоваться на несколько слов.

Deleted ()
Ответ на: комментарий от Deleted

а фрагмент может потребоваться на несколько слов

несколько слов могут не иметь прямого соответствия между собой.

+ порядок следования выражений может сильно меняться

mashina ★★★★★ ()
Последнее исправление: mashina (всего исправлений: 1)

задача не тривиальная, мягко говоря

namezys ★★★★ ()
Ответ на: комментарий от Deleted

Каким образом?

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

provaton ★★★★★ ()
Ответ на: комментарий от mashina

несколько слов могут не иметь прямого соответствия между собой.

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

порядок следования выражений может сильно меняться

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

Deleted ()
Ответ на: комментарий от provaton

Смысл в том, чтобы напрямую заменять текст в документе, а не выводить что-то на проверку. У меня уже есть таблицы в html с параллельным оригиналом и переводом, в которых вручную можно найти нужный фрагмент. Идея в том, чтобы автоматизировать задачу. Что касается пунктуации, самые четкие признаки - это точка. Запятых в английском гораздо меньше. Таким образом, деление получается максимум до предложения. Однако само предложение может быть на пол-страницы, т.е. выводить даже 2 предложения (оригинал+перевод) на подтверждение нерационально. Поэтому я и спросил, каким образом должен строиться индекс. Вручную - нерационально. И даже по предложениям тоже нерационально.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

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

Без словаря уже работает? Может вначале сделать анализ тех признаков, по которым можно без перевода опознать кто есть кто? Например, номера параграфов, любые числа и спецсимволы, непереводимые термины, капсовые аббревиатуры, количество слов в предложении, сумма всех букв в предложении. Скрипту вообще доступны будут оба текста на английском и русском для предварительного анализа? Ну, и наверное, имеет смысл анализировать для перевода только слова длиннее 7-8 символов.

justAmoment ★★★★★ ()
Ответ на: комментарий от Deleted

Поэтому я и спросил, каким образом должен строиться индекс. Вручную - нерационально.

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

provaton ★★★★★ ()
Ответ на: комментарий от Deleted

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

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

Программа просто...

слово «просто» с твоей задачей никак не совместимо, важно это понять.

mashina ★★★★★ ()
Ответ на: комментарий от justAmoment

Без словаря уже работает?

Скрипт еще не написан, пока продумываю реализацию. Есть пока только функция, которая сравнивает два текста на одном и том же языке и возвращает самую длинную подстроку. Без словаря скрипт будет работать на уровне предложений, т.е. эффект будет минимален.

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

Хороший вариант, но опять же - подойдет только на уровне предложений, а не отдельных фрагментов. А на уровне предложений уже есть много так называемых «выравнивателей» для параллельного сличения текста - Abbyy Aligner, например.

Скрипту вообще доступны будут оба текста на английском и русском для предварительного анализа?

Конечно, оригинал и перевод.

Ну, и наверное, имеет смысл анализировать для перевода только слова длиннее 7-8 символов.

Это понятно, спасибо.

Deleted ()
Ответ на: комментарий от mashina

слово «просто» с твоей задачей никак не совместимо, важно это понять.

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

Deleted ()

Автор, не тупи. просто используй Google API (https://developers.google.com/translate) и не пудри себе и людям мозги наивняком про автоматический анализ и перевод текста. Потратишь копейку - получишь какчественный перевод, да еще и с коррекцией ошибок, и отсутствие геморроя.

или промтовый api: http://www.promt.ru/corporate/solution/lease/features.php

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

d_Artagnan ★★ ()
Последнее исправление: d_Artagnan (всего исправлений: 1)
Ответ на: комментарий от bvn13

Одно предложение на английском не обязательно будет переведено одним на русском. Я сам переводчик.

anonymous ()

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

http://www.omegat.org/ru/omegat.html

psv1967 ★★★★★ ()
Ответ на: комментарий от d_Artagnan

Автор, не тупи. просто используй Google API

Есть оригинальный текст на английском и перевод его на русский.

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

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.