// ------------------------------------------------------------------ Кто хочет со мной связаться. // ------------------------------------------------------------------ Для потребителей моя программа называется "Правда". Такое название вызывает нужные ассоциации и проще запоминается. А для разработчиков эта же программа называется "Меркурий" - в честь подвига русских моряков, которые приняли бой с противником, превосходящим их в десятеро, и сумевшими в этом бою победить. Такие ассоциации для разработчиков являются более правильными. Распространение "Меркурия" происходит так же как распространение Линукса. (то есть согласно лицензии GNU) Официальной версией "Меркурия" является моя версия, но Вам не возбраняется создать свою. Вы можете взять мои исходники и пользоваться ими. Вы можете вносить в них свои изменения и распространять свои измененные версии. При этом все исходники мои и Ваши должны быть открыты. Обязательно так-же упоминания моего авторства, и не запрещается указывать Ваше. Присылайте мне свои усовершенствования, и если они мне понравятся я буду включать их в свою версию. Поскольку "Меркурий" бесплатен, единственная награда, которую я могу дать своим помощникам - упоминание их имени на скрижалях истории проекта и медаль "Большого Напильника". "Меркурий" - это несколько необычный проект. Основная тяжесть разработки здесь лежит не на программировании, а на лингвистических знаниях. 80% работы это составление словарей, 10% - составление грамматик и только 10% - собственно программирование. По этому, легкой жизни помощникам я не обещаю, а обещаю очень много нудной и монотонной работы по поиску грамматических ошибок. Прежде чем связаться со мной, хорошенько подумайте. Помимо научного подвига есть много других интересных вещей. Девушки там, экстремальные виды спорта, пиво наконец... // ------------------------------------------------------------------ Идеи и компромисы. // ------------------------------------------------------------------ Вообще-то сначала я хотел написать только движок - некоторое маленькое программное ядро, которое осуществляет синтаксический анализ, выполняет перевод слов ставит их в нужную форму и составляет из переведенных слов фразы. Все остальное - описание грамматики и словари должны были написать лингвисты. Наверное когда-нибудь так и будет - проблемма машинного перевода не будет связана с программированием. Но сейчас другие времена, мы еще в начале пути. Чтобы продемонстрировать перспективность (или неперспективность) моего подхода, нужно было написать небольшой пример грамматики и продемонстрировать что система перевода в принципе работает. Но чтобы это показать нужен хотя бы небольшой словарь. Так родился "Меркурий" - пограмма, которая демонстрирует весь процесс перевода, который можно поручить компьютеру, от начала и до конца. Слава богам, что я не остановился на первом варианте. В процессе работы выяснилась масса проблемм, которые не были видны при взгляде "издалека". Если бы я не попытался заниматься серьезной трансляцией, мое ядро переводчика так и осталось бы игрушкой. "Меркурий" имеет три слоя программирования. 1) ядро (я не включаю в это понятие интерфейс) 2) описание грамматики 3) словари Они различаются по степени важности и отлаженности. Это и понятно. Если ошибка в ядре, - программа генерирует segmentation fault и не работает в принципе, Если ошибка в грамматике - какая-то часть фраз не будет переводиться, или переведется неправильно. Если ошибка в словаре - неправильно переведется всего одно слово. Вообще говоря, перевод с одного естественного языка на другой - задача бесконечной сложности. Решить ее полностью невозможно. По этому при написании "Меркурия" пришлось пойти на многие компромисы. От многих вещей пришлось отказаться из-за экстремально ограниченных трудовых ресурсов. Компромис 1 Поскольку я не могу составить сколь-нибудь полный англо-русский словарь, словарь делается открытым. Чтобы пользователи сами могли его пополнять. Очень желательно, чтобы свои пополнения Вы присылали мне (или какому-то другому человеку, который бы их суммировал). Компромис 2 Поскольку я могу составить только грамматику англо-русского перевода, (иными языками не владею) только ее я и составляю. Я надеюсь, что найдется добрые люди, которые составят немецко-русскую, французско-русскую и т.п. японско-русскую грамматики. Тонкий юмор ситуации заключается в том, что труднее всего проходит первоначальный этап - когда составляются грамматические и смысловые словари. Это нужно иметь железную задницу. Когда словари существуют, задать алгоритм перевода с помощью языка описания грамматики достаточно легко. Любой студент справится с этим в рамках курсового (в крайнем случае дипломного) проекта. Компромис 3 Во многих языках происходит интересная жизнь внутри слов - используются приставки, суффиксы, окончания, слияния слов. От анализа этого всего мне пришлось отказаться. В рамках "Меркурия" слово - это атомарно неделимый элемент. "Меркурий" не смотрит, что там внутри. Компромис 4 Нет у меня сил написать хороший интерфейс. Я сосредоточился только на ядре. Какой-то интерфейс я предоставляю, но это только для того, чтобы продемонстрировать, что переводчик работает. По этому интерфейс такой убогий, терминальный и неэргономичный. Желающие могут написать свой интерфейс, и таким образом создать свой проект - типа как LaTex есть морда для TeX. И где-то есть графическая морда для них обоих. Компромис 5 Поскольку пока нет способа обьяснить программе контекстное значение слов, "Меркурий" дает все возможные переводы. Человек выбирает наиболее подходящий. Компромис 6 Поскольку вариантов очень много, для выбора вариантов есть специальная тулзовина (наиболее глючная часть программы "Меркурий").