Создание собственных словарных баз для K-9
Для создания баз используется утилита MakeDict.
Утилита имеет едиственный параметр командной строки - файл описание проекта словаря (.dct файл).
Файл проекта
Файл состоит из строк вида
параметр значение
Имя параметра не зависит от регистра.
Строки, начинающиеся с символа # или ; являются комментариями
Параметры файла проекта
Имя параметра |
Обязательный |
Описание |
Title |
нет |
Название словаря |
Copyright |
нет |
Информация о лицензии |
Version |
нет |
Версия редакции базы.
Задается в виде число.число |
Collation |
нет |
Файл таблицы сортировки. Смотри "Таблица сортировки". По умолчанию – Cyrillic |
Target |
да |
Имя результирующего файла |
Index |
да |
Файл индекса. Смотри "Файл индекса". |
Articles |
да |
Файл статей. Смотри "Файл статей". |
Abbreviations |
нет |
Файл сокращений. Смотри "Файл сокращений/частей речи". |
Parts |
нет |
Файл частей речи. Смотри "Файл сокращений/частей речи". |
Transcription |
нет |
Задает формат транскрипции. На данный момент поддерживается только IPA. При отсутствии этого параметра словарь создается без транскрипции. |
Compressor |
нет |
Задает тип компрессора (*). По умолчанию - zip |
* На текущий момент поддерживаются компрессоры zip и bzip2. Компрессор zip встроен в программу и потому всегда присутствует. Поддержка остальных типов компрессии, включая bzip2, зависит от наличия соответствующей DLL. bzip2.dll входит в комплект поставки. Желающие реализовать другие алгоритмы компрессии могут обратиться к автору (robin_hood@hotmail.ru) за необходимой технической информацией.
Ниже приведен файл проекта словаря Мюллера:
Title English-Russian Dictionary by Professor V.K.Mueller, 7 Edition
Copyright Electronic Version by E.S.Cymbalyuk 1999 under GPL
Version 1.0
Target \Epoc32\Wins\C\Мюллер
Abbreviations Muller.abb
Index Muller.idx
Articles Muller.dat
Parts Muller.pos
# Указывает на наличие в словаре транскрипции
# При отсутствии этой строки транскрипция не будет обработана
Transcription IPA
# В данном случае не имеет смысла, т.к. zip используется по умолчанию
# Для получения “компактного” Мюллера используется
#Compressor bzip2
Compressor zip
Файл сокращений/частей речи
Состоит из строк вида:
символ подчеркивания (_) сокращенное значение точка или двоеточие пробел/табуляция полное значение.
Строки, начинающиеся с символа # или ; являются комментариями.
Файл может содержать до 256 значащих строк.
Пример:
_жарг. сленг; жаргон
_др-греч. древнегреческий
_v. глагол
Файл индекса
Данный файл является бинарным. Он состоит из последовательностей
заголовок
ключевое слово
Формат заголовка
размер (байт) |
значение |
4 |
Смещение словарной статьи в файле статей. |
2 |
Размер статьи в байтах |
1 |
Длина ключевого слова в байтах |
Однако вам не стоит пугаться, создавать этот файл вручную нет необходимости. В комплект поставки входит perl-script split.pl, который принимает на вход текстовый файл, состоящий из строк вида
ключевое слово два пробела словарная статья
и генерирует файл индекса и файл статей.
Ограничения: максимальная длина ключевого слова - 255 байт, максимальный размер статьи – 65535 байт.
Таблица сортировки
Таблица сортировки задается текстовым файлом, содержащим две строки. Первая строка – алфавит в верхнем регистре, вторая – алфавит в нижнем регистре. Очевидно, что количество символов в обеих строка должно быть одинаковым.
Ниже приведена универсальная кирилическая (русский, украинский, белорусский алфавиты) таблица сортировки:
АБВГҐДЕЁЄЖЗИІЇЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯ
абвгґдеёєжзиіїйклмнопрстуўфхцчшщъыьэюя
Для поддержки только русского алфавита достаточно такой таблицы:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдеёжзийклмнопрстуфхцчшщъыьэюя
Универсальная кириллическая таблица встроена в MakeDict.
Файл статей
Файл представляет собой последовательность словарных статей. Статьи не отделяются друг от друга, т.к. информация о начале каждой статьи и ее размере находится в файле индекса.
Формат словарной статьи
Статья состоит из параграфов (абзацев). Имеется четыре уровня абзацев.
Параграфы первого уровня
Верхний уровень нумеруется римскими цифрами в угловых скобках.
Пример:
<I> это первый абзац первого уровня <II> а это второй абзац первого уровня
Вот как это выглядит на экране:

Этот тип абзацев предназначен для описания различных по смыслу значений слова. Одним из применений может быть расшифровка аббревиатур, для чего используется следующий синтаксис:
<I первый вариант расшифровки> тело абзаца <II второй вариант расшифровки> тело абзаца
Пример:
<I American Bar Association> _n. американская ассоциация юристов <II American Basketball Association> _n. американская баскетбольная ассоциация <III American Booksellers' Association> _n. американская ассоциация букинистов

Еще один вариант – различные произношения слова. Для этого используется следующая форма тега:
<I [транскрипция1]> тело абзаца <II [транскрипция2]> тело абзаца
Вот как это выглядит на практике:
annex <I [ИQneks]> _n. 1> прибавление, приложение, дополнение 2> пристройка, крыло, флигель <II [“Иneks]> _v. 1> присоединять; аннексировать 2> прилагать; делать приложение (к книге и т.п.) #Syn: add

Параграфы второго уровня
Параграфы второго уровня нумеруются арабскими цифрами с точкой. Основное их назначение – описания различных частей речи. В статье начало таких абзацев указывается при помощи тега арабская цифра.(точка) Как правило, после этого тега следует указание части речи.
Примеры:
[ИeIpЌsЗterIИЌщraI]_лат. 1. апостериорный, основанный на опыте 2. апостериори, из опыта, по опыту

[ЗeIbiщsiщИdE“rI“n] 1. _a. 1> расположенный в алфавитном порядке 2> относящийся к алфавит 3> азбучный, элементарный 2. _n. 1> обучающий/обучающийся грамоте 2> новичок, начинающий

Параграфы третьего уровня
Параграфы третьего уровня нумеруются арабскими цифрами с круглой скобкой. Основное их назначение – описания различных частей речи. В статье начало таких абзацев указывается при помощи тега арабская цифра> (угловая скобка).
Пример:
[ИQdv“k“sI] _n. 1> защита 2> адвокатура, деятельность адвоката 3> пропаганда (взглядов и т.п.)

Параграфы четвертого уровня
Параграфы четвертого уровня нумеруются маленькими русскими или английскими (зависит от языка интерфейса) буквами с круглой скобкой. Эти параграфы предназначены для описания нюансов определенного значения слова.
Пример:
[ИbQkЗwЌщt“] 1. _n. 1> а> заводь; запруженная вода #Ex: The back-waters of the Amazon are of enormous extent. - На Амазонке заводи обладают колоссальной протяженностью. б> _перен. тихая заводь; болото, застой, рутина #Ex: He had lived in a backwater all his life, and his ideas were often out of touch with reality. (F. Swinnerton) - Он прожил всю жизнь, как в тихой заводи, а его мысли часто не имели никакого отношения к (окржающей) реальности. 2> а> прилив б> обратное течение воды; струя противотечения 3> = backwash 1) (_особ. о морских волнах, наталкивающихся на высокие скалы) 4> узкий морской залив (отделен от основного морского пространства узкой полоской суши) #Syn: creek 2. _a. 1> обратный (о движении), текущий в обратном направлении 2> глухой, заброшенный, захолустный #Ex: backwater district - медвежий угол #Syn: abandoned

Расшифровка аббревиатур
Для расшифровки аббревиатур применяется тэг <& значение>
Пример:
<& 2-Dimensional> _a. в двух измерениях

Использование сокращений/частей речи
Сокращения/части речи идут в виде отдельного файла, формат которого описан в главе "Файл сокращений/частей речи". Сокращения и части речи можно использовать только в примерах и в телах абзацев.
Транскрипция
Транскрипция обрабатывается только при наличии в файле проекта строки
Transcription IPA. Транскрипция должна быть в формате IPA и выделяется квадратными скобками ([]). В примерах транскрипция не поддерживается.
Примеры
Примеры употреблений слов выделяются тэгом #Ex: Этот тэг обозначает начало примера. Пример заканчивается там, где начинается следующий пример либо следующий абзац либо список (см. ниже). В примерах допускается использование сокращений/частей речи и ссылок на исходное слово (тэг ~).
Списки
Под списками подразумеваются списки синонимов антонимов и “Смотри также”.
Начало списка выделяется тегом #Syn: для списка синонимов, #Ant: для списка антонимов и #Also: для списка “Смотри также”. Слова в списке разделяются запятыми (,) список заканчивается там, где начинается следующий абзац или следующий список.
Примеры:
acumen [“Иkjuщmen] _n. проницательность, сообразительность #Syn: acuity, insight, perception #Ant: bluntness, dullness, obtuseness, stupidity

break [breIk] <I> 1. _n. 1> отверстие; трещина; пролом 2> прорыв 3> перерыв, пауза; перемена (в школе) #Ex: coffee 'break - перерыв на чашку кофе 4> #Also: break of day, by the break of day 5> _тел. тире-многоточие

Экранирование
Для экранирования управляющих символов применяется традиционный метод – символ 'обратная косая’ (\). Экранирование применимо в любой части статьи, включая транскрипцию.
Пример:
accurate [ИQkjurIt] _a. 1> точный, правильный; accurate within 0\.001 mm - с точностью до 0\.001 мм

Если в данной статье убрать экранирование с символа точка, то компилятор воспримет последовательность 0. как начало абзаца второго уровня (см. "Принудительное начало абзаца") и выдаст ошибку. Использование экранирования заставляет компилятор интерпретировать символ точка именно как символ а не как часть управляющей последовательности.
Подстановка
Тэг ~ (тильда) применяется для подстановки слова, которому соответствует данная статья. Использование этого тэга позволяет существенно сократить объем результирующей базы. Подстановка производится в телах абзацев и примерах, в расшифровках аббревиатур и списках данный тэг не работает. Также можно использовать ссылку на часть слова. Для этого используется конструкция ~длина. Будьте осторожны: последующие ~ будут интерпретироваться как ~длина. MakeDict автоматически производит поиск слова в статье и его замену на ~ на последней стадии компиляции так что имеет смысл использовать только ~длина.
Пример:
абсолютный absolute; ~ покой complete rest; ~8.ое невежество complete/utter/abysmal ignorance: ~ое большинство absolute/overwhelming majority; ~10. слух perfect ear, absolute pitch; ~ чемпион absolute/overall champion.

Ссылки
Ссылки дают возможность использовать одну статью для нескольких слов. Такая необходимость возникает, когда одно слово имеет несколько вариантов написания, например бегемот/гиппопотам, wagon/waggon. При использовании ссылки допускается указание разных транскрипций для разных написаний слова. Ссылка задается тэгом #Ref: ключевое слово. Ключевому слову должна соответствовать словарная статья (не ссылка!). Если необходимо указать другой вариант транскрипции, то она указывается перед тэгом #Ref:
Пример:
acclimate [“ИklaImeIt] #Ref: acclimatize
acclimatize [“ИklaIm“taIz] _v. 1> акклиматизировать #Ex: to ~ oneself to the surroundings - привыкнуть к окружающей обстановке 2> _refl. акклиматизироваться _тж. _перен. #Ex: these roses do not easily ~ - эти розы плохо приживаются в новых условиях #Also: acclimatize to
Принудительное форматирование
Поддержка принудительного форматирования доступна в версиях К-9 не ниже 1.32 и версии MakeDict не ниже 1.21. Принудительное форматирование введено для лучшей поддержки энциклопедий и толковых словарей.
Принудительный перевод строки
Принудительный перевод строки осуществляется при помощи тэга #Lbr:
Пример:
перевод строки тэг \#Lbr: вызывает принудительный #Lbr: перевод строки

Принудительное начало абзаца
Принудительное начало абзаца осуществляется при помощи тэга #Pbr:
Пример:
Abandonment option Опцион отказа #Pbr: Опцион, предполагающий прекращение инвестиций ранее изначально запланированного срока.
Скачать утилиты
Вы можете скачать описанные утилиты здесь:
- MakeDict 1.2 версия для Windows;
- MakeDict 1.2 версия для Linux, требует libc6.1.