GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.2 (2)<< < Пред.   Поиск:  
 Автор Тема: На: Доступный Морфологический словарь (словарь словоформ)
гость
93.72.99.*
На: Доступный Морфологический словарь (словарь словоформ)
Добавлено: 27 фев 09 2:47
Здраствуйте!

Цитата:
Здравствуйте mascon!
Вы спрашиваете: Цитата:
Автор: mascon
У меня к вам вопрос, а как практически переконвертировать в РБД ваш объектный формат?



Для этого нужно сделать экспорт данных в текстовое представление. Как это сделать описано в документации. В результате получится 4-е текстовых файла: ZlAttributes.csv, ZlSpecifiers.csv, ZlTransforms.csv, ZlStatements.ini. Фактически это и есть таблицы для РБД. При конвертировании нашего формата в РБД дополнительно потребуется нормализовать отношение многие ко многим между ZlAttributes.csv и ZlSpecifiers.csv.


Я пытаюсь перегнать таблицы в РБД, но нигде не нашел подробного описания структуры этих файлов, поэтому есть к Вам несколько вопросов.
Почему отношение многие ко многим между ZlAttributes.csv и ZlSpecifiers.csv - между Name в ZlAttributes.csv и Attributes ZlSpecifiers.csv, насколько мне кажется, 1 ко многим, предварительно преобразовав

Name Attributes
70001 90001, 90024, 90025, 90027, 90031, 90034

в

Name Attributes
70001 90001
70001 90024
...

, если не так - можете объяснить этот момент подробнее.

И еще непонятна до конца структура файла ZlStatements.ini

[;10001]
азотобактерии

Что значит отсутствие первого числа в квадратных скобках?

[13409;12743]
полезущих

Что значат два числа в квадратных скобках?

Если это все эти моменты где-то освещаются, можете дать ссылку, чтобы не задавать эти, может быть, наивные вопросы.

Заранее спасибо.
Сергей2 (похоже тут собрались почти одни Сергеи)
[Ответ][Цитата]
Sergey
Сообщений: 26
На: Доступный Морфологический словарь (словарь словоформ)
Добавлено: 28 фев 09 12:12
Здравствуйте Сергей!

В ZlStatements.ini слова разбиты по группам. Каждая группа слов соответствует набору трансформов. Например [13409;12743]. В таблице трансформов (ZlTransforms.csv) хранятся и приставки, и окончания к словам. Для удобства назовём их флексиями. В нашем примере [13409;12743] первый трансформ - это имя трансформа приставки, а второй - это трансформ окончания. Но есть слова у которых нет приставок. Поэтому получается только трансформ окончания. Например [;10001]. Кроме того, в случае [13409;12743], в трансформах приставки и окончания для каждого слова выбираются флексии которые соответствуют друг другу по спецификатору из таблицы ZlSpecifiers.csv.

Что касается связи между ZlAttributes.csv и ZlSpecifiers.csv, то тут всётаки отношение многие ко многим. Если немного расширить Ваш пример, то получим:

Name;Attributes
70001;90001, 90024, 90025, 90027, 90031, 90034
70002;90001, 90024, 90025, 90027, 90031, 90035

Что соответствует:

Name Attributes
70001 90001
70001 90024
70002 90001
70002 90024

Т.е. нет уникальности ни в одном из полей. А это значить, что в данном случае получается отношение многие ко многим. В РБД это третья таблица у которой поле Name связано с полем Name из ZlSpecifiers.csv отношением 1-н ко многим. А поле Attributes связано с полем Name из ZlAttributes.csv тоже отношением 1-н ко многим.
[Ответ][Цитата]
гость
93.72.99.*
На: Доступный Морфологический словарь (словарь словоформ)
Добавлено: 07 мар 09 4:40
Здраствуйте, Сергей

Спасибо за разъяснение. Все в РБД перегнал.
У меня осталось два вопроса?

Прежде чем придумывать свой вариант, есть ли какой-то описанный алгоритм генерации всех словоформ на основании этих файлов?

Что содержит поле Type ZlTransforms.csv. Как его учитывать при генерации словоформ?

Заранее спасибо.

Тоже, Сергей
[Ответ][Цитата]
Sergey
Сообщений: 26
На: Доступный Морфологический словарь (словарь словоформ)
Добавлено: 07 мар 09 11:02
Здравствуйте Сергей!
Начнём с ZlTransforms.csv. В Cerebrum этот файл представлен в виде таблицы ZlTransforms. В файле в поле Name есть повторяющиеся записи. В таблице ZlTransforms в Cerebrum набор записей с повторяющимися значениями в поле Name представлены в виде одной записи. Поле Type указывает тип трансформа. 1 - это трансформ с окончаниями, а 2 - это трансформ с приставками. Далее идут спецификаторы, которые представлены в файле в отдельных строках, а в таблице ZlTransforms в Cerebrum являются полями таблицы. На пересечении строк из таблицы ZlTransforms и спецификаторов находятся приставки или окончания в зависимости от типа трансформа (поле Type). Получается таблица с набором следующих полей: Name, Type и набор имён спецификаторов. В Cerebrum есть возможность для каждой записи из таблицы задавать свой набор полей. Это какраз и используется в данной таблице. Визуально в этой таблице будет много пустых ячеек, но на самом деле их просто не существует. У каждой записи из таблицы ZlTransforms свой набор полей. Кроме того если залезть в базу, то в этой таблице нет поля Type. Оно не нужно потому что в базе хранится объект. А трансформы приставок и окончаний отличаются типом объектов.
Теперь что касается алгоритма генерации словоформ. В таблице ZlStatements есть два поля в которых указаны трансформы приставок и окончаний, и поле с базовым словом. Для генерации всех словоформ нужно к каждому базовому слову добавить все приставки из трансформа приставок и все окончания из трансформа окончаний, но так чтобы их спецификаторы совпадали. Если нету приставки или окончания, то добавляется что нибудь одно. Т.е. нужно перебрать все спецификаторы из трансформов приставки и окончания и из каждого спецификатора добавить к базовому слову или приставку, или окончание, или приставку и окончание, если этот спецификатор есть в обох трансформах.
[Ответ][Цитата]
 Стр.2 (2)1  [2]<< < Пред.