понедельник, 23 апреля 2007 г.

Основы

Продолжаю свой рассказ :) Услышав, что я пишу переводчик у многих сразу же возникает вопрос - зачем? Ведь есть ПРОМТ и подобные программы? Ответ будет м... неприятным.... Да, пожалуй так точнее всего. Я более менее активно пользуюсь ПРОМТом уже лет 7 (года на два больше чем я пишу переводчик). С того времени перевод ПРОМТом тестового кусочка текста не изменился. (Нет, конечно, я немного привираю - перевод отдельных предложений чуть-чуть улучшился/ухудшился, однако каких либо радикалных изменений не было и нет даже в текущей - только-что вышедшей - 8-ой версии) Что собственно и не удивительно, т.к. я встречал интервью с разработчиками (2002-ого года, кажется), где они прямо сказали, что алгоритм перевода существенно не менялся с 1992 года!!! А за это время столько всего изменилось.... Вы спросите - "а что же другие программы?". Ну... Знаете, мне сложно оценивать переводчик, неспособный корректно склонять простые русские слова (я уж не упоминаю о самом переводе - перлы Stylus и ПРОМТа, ставшие уже классикой - это корректно, абсолютно точно переведенный текст :) ) На данный момент я не вижу ни одной программы, реально могущей конкурировать с тем же ПРОМТом. Чем лучше мой вариант перевода? Я предоставляю базовый "движок" перевода, легко модифицируемый сторонними разработчиками. Это позволяет легко, с минимальными затратами, создавать и - самое главное - тестировать новые алгоритмы. Пожалуй, пример не помешает... Допустим вы занимаетесь исследованием ну... например... семантических алгоритмов. Тема эта актуальна уже лет 30 и интерес к ней с каждым днем все возрастает. Итак, для проверки своего алгоритма вам придется:
  • реализовать GUI - т.е. чтобы можно было вводить информацию в программу (ну можно и без интерфейса какое-то время прожить... Но сопутствующие трудности...)
  • реализовать лексический анализатор (а вы что думали - кто же еще вам будет текст на слова разбивать? Все сами...)
  • реализовать морфологический анализатор (нет, конечно, можно обойтись и без него, но это переложит работу этого алгориитма на плечи человеку, которому придется особым образом формировать входные данные, что намного сложнее простого текста на естественном языке)
  • реализовать синтаксический анализатор (да-да! Куда же без него-то...)
  • и вот только после этого вы сможете начать работу над своейпрямой задачей

А теперь вспомним еще и про сопутствующие трудности, как-то:

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

Весело? А казалось бы все так просто: придумал алгоритм - реализовал и получил Нобелевку :)

Именно поэтому мой переводчик - вам просто-таки жизненно необходим! :)

Итак, достоинства моего подхода:

  • модульная структура. Алгоритм перевода разбит на отдельные, программнно независимые друг от друга элементы (модули), каждый из которых может быть легко заменен на аналог от другого разработчика.
  • Единая система описания текста. Существует набор базовых классов, детально описывающих текст и связи в нем (ну и перевод, конечно). Таким образом, разработчики, которые реализуют, например, интерфейс взаимодействия с пользователем никак не зависят от того, что реализуют переводчики.

Ну если забыть про независимых разработчиков, то можно добавить еще и:

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

За сим, пожалуй, пока все.

Комментариев нет:

Отправить комментарий