ОПИСАНИЕ ПРОГРАММЫ SUBLINIO, v.1.20x (Версия описания: v.1.32) 1. НАЗНАЧЕНИЕ Программа Sublinio предназначена для создания "как-бы-подстрочника" к тексту на Эсперанто (и, быть может, на некоторых других языках). Она была написана мною для того, чтобы избавиться от утомительной необходимости поминутно листать словарь при переводе текстов. Алгоритм, используемый программой, не слишком сложен и не всегда работает правильно. Тем не менее, на мой взгляд, программа может быть полезна для начинающих изучать язык. Быть может, существуют и другие аналогичные программы, но в данном случае написать было легче, чем искать. Начиная с версии 1.10 существует также программа SublinioW с тем же переводяшим модулем, что и у Sublinio, но с графическим интерфейсом. Отдельного ее описания пока не существует, хотя ниже в этом файле упомянуты некоторые ее особенности. 2. ТРЕБОВАНИЯ К СИСТЕМЕ И ФАЙЛЫ, НУЖНЫЕ ДЛЯ РАБОТЫ. Программа должна работать под любой DOS (версии выше 2 :) или Windows. Для кодировки русских букв используется кодовая страница 866 ("кодировка DOS"). Необходимые файлы: sublinio.exe - сама программа cxefa.dic - основной словарь корней prefikso.dic - список префиксов sufikso.dic - список суффиксов Вышеприведенные названия словарей программа понимает по умолчанию. Возможно создание словарей с другими названиями - в этом случае они должны быть описаны в файле инициализации (см.ниже). Могут также понадобиться файлы: sublinio.txt - данный файл sublinio.ini - файл инициализации aldono.dic - дополнительный словарь 3. ЧТО ПРОГРАММА МОЖЕТ И ЧЕГО НЕ МОЖЕТ. Программа НЕ МОЖЕТ создавать ни литературных переводов, ни даже подстрочников в традиционном смысле слова. То, что она может, лучше объяснить на примере. Пусть в файле velo.txt содержится исходный текст: Blankadas velo unusola En la nebula mara blu' G^i kion lasis, kion volas En fremda lando serc^i plu? Запустив программу со следующими параметрами: sublinio.exe velo.txt velo2.txt мы получим файл velo2.txt: Blankadas velo unusola [белый]-ad-as [парус]-o [один~единственный]-a En la nebula mara blu' [в] [la] [туман]-a [море]-a [синий]-' Gxi kion lasis , kion volas [он] [что]-n [оставить]-is, [что]-n [хотеть]-as En fremda lando sercxi plu ? [в] [чужой]-a [страна]-o [поиск]-i [далее]? Как мы видим, каждой строке исходного файла соответствуют две строки выходного. В четных строках программа анализирует текст грамматически, выделяя известные ей аффиксы. Так, слову blankadas она сопоставила заключенное в квадратные скобки русское слово [белый] и два суффикса - ad (длительное действие) и as (глагол настоящего времени). Кроме того, она попыталась разбить составные слова на исходные корни (unusol = [один~единственный]). Таким образом, сделана первая, самая утомительная, фаза перевода, требующая интенсивного использования словаря. Используя знание значений словообразующих аффиксов, можно понять, что исходный текст означал примерно следующее: Белеет парус одинокий, В туманной морской синеве. Что он покинул, чего хочет В чужой стране еще найти? 4. ФОРМАТ КОМАНДНОЙ СТРОКИ И ФАЙЛА ИНИЦИАЛИЗАЦИИ Программа запускается из командной строки следующим образом: sublinio.exe <входной_файл> <выходной_файл> [ключ[и]] где ключ - это: /1 - означает, что в выходном файле не будет исходного текста (включается по умолчанию, если ввод идет не из файла), (см. также ключ /x). /a - отменяет выравнивание слов в исходной строке и строке подстрочника (*); /c - отключает разбор составных слов (*); /l - отключает разрезание длинных (>80 символов) строк (*); /i<имя_ini_файла> - задает имя файла инициализации; /u - включает вывод нераспознанных слов в файл nekonata.dic (*); /d - включает отладочный вывод в файл debug.log (*); /p - отключает вывод указателя прогресса; /m<c> - неизвестные слова в подстрочнике помечаются символом <c> (по умолчанию - *) (*); /s - отменяется "интеллектуальная замена подстрок" (*) /x - не добавляется дополнительная пустая строка после каждой строки перевода (это всегда так, если есть ключ /1); /h или /? - вывод краткого описания ключей; Ключи, помеченные знаком (*) работают также и в графической версии программы SublinioW. Отсутствие имени файла означает ввод(вывод) в стандартный канал. В частности, набрав команду "sublinio.exe /1", можно использовать программу в качестве простого словаря. Для изменения некоторых параметров программы можно использовать файл инициализации. Его имя по умолчанию - sublinio.ini. Он состоит из строк вида "<имя_параметра>=<значение>", где имена параметров перечислены ниже, а в квадратных скобках даны значения по умолчанию: Cxefa - имя основного словаря [cxefa.dic]. Prefiksoj - имя словаря приставок [prefikso.dic]. Sufiksoj - имя словаря суффиксов [sufikso.dic]. Aldono - имя дополнительного словаря [aldono.dic]. Separiloj - строка, состоящая из допустимых символов-разделителей сложных слов (aeo). Substutuoj - строка подстановок [^/x&u~/ux&w/ux]. Формат строки: <s1>/<r1>&<s2>/<r2>&...&<sn>/<rn>. Перед переводом слова подстроки <si> в нем заменяются на <ri>. Регистр строки <si> не важен, то есть u~/ux и U~/UX эквивалентны. Если Вы работаете с текстом в "h-нотации", эта строка может иметь вид "ch/cx&gh/gx&hh/hx&jh/jx&sh/sx&au/aux". Примечание 1: При замене подстрок по умолчанию производиться т.н. "интеллектуальная замена". Это означает, что подстрока <s> меняется на <r> только если в модифицируемом слове на этом месте уже не стоит <r>. Например, при подстановке au/aux, "au" заменяется на "aux", но "aux" не меняется на "auxx". На такое усложнение пришлось пойти, чтобы, не меняя установок, можно было бы переводить тексты и в x-нотации и без таковой. Если такой режим замены Вам мешает (хотя я и не очень представляю, как), то отключить его и менять все подряд можно ключом командной строки /s. Примечание 2: Неизвестные имена параметров игнорируются. 5. СЛОВАРИ Словари Эсперанто, поставляемые с данной версией программы, не претендуют на полноту. Основной словарь был создан на базе электронного эсперанто-английского словаря (ESPDIC33, автор Alven Loeckx), а затем исправлялся и дополнялся с помощью словаря Бокарева (Москва: "Русский язык", 1982). Для того, чтобы знать, как модифицировать словари и создавать собственные варианты, ниже описан их формат. Для работы программа использует не менее трех словарей. Основной словарь корней (cxefa.dic), расположенных в алфавитном(!) порядке. Возможно также создание дополнительного словаря (aldono.dic), который имеет тот же формат, что и основной, но упорядочивать слова в нем не обязательно. Каждая строка файла в этих словарях должна иметь один из двух видов (квадратные скобки обозначают опциональность): либо # [<возможный комментарий>] либо <слово1>[<тип>] <пробелы> <слово2> [ <пробелы?> # <возможный комментарий> ] <Слово1> - это корень или слово Эсперанто в "икс-нотации" ("це со шляпкой" = "cx" , и т.д.) и в нижнем регистре. <Тип> - это один из двух символов "." - означает, что слово может встречаться только самостоятельно (например: "kiom" - "сколько"); ":" - означает, что слово может и встречаться самостоятельно и быть корнем (например, "dek": "dek" - "десять", "deka" - "десятый"); Отсутствие типа означает, что слово может быть только корнем (например: "libr": "libro" - книга). <пробелы> - это один или более ASCII символов 09 (табуляция) или 32 (пробел), <пробелы?> - ноль или более таких символов. <Слово2> - это русское слово, имеющее соответствующую основу. Возможно использование скобок "(" и ")", и символа подчеркивания "_". В силу специфики словаря желательно, чтобы русское слово, описывающее семантику корня, было одно. В крайнем случае, несколько слов можно перечислить через запятую или точку с запятой, без пробела. Например: "solv растворять;решать". В конце строки возможен комментарий, отделенный знаком "#". Словари префиксов (prefikso.dic) и суффиксов (sufikso.dic) имеют одинаковый формат. Каждая их строка - это либо # [ <возможный комментарий> ] либо [<порядок аффикса>]<аффикс> [ <пробелы?> # <возможный комментарий> ] (в версиях <=1.1xx) или [<порядок аффикса>]<аффикс>[<тип>] [ <пробелы?> # <возможный комментарий> ] (в версиях >=1.2xx) Эти словари содержат списки распознаваемых программой аффиксов. Аффиксу может предшествовать цифра от 0 до 9, которая обозначает "порядок аффикса". Если программа отделила от слова аффикс порядка n, то порядок следующего отделяемого аффикса должен быть не меньше n. Сделано это для того, чтобы, например, слово "knabino" разбиралось как "knab-in-o", а не как "knab-i-n-o". Отсутствие цифры означает, что порядок аффикса равен нулю. Комментарий рассматривается GUI-версией SublinioW как "перевод" аффикса. В версиях пл 1.1xx включительно программа распознавала незаконченные конструкции типа "konstru-ist" как корректные слова Эсперанто. Чтобы избежать этого, с версии 1.2xx в словаре суффиксов может (а точнее, должен) присутствовать символ <тип>, принимающий те же значения, что и в основном словаре, и обозначающий может ли суффикс оканчивать слово ("." - да, <пусто> - нет, ":" - да или нет). 8. ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ. 1) В начале работы программа выводит номер своей версии и размеры используемых словарей в формате l1/l2/l3, где l1 - общее число слов в основном и дополнительном словарях, l2 - размер списка префиксов, l3 - размер списка суффиксов. 2) После работы программа выводит на экран информационную строку в формате n1 / n2 (n3) / n4, где n1 - количество распознанных слов, n2 - количество неизвестных слов, n3 - количество несовпадающих неизвестных слов, n4 - полное количество слов. 3) Если слово не распознано, то оно переносится в строку подстрочника в исходном виде (см. ключ /m). 4) В принципе допустимо использование программы для создания подстрочников и между другими языками. Для замены русского в качестве языка подстрочника с Эсперанто на любой другой требуется только заменить переводы слов в файле cxefa.dic. Создание словарей для других языков с достаточно логичной структурой (Interlingva, Loglan/Lojban) - дело более сложное, однако, вероятно, возможное. Удовлетворительным образом настроить данную программу на естественный язык, по-видимому, невозможно. Однако, в качестве курьеза, в состав данного пакета входит также 30-словный "английский словарь". Посмотреть, как с его помощью обрабатывается начало известного монолога, можно, набрав "sublinio hamlet.txt /ienglish.ini" . 9. ВОЗМОЖНЫЕ ПРОБЛЕМЫ. Помимо неизбежных программных ошибок, вы можете столкнуться со следующими проблемами: 1) Неправильный перевод или (особенно вероятно!) тип слова в словаре. 2) "Словотворчество". Если слово отсутствует в словаре, то программа попытается трактовать его как составное и может предложить свой, иногда довольно неожиданный, вариант перевода. Например: "Aleksandro" разбирается как "al-ek-[судак]-o" (al-ek-sandr-o). а "Abelardo" (Абеляр, имя средневекового теолога) - как "[пчела~жар]-o" (abel-ard-o). В подобных случаях можно порекомендовать внести в словарь (основной или дополнительный) либо корень, либо полную форму слова (с символом "." на конце). 3) Неправильный разбор слова. Даже если корни есть в словаре, программа может запутаться. Например, alkalkuli (al-kalkul-i, причислять) разбиралось как al-[известь]-ul-i (al-kalk-ul-i), а surmonta (sur-mont-a, нагорный) как [икра~гора]-а. Способ борьбы здесь тот же - добавить корень с аффиксами в словарь (данные слова уже добавлены, но неизбежны другие ошибки такого же рода). Примечание: Результат разбора может зависеть от порядка расположения аффиксов в списках. 4) Иногда разбор слова в принципе неоднозначен, и невозможно определить значение, не зная контекста ("проблема омонимов"). В эсперанто омонимов немного, но они есть. Примеры достаточно известны, например: koleg-o (коллега) kol-eg-o (загривок) send-at-a (посланный) sen-dat-a (не датированный) ripet-o (повторение) rip-et-o (ребрышко) В этом случае программа, не мудрствуя лукаво, дает первый найденный ею вариант (обычно самый простой по структуре). 5) У данной версии программы имеются следующие ограничения: количество слов в словаре <= 6000, количество аффиксов каждого типа <= 100, количество неизвестных слов <= 1000, длина иностранного слова и аффикса <= 16, длина слова-перевода <= 32. Превышение этих пределов может привести к непредсказуемым последствиям. 10. НЕКОТОРЫЕ ОСОБЕННОСТИ ПРОГРАММЫ SUBLINIOW Программа SublinioW отличается от консольной версии, помимо GUI-интерфейса, в основном урезанным набором ключей (см. выше). Она должна работать под любой из Windows 9x/2000/XP. Для ее работы, помимо перечисленных выше файлов, нужны: subliniow.exe - сама программы; subliniow.hlp - файл хэлпа (впрочем, программа работает и без него); Для установки программы достаточно скопировать эти файлы в каталог, в котором находятся словари Sublinio. Формат запуска программы: subliniow.exe [<входной файл>] Программа *ничего* не пишет в реестр. Файл инициализации у Sublinio и SublinioW общий - sublinio.ini, хотя при запуске SublinioW создает дополнительный файл subliniow.ini, в котором запоминает некоторые свои установки. Все остальное вполне типично для Windows-программ и Вы, без сомнения, разберетесь в этом сами. 11. ИСТОРИЯ СОЗДАНИЯ И ИЗМЕНЕНИЯ ПРОГРАММ Программа Sublinio написана на Borland Pascal 7.0, GUI-модуль SublinioW - на Borland Delphi 5.0. История изменения программ: v.0.92 - предварительная работоспособная версия Sublinio; v.0.93 - исправлены мелкие ошибки; v.0.94 - добавлен ключ /m; v.1.00 - добавлена единичка в номер версии :) расширены возможности комментирования в словарях; v.1.01 - добавлены ключи /h и /?; v.1.02 - добавлен ключ /x; v.1.03 - исправлена ошибка в параметре "Substutuoj". v.1.10 - написана предварительная версия SublinioW. С этого момента первые три цифры версии обеих программ определяют версию переводящего модуля, четвертая - GUI-интерфейса; v.1.11 - исправлены мелкие огрехи при сообщениях об ошибках; v.1.12 - в переводящий модуль добавлена функция перевода слова; v.1.13 - мелкие изменения; v.1.20 - ликвидирована возможность распознавания незаконченных слов, в связи с этим изменен формат словаря суффиксов; добавлена "интеллектуальная замена подстрок"; 12. СВЯЗЬ С АВТОРОМ Отзывы, предложения и пожелания Вы можете посылать автору по следующим адресам: 1) ivanovv(AT)gao.spb.ru 2) vgivanov(AT)mail.ru Домашняя страница программ, на которой можно найти последнии их версии: http://vgiv.narod.ru/sublinio.html. 13. УСЛОВИЯ РАСПРОСТРАНЕНИЯ ПРОГРАММ. Некоммерческое распространение программ Siblinio и SublinioW в пределах нашей Метагалактики безоговорочно приветствуется. При этом желательно, чтобы: 1) Данный файл (sublinio.txt) распространялся вместе с программой; 2) Дополнения/исправления/изменения словарей *.dic, было отражено в первых строках соответствующих файлов. Например, если Вы добавили слова в словарь cxefa.dic, допишите в его начало строку: "# Изменен И.М.Яреком, 2002". Владимир Иванов, 2003 г.