|
Ариадна 2.На этой странице описана работа по приложения Абриаля к построению комбинированного русского гиперсловаря . Последние новости - разработана улучшенная версия программы Ариадна - Ариадна 2. Её можно скачать отсюда - из раздела Файлы. Основные дополнения второй версии:
Ниже находятся материалы по первой версии. За основу взят Грамматический словарь русского языка А.А. Зализняка. В нём проведена морфологическая сегментация слов, так что получилось некое подобие Словаря морфем русского языка (А.И. Кузнецовой и Т.Ф. Ефремовой). В результате получена база данных в формате Абриаля. Весь этот комплекс работ назван именем Ариадна. Возможно и результирующий словарь будет называться тем же именем. Ниже приведено Содержание файла README.TXT из установочного пакета программы с необходимым набором инструкций. История развития проекта описана в тексте рассылок по проекту Абриаль за конец 2001-го года. Далее находится техническое описание программы RUS, реализующей разбор словаря. Программу RUS для самостоятельной работы со словарём, можно скачать отсюда. Зип-архив нужно распаковать в отдельную директорию (на диске должно быть свободно около 200М) и запустить там процедуру RUN.BAT. Для работы программы RUS могут понадобиться библиотеки от Борланда Дельфи/Билдер 5. Их можно скачать отсюда . Подробнее см ниже. Содержание файла
О проектеГиперсловарь "Ариадна" - проект РосНИИ Искусственного Интеллекта http://www.artint.ru . Основная работа проделана осенью 2001 года Пацкиным А.И. http://packin.narod.ru . По форме гиперсловарь является базой данных в среде системы Абриаль. По содержанию словарь состоит из грамматической части, т.е. словаря А.А. Зализняка с возможностью получения склонений и спряжений слов, и морфологической части, где те же слова разбиты на морфологические сегменты. По существу словарь представляет собой сеть, по которой средствами системы Абриаль пользователь может осуществлять навигацию, аналогичную просмотру страниц в Интернете. Проект описан на странице http://www.artint.ru/packin/abrial/ariadna.htm Цели работы1. Испытать пригодность системы Абриаль для работы с базами данных достаточно большого размера. 2. Создать удобную универсальную среду для создания систем автоматической обработки русского текста, а также удобную среду для работы лингвистов и просто для изучения языка.
Системные требования
Порядок установки гиперсловаря.0. Скачать и установить в отдельную папку (например, c:\Ariadna)
установочный пакет файлов "ariadna" со страницы http://www.artint.ru/packin/abrial/download.htm
. 1. Скачать и установить библиотеки Дельфи/Билдера со страницы: http://www.artint.ru/packin/abrial/download.htm (или прямо с ftp: ftp://www.artint.ru/packin/ftp/cb5libx.exe ) 2. Скачать и установить последнюю версию программы Абриаль со страницы http://www.artint.ru/packin/abrial/download.htm 3. Зарегистрировать программу Абриаль. Без регистрации не будет работать сохранение базы данных в виде быстро загружаемого образа памяти. Порядок регистрации: из главного меню вызвать окно "Регистрация", там ввести свое имя (предпочтительно латынью), затем нажать кнопку "Копировать", в результате чего комбинация Номер:Имя окажется в буфере, откуда его нужно вставить в письмо мне (aleksandr@tochka.ru). Вставка обычно работает от Shift-Insert. В ответ на это письмо Вам будет прислан код регистрации, который нужно вставить в окне "Регистрация" и нажать "Применить". 4. Выполнить командный файл dllcopy.bat (он копирует в системной директории cc3250mt.dll в cc3250.dll). 5. Выполнить командный файл run.bat. Он состоит из трех вызовов основной программы RUS:
Внимание! Все три шага должны пройти полностью именно в таком порядке. Если что-то собьется, счет можно прервать нажатием Ctrl-C. и затем повторить с самого начала. Если программа проскакивает мгновенно, или ничего не "печатает", то, скорее всего не (полностью) выполнены пункты 0,1, или 4. 6. На этом этапе получены не только исходные файлы БД Абриаля, но и множество текстовых файлов с протоколами работы программы RUS. Например:
7. Далее следует запустить программу Абриаль и загрузить файлы баз данных в следующем порядке:
8. Как только база данных загрузится полностью, не спешите ее просматривать, первым делом её надо сохранить в форме образа памяти (файл формата *.am), например, под именем fullbase.am. Далее можно перевести дух - этот файл грузится в память несколько секунд. 9. К этому моменту пакет Ариадна своё дело выполнил, и далее можно пользоваться только результирующей базой данных в виде образа памяти. Эту БД можно загружать, просматривать и корректировать через программу Абриаль. Структура базы данных.Базисная структураСлова в гиперсловаре хранятся не в виде сплошного массива, (с которым из-за его размера было бы неудобно работать), а в виде узлов древовидной структуры, основанной на морфологической сегментации. Поскольку максимальное число сегментов в нашем случае равно семи, то дерево состоит из семи уровней узлов. Этим уровням узлов соответствуют классы объектов: n1, n2, n3, n4, n5, n6, n7. Однако самым верхним уровнем, через который можно "войти" в словарь, является не n1, а добавочный уровень (класс) "l", соответствующий начальной букве слова. Таким образом, основой гиперсловаря является множество деревьев по числу начальных букв слов. Объекты-словаУзлы могут соответствовать частям слов или полным словам. Если узлу соответствует слово, или несколько слов-омонимов, то на таком узле "висит" один или несколько объектов (классов w1,w2,...w7), соответствующих этим словам. Классу n1 соответствует w1, n2 - w2, и т.д. Объекты-слова под одним узлом различаются по номерам, начиная с нуля. В большинстве случаев обозначение слова отличается от обозначения соответствующего узла, добавлением в конце "\0" и иным обозначением класса после двоеточия. Например, слову "кошка" соответствует узел К\кош\к\а:n3, но т.к. в словаре есть две по разному склоняемых кошки (живая и инструмент), то на этом узле висят два объекта: К\кош\к\а\0:w3 и К\кош\к\а\1:w3. Морфологическая часть словаря.Класс "a" соответствует префиксным сегментам, r - корневым сегментам, s - суффиксным сегментам. Эти три класса содержат большое число объектов, поэтому они для удобства просмотра разбиты по первой букве и помещены "под" класс l. Класс "e" соответствует сегментам окончаний. Окончаний не так много, и они собраны вместе в обычном классе, доступном с "главного входа" в словарь. Все эти четыре класса (a,r,s,e) связаны бинарным отношением "c" с классами слов w1-w7. Отношение "c" имеет смысл: "сегмент входит в состав слова". Грамматическая часть словаря.Класс t содержит грамматические типы слов (часть речи, одушевленность, род):
Отношение t связывает слова (w1...w7) с их грамматическими типами t. Класс "c" содержит типы словоизменения, "квази-падежи", далее просто "падежи". Класс "f" содержит профили, т.е. группы одинаково изменяющихся слов (см. ниже). Профили именуются по первому слову, входящему в группу. Класс "x" содержит хвосты, т.е. профильные окончания. Его не следует путать с классом "истинных" окончаний "e", т.е. c сегментами. Хвосты содержат всю изменяемую часть слова (или даже всё слово - для таких слов, как "ребёнок"). Трехместное отношение prod задаёт хвосты профилей в разных падежах. Трехместное отношение p связывает слова с их профилями с указанием основы. Ассоциации (виртуальные отношения) _cn _nod _word _gen динамически вычисляют слитное написание слов, и рассчитывают все производные грамматические формы для слов (задаваемых обычно своей исходной формой). По существу ассоциация _gen склоняет существительные и прилагательные и спрягает глаголы. Подробнее о профиляхЧто такое профиль слова? Берем какое-нибудь слово, например существительное "кошка" (животное), образуем из него двенадцать производных форм, т.е. по 6 падежей для единственного и множественного числа. Это делается по сложным правилам русской грамматики, описанным в словаре Зализняка на 170 страницах. Далее - во всех 12-ти формах определяем общую начальную часть - (будем называть её "основой"). В данном случае это - "кош". Отбрасываем основу от всех 12-ти форм, а то, что осталось, т.е. упорядоченный набор из 12-ти "хвостов": (ка, ки, ке, ку, кой, ке, ки, ек, кам, ек, ками, ках) мы и будем называть "профилем" слова. Кстати, отметим, что у кошки - животного и у кошки - инструмента, профили разные. Далее, группируем вместе все слова с одинаковыми профилями, и именуем каждую группу, т.е. каждый профиль первым по порядку словом в словаре, имеющим данный профиль. Тогда получается, что кошка-животное склоняется по профилю "австриячка", а кошка-инструмент - по профилю "автопокрышка". Обратим внимание, что есть несклоняемые слова, (например, "адажио") имеющие "нулевой" профиль, т.е. профиль со всеми пустыми хвостами. И есть такие слова, как ребёнок (во множ. числе "дети"), склоняемые по уникальному "полному" профилю, т.е. в этих случаях пустой является основа. Что нам дают профили? Прежде всего - огромное упрощение грамматических процедур. Те, упомянутые выше, 170 страниц с описанием русской грамматики, реализуются в виде довольно сложной и громоздкой программы. Но как только мы выделили профили - про все эти сложности можно забыть. Описание ассоциации _gen, а это, по сути, маленькая программка, занимает всего несколько строчек текста. Её задача - проста до примитива: берётся профиль слова, и его основа, из профиля извлекается "хвост" для нужного "падежа" - и к основе приклеивается хвост. Таким образом, кардинально упрощается основная подзадача генерации русского текста. При этом добавление в словарь новой лексики тоже сводится к примитивной процедуре: для нового слова просто указывается аналогично изменяемое, что обычно сделать легко, берется его профиль, и новое слово с этим профилем помещается в словарь. Профили и анализ текста.Если немного вникнуть в структуру базы данных гиперсловаря, то, при понимании идеологии Абриаля, нетрудно понять, что и анализ русского текста на этой базе проводится достаточно простым методом. От слова отрезается хвост, длиной начиная от одной буквы, затем наращивая по одной букве до полной длины слова. Затем полученный хвост находится среди законных профильных окончаний, и в случае успеха перебираются все профили, использующие это окончание, у каждого из этих профилей перебираются использующие его слова, и у каждого из этих слов основа сравнивается с остатком исходного слова после отрезания хвоста. Все такие совпадения дают варианты прочтения слова. Например, слово "берегу" даст дательный и второй предложный падежи существительного "берег" а также первое лицо единственного числа настоящего времени глагола "беречь". Замечательно то, что на лаконичном языке Абриаля описание этой процедуры будет в несколько раз короче и проще, чем соответствующее текстовое описание, приведенное выше. Стоит отметить также, что результаты этого первичного низкоуровнего анализа нет смысла выдавать "наружу". Ради этого не стоило бы затевать гиперсловарь. Весь смысл гиперсловаря именно в том, чтобы весь анализ, в том числе его высокие уровни проходили в одной той же среде. Уже реализованная морфологическая сегментация даёт основу для экономного описания семантики. Например, большинство слов с суффиксной группой "ийк" обозначают женщин разных национальностей, ассир/ийк/а, бельг/ийк/а и т.д., а корень "бельг" относится только к словам, связанным с Бельгией: бельг/иец, бельг/ийк/а, бельг/ийск/ий. Морфологическая сегментацияВсе слова в словаре были разбиты на несколько (от одного до семи) морфологических сегментов. Возьмем самое полное разбиение: в/нутр/и/за/вод/ск/ой. Здесь:
Для сегментации использовались эвристические алгоритмы, направленные на максимизацию доли правильных разбиений, а также - данные, частично введенные вручную, частично - взятые из Словаря морфем русского языка Кузнецовой и Ефремовой. Фактически, в качестве исходных данных использовались списки правильных сегментов (морфем и морфемных групп). Затем в процессе вычисления эти списки постепенно дополнялись статистически выведенными сегментами. Отметим, что процент брака можно было бы значительно сократить, почти до нуля, если бы в распоряжении автора были бы более полные списки правильных корневых и суффиксных сегментов. Практически их довольно легко можно было бы выделить из результирующих списков, отбросив явный брак, но на это у автора не хватило ресурсов. Рассылки за осень 2001-го года (история проекта Ариадна).От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 19 сентября 2001 г. 0:19Тема: ABRIAL dispatchЗдравствуйте коллеги! В данной рассылке будут поступать новости по проекту Абриаль. Краткое содержание предыдущих серий :).
Александр Иосифович Пацкин. mailto:aleksandr@tochka.ru От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 26 сентября 2001 г. 20:07Тема: ABRIAL dispatch 1Здравствуйте коллеги!...
От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 3 октября 2001 г. 13:36Тема: ABRIAL dispatch 2Здравствуйте коллеги! ...
С глаголами получается большое количество нудной ручной работы из-за множества чередований в основе (взобраться/взберусь). Тем не менее, дело продвигается. Глаголы разбиты на 146 образцов, осталось 432 из 27748. От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 10 октября 2001 г. 1:19Тема: ABRIAL dispatch 3Здравствуйте коллеги! ....
Найден хороший каталог по компьютерной лингвистике. Рекомендую: http://www.rvb.ru/soft/catalogue/catalogue.html ... От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 19 октября 2001 г. 23:46Тема: ABRIAL dispatch 4Здравствуйте коллеги! ....
Теперь нужно:
От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 25 октября 2001 г. 0:36Тема: ABRIAL dispatch 5Здравствуйте коллеги! .... В настоящий момент получен (загружен) первый вариант базы данных. Логически в него входят субстантивное склонение (существительные), адъективное склонение (прилагательные) и все отглагольные формы. Структурно база (грубо) состоит из двух частей 1) профили морфологии - каждый профиль описывает группу слов с идентичным словоизменением. Например для существительных профиль содержит 6*2=12 хвостов-окончаний в 12-ти возможных падежах. 2) Все слова словаря со ссылкой на свой профиль с указанием основы, к которой добавляются хвосты. (как основа, так и хвосты могут быть пустыми). Например: ладья(лад)--->бадья Слово "ладья" склоняется по профилю "бадья" с основой "лад". К этой основе добавляются все окончания профиля "бадья". Сам профиль именуется по первому по порядку слову, использующему этот профиль. Текущий вариант базы данных в полном виде не очень годится для показа и демонстрации в инете, т.к. БД долго грузится. Однако сегодня сделано этапное дело: сделано виртуальное отношение, при просмотре базы на лету генерирующее все производные формы от исходной (в частности склоняющее и спрягающее слова). .... От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 31 октября 2001 г. 0:36Тема: ABRIAL dispatch 6Здравствуйте коллеги! ...
В настоящий момент структура базы данных модифицируется с целью сделать более удобной и эффективной работу с данными через программу Абриаль, или через интернет. В БД входят чуть менее 100000 слов (всякие "латимерия" и "ламаркизм"). Чтобы загрузка и просмотр БД были эффективны нужно слова сегментировать, т.е. разделить на "морфы". Это можно сделать: а) чисто механически, т.е. по первой или первым двум буквам (так было сделано с Роже), б) Морфологически - это требует значительной ручной работы по вводу корневых морфем. в) статистически - т.е. сегменты будут выделены кластеризацией всего словаря одновременно. Скорей всего я пойду третьим путем, с небольшим добавлением 2-го. Обрубать 1-2 первые буквы не очень красиво. .... От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 14 ноября 2001 г. 14:43Тема: ABRIAL dispatch 7 - сайт Абриаля восстановлен.... От: А.И.Пацкин [aleksandr@tochka.ru] Отправлено: 20 декабря 2001 г. 15:08Тема: ABRIAL dispatch 8Здравствуйте коллеги! После месячного перерыва, за который прошу меня извинить, возобновляется рассылка по проекту Абриаль. Напоминаю, как выглядит состояние дел по проекту с птичьего полета. (По возможности - не на птичьем языке:).
Техническое описание работы программыТип программы - Win32 консольная программа Название - RUS.exe Параметры :- если без параметров, или с одним параметром - имя файла то делается первичный расчет и используется файл исходный zzz или файл указанный в параметре. Первичный расчет получает все формы изменяемых слов. Кроме прочего получается промежуточный файл TEMP_IN1.TXT для вторичного расчета - если вызов с параметром -A где А - латинское, то делается вторичный расчет, который пытается разделить все полученные слова морфологически, т.е. на префиксную, корневую, суффиксную часть (суффиксы) и окончание кроме того от сложных слов отделяется первая половина, переходный суффикс о или е или черточка, и приставка второй половины. Итого в слове могут быть такие части не-благ-о-при-сто-йн-ый
| |
| | | |
|
| пол1 | преф1
| хвост (окончание) преф | | суффиксы
суфф0 корень Кроме прочего получается промежуточный файл TEMP_IN2.TXT для окончательного расчета, т.е. генерации исходных текстов базы данных Абриаля. - если вызов с параметром -B (где B - латинское), то производится окончательный расчет с генерацией исходных текстов базы данных Абриаля. В нормальном режиме программу нужно выполнить трижды в следующем порядке: сначала без параметров, затем с параметром -A, затем с параметром -B. Входные файлыфайл ZZZ содержит грамматический словарь русского языка Зализняка Обычный текстовый файл в кодировке 866 (ДОС) по одному слову на строчку. Формат типичной строки (от которого возможно много отклонений): ИСХ-ФОРМА номер-ударения часть-речи индекс [дополнения...] где ИСХ-ФОРМА либо слово в своей неизменяемой форме, напр. быстро либо исходная (основная) форма, т.е. для склоняемых именительный падеж ед.числа (или множественного, если нет единственного числа (щипцы )) или может быть и другой падеж если нет именительного (дровец ) номер-ударения - номер буквы, на которую падает ударение в исходной форме часть-речи - это либо сокращенный код части речи (п - прилагательное), либо для существительных и глаголов подробнее: для сущ-х указавается род и одушевленность, для глаголов - нсв или св - признак совершенности/несовершенности. Индекс имеет сложную структуру основных две части:
Кроме словаря программа использует в работе вспомогательные файлы: FORM.INI -- форматы склонения существительных и прилагательных (через дробь записываются окончания под-ударением/без-ударения) (Примечание: часть предыдущего файла FOR_PR.INI -- форматы склонения прилагательных) VERB_FMT -- форматы спряжения глаголов и отглагольных форм. Выходные файлыВыходных файлов много (они все есть в модуле files), а именно: Есть следующие группы файлов: ABR\*.AB - это собственно выходные файлы базы данных Абриаля или те же файлы в читаемой форме SU_PROTO INI - профили существительных SU_FORMS INI - привязка существительных к профилям GL_PROTO INI - профили глаголов GL_FORMS INI - привязка глаголов к профилям PR_PROTO.INI - профили прилагательных PR_FORMS.INI - привязка прилагательных к профилям REF\*.* - сюда выводятся разные попутные справочные материалы, разные ошибки, необработанные части статей, словари свойств RES\*.* - а сюда словарь выводится рассортированный по частям речи, чтобы удобнее было разбираться ARESULT - сгенерированные формы существительных ARESPRIL - сгенерированные формы прилагательных A-VERBS - сгенерированные отглагольные формы ВСЕ A-VERBS?? - сгенерированные отглагольные формы по группам спряжения ?? = 01-16 - регулярные формы 00 - нерегулярные ALEFT - оставшаяся необработанной часть ZZZ Подробнее см. файл FILES.CPP ОПРЕДЕЛЕНИЕ ПРОФИЛЯПрофилем называется множество окончаний, приписываемое к основе у группы морфологически одинаково изменяемых слов. Считается, что данное слово относится к определённому профилю (в настоящей версии - только к одному!). Нулевой профиль - у неизменяемых слов - все окончания нулевые. Полный профиль - у таких слов как ИДТИ или РЕБЁНОК, т.е. изменяемых целиком (ШЛА, ДЕТЬМИ) |