ТОМ2 - платформа для парсерных игр

Объявление

Платформа ТОМ предназначена для создания текстовых игр на русском языке и имеет развитый парсер, позволяющий взаимодействовать с играми с помощью команд на близком к естественному языке. В данный момент активно разрабатывается версия ТОМ 2.
Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ТОМ2 - платформа для парсерных игр » Словарь и стандартная библиотека » Инструментарий к словарю tom.dic


Инструментарий к словарю tom.dic

Сообщений 1 страница 13 из 13

1

http://files.mail.ru/1274681914AF475EA794A664D38A5B38

Свежая база SQL, плюс инструментарий с всеми исходниками.
tombase_dev - исходники программы для работы с базой mySQL и компиляции файла tom.dic;
tomdic_viewer - исходники просмотрщика файла tom.dic;
dic_plg_file - исходники плагина Dic.plg.dll, работающего со словарём tom.dic;
tomdic.rar - архив базы mySQL.

2

Вот так теперь выглядит редактирование действий в словаре:
http://s6.uploads.ru/t/zBEJ1.png

А это состояние словаря и стандартной библиотеки на текущий момент:
http://s6.uploads.ru/t/xOhRt.png
Всё что левее столбиков "Словарь" в файл словаря не выгружается.
Всё что правее относится к стандартной библиотеке и содержит программный код.

3

Чего-то не смог добавить новый коммент в твой блог. Пишу здесь. Забираю свои слова обратно по поводу  невозможности автоматики в словаре. Отстал от жизни. Вчера загрузил несколько словарей, где всё прописано и одушевленность и склонения по падежам, и ударение. Раньше такого не было. Теперь можно смело двигаться вперед.

4

Глаголы там есть? Хочу много глаголов! =)

5

ASBer написал(а):

Глаголы там есть? Хочу много глаголов! =)

Глаголов там столько, что ты позабудешь обо всем на свете. Начал вытаскивать глаголы инфинитив из общего словаря. Дошел до буквы Д.

6

russian bear написал(а):

Глаголов там столько, что ты позабудешь обо всем на свете. Начал вытаскивать глаголы инфинитив из общего словаря. Дошел до буквы Д.

Куда вытаскивать? Руками? Зачем?

7

Alexandr написал(а):

Куда вытаскивать? Руками? Зачем?

Ну, уж прям руками. Почему руками? Программно. Правда, не совсем удобным способом через Excel. Туда весь словарь не влезает, приходится частями. А зачем. Нужен такой словарь для ЯРИЛа, и для ТОМа тоже пригодится.

Отредактировано russian bear (2013-12-20 20:26:12)

8

russian bear написал(а):

Ну, уж прям руками. Почему раками?

Списки слов из словаря hagen-morph:
http://files.mail.ru/1F0FA6611B774CF09AE57F4E2ADFA5E4

9

Код:
if(W[0]!=L'_'&&(W[0]<0x0400||W[0]>0x0451)) return 0; //не кирилица!

Плагин-словарь начисто игнорирует слова в не кириллице. Значит ли это, что на ТОМ2 не удастся написать игру, например, на английском языке? Я понимаю, что он разрабатывается в первую очередь для русского языка с возможностями парсить такую сложную морфологию, но по идее ТОМ2 должен работать с любым языком. Падежи, роды и прочие морфологические признаки не зашиты в платформу, а описываются в стандартной библиотеке или непосредственно игрописателем. Так зачем же такие ограничения?

В TOM.dic словарные статьи содержат не одну основу, а несколько. Почему?
Например, для слова "ответ":

;в;ве;вет;

Зачем такие сложности? Значит ли это, что словарь будет выдавать эту статью не только на слово "ответ", но и на слова "отвеет" и "ответет"? И почему не будет.
И самый главный вопрос: как в таком случае прочитать заголовок словарной статьи. Сейчас я перебираю всю матрицу, по индексам восстанавливаю начала и окончания, по значению в ячейке нахожу смещение статьи (или списка статей) и получаю в этом месте такую подлость в виде нескольких основ. К какой основе присабачивать начало и окончание?

Я уже окончательно сдался менять словарь прямо в формате TOM.dic, но дайте мне хотя-бы прочитать его содержимое в виде списка словарных статей. Понимаю, что всё это сделано для скорости поиска и для экономии оперативной памяти (чтобы не хранить весь словарь в оперативной памяти), но то что я увидел, разбираясь с этим форматом... ох ладно, тебе виднее.

Отредактировано Alexandr (2014-01-08 18:24:19)

10

Ладно, примерно понял что к чему. Имя словарной статьи идёт после этих основ в теле самой статьи. Пока решил просто смещаться в позицию (HeaderSize + LoadSize) и читать подряд все статьи, разделяя их по нулевым символам. Надеюсь, не будут встречаться "удалённые" из матрицы статьи, но оставшиеся в самих данных. Или какие-нить перекрытые куски, или файл вдруг завершится не нулевым символом. В общем, очень не надёжный способ, но другого простого я пока не вижу.

Кстати, можно увидеть ненадёжность данного поиска вбив в dic_viewer.exe, например, слово "отвеет". На него он выдаст словарные статьи "ответ" и "отвезти". В них обоих нет такой словоформы "отвеет". Страшно подумать что будет с такими словами как "быть", ведь их основы:

;е;у;уд;ы;ес;еш;ут;

11

Alexandr написал(а):

Плагин-словарь начисто игнорирует слова в не кириллице. Значит ли это, что на ТОМ2 не удастся написать игру, например, на английском языке? Я понимаю, что он разрабатывается в первую очередь для русского языка с возможностями парсить такую сложную морфологию, но по идее ТОМ2 должен работать с любым языком. Падежи, роды и прочие морфологические признаки не зашиты в платформу, а описываются в стандартной библиотеке или непосредственно игрописателем. Так зачем же такие ограничения?

Для английского языка будет нужен другой словарь и соответственно другой плагин. И у них вроде бы и вообще без словаря можно хорошо жить.
Не кирилица игнорируется для ускорения работы. Не надо тратить время на поиск того чего там нет =)

Alexandr написал(а):

В TOM.dic словарные статьи содержат не одну основу, а несколько. Почему?

Нет никакой возможности автоматически разрезать слово морфологически точно на приставку-корень-окончание. Поэтому варианты нарезки получаются разные для разных форм, и основа слова гуляет. К сожалению это неизбежно.
Несуществующие слова-ошибки могут приводить к загрузке похожих слов, но это ни на что не влияет кроме потраченной памяти.

Alexandr написал(а):

Я уже окончательно сдался менять словарь прямо в формате TOM.dic, но дайте мне хотя-бы прочитать его содержимое в виде списка словарных статей. Понимаю, что всё это сделано для скорости поиска и для экономии оперативной памяти (чтобы не хранить весь словарь в оперативной памяти), но то что я увидел, разбираясь с этим форматом... ох ладно, тебе виднее.

А дальше я еще сжатие хочу сделать, тогда даже имена слов будет затруднительно прочитать...

Alexandr написал(а):

дайте мне хотя-бы прочитать его содержимое в виде списка словарных статей.

Самый простой вариант - одновременно с генерацией tom.dic писать рядом файл со списком слов в нём содержащихся (если это тебе как-то поможет, конечно).

12

Код:
struct
{ char Code;  //код строки
  char*Str;   //строка
  char*Decode;//строка
} StrCode[] =
{ {1,"word "       ,"word "},
  {2,"\nkey "      ,"\nkey = "},
  {3,"\nkeydef "   ,"\ndefkey = "},
  {4,"\nform "     ,"\nform "},
  {5,"preposition ","preposition "},
  {6,"attribute "  ,"attribute "},
  {7,"class "      ,"class "},


  {0,0}
};

Третье значение, почему в Str записано "keydef", а в Decode - "defkey"? Не ошибка ли это?

13

Alexandr написал(а):

Не ошибка ли это?

Скорее исправление ошибки.
ТОМ понимает ключевое слово defkey - умолчальный ключ или ключ по умолчанию.
В базе поле записано как keydef, что в общем, не корректно.
Исправляется кодированием - кодируется keydef, а раскодируется как defkey, и все счастливы - и ТОМ работает, и базу перелопачивать не нужно =)


Вы здесь » ТОМ2 - платформа для парсерных игр » Словарь и стандартная библиотека » Инструментарий к словарю tom.dic