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

Объявление

Открыт сайт tom2-game.ru.


Последнюю версию платформы можно скачать здесь.

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

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



Плагин - Словарь для ТОМ 2

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

1

Родился простенький плагин-словарь для второго ТОМа. Пока он отличается от демо-примера только способностью загружать слова из текстовых файлов. А в остальном не отличается сверхъестественными способностями.
В будущем надеюсь сделать поддержку "экономных" форматов файлов. Так-же к плагину будет идти менеджер словарей, в котором и будут вкусности по автоматизации добавления слов, слиянию словарей, фильтрации и прочее. Но это, наверное, уже в другой теме.
Плагин пока не совсем стабилен - может вылетать на больших словарях. Это всё из-за "утрамбовывания" dll-ки: Делфи никак не хочет стряпать маленькие файлы. Пришлось обходиться без моих любимых генериков, вкусных TStrings-ов, замечательных потоков и прочих прелестей. :surprise:

И пару слов о формате словаря: Он похож на ini-файлы, но таковым не является. Так-что никаких комментариев.
Расширение файлов-словарей не имеет значение. Плагин сканирует все файлы в папке, в которой находится (включая вложенные), и если файл начинается с определённого набора байтов (например, "TOMdict "), то загружает его. Кол-во файлов не ограничено.

2

Скачал, работает.  :flag:
Буду прикладывать к прототипу вместо своего демо-словаря.

3

Эх... опять я не по тому пути пошёл.
Разбираюсь с системой склонений Зализняка. Хочу применить для упрощения описания существительных без использования огромных словарей.
Давно я делал что-то подобное с прилагательными и, не считая маленьких сложностей, с ними всё получилось нормально. Существительные таким образом сделать не получилось. Сейчас выяснилось, что для нормального "угадывания" словоизменения существительного не достаточно его начальной формы. Тут уже играют роль семантические свойства слова. Сейчас я ищу минимальный набор свойств слова, которых будет достаточно для точного склонения существительного. Уже удалось выделить: род, одушевлённость, ударение. Учитывая эти параметры процент "попадания" составляет примерно 98,57%. Всю картину портят существительные с 4-м типом склонения в творительном падеже. Там творятся просто чудеса, буквы "Е-Ё-О-Ы" пляшут как хотят. Возможно, придётся вынести его из склонения.
Если всё пройдёт хорошо, то вместо полного описания в словаре можно будет задать лишь начальную форму и необходимые параметры слова. Остальное плагин сделает за нас. А т.к. здесь не будут использоваться внешние словари (как в том плагине-генераторе лексем), то задавать можно будет совершенно любые, даже выдуманные слова. (Кстати, топор-разбойник тоже будет работать простой заменой Нд на Од). Вот такие у меня мечты :)

А концепцию со словарём я всё-таки хочу оставить. Ведь если сделать плагин, который будет без предупреждения пытаться генерировать слова для любых слов, которые посылает ему парсер, то проблем не оберёшься. Квестописатель всё-равно должен знать, какие слова он будет использовать и заносить их в словарь (пусть даже простым перечислением).

4

Все равно нужно комбинировать со словарём, потому что
1. Всегда найдутся исключения не влезающие ни в одно правило;
2. С глаголами всё гораздо хуже чем с существительными;
3. Без словаря невозможно исправление слов, введенных с ошибками.

5

Как всё оказывается сложно. 4 дня бился об клавиатуру делая синтез существительных в единственном числе. Сделал женский и мужской род. Сейчас пытаюсь доделать множественное число, а там... беспредел. Сил больше нет копаться в этих окончаниях. Мне они уже сниться начали.
В общем, сейчас единственное число спокойно генерируется по двум формам: ИпЕч и ТпЕч. Указав эти две формы, а так-же свойства слова (одушевлённость, род), синтезатор (генератор, функция, плагин... называйте как хотите) генерирует все остальные в единственном числе. Процент "попаданий" стремится к 100 (есть несколько исключений, но их на столько мало, что даже говорить не стоит).
Однако для множественного числа этих двух форм недостаточно! И это роняет всё моё настроение что-либо делать дальше. Вводить ещё одно (третье) вспомогательное слово очень не хочется, а эти Агаряне, Щенята, Абазины и прочие непредсказуемые слова никак не хотят подчиняться.
Тут играют семантические свойства слова: зная, что Абазины - представители народа абхазо-адыгской этноязыковой группы, мы склоняем их "много абазин", а если бы мы не знали о них ничего, мы бы сказали "много абазинов". И дело отнюдь не в одушевлённости. Дело именно в "национальности" этого слова. То-же самое со щенятами, гусятами и прочими мелкими созданиями, мешающими создать столь хороший плагин для ТОМа.

Не знаю, что делать дальше, совсем запутался. Распутайте, кто-нибудь.

6

Я бы исходил из принципа - лучшее враг хорошего.
Если кто-то будет писать игру про абазинов, он это слово сам спокойно сможет занести ручками непосредственно в код игры.
Тоже со щенками.
В конечном счете это же платформа для игр, а не для управления ядерными ракетами. Если на 100 произвольных слов будет 5 неправильных склонений, то это уже очень хороший результат. Лучше этого не надо!

7

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

игру про абазинов

Здесь как-раз таки правильно будет сказать "игру про абазин".

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

Если на 100 произвольных слов будет 5 неправильных склонений

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

Книга А.А. Зализняка "Русское именное словоизменение" - прям моя последняя надежда. ^^ Давно валяется на винте, сейчас додумался взять и почитать её... прям глаза открыла. Всё чётко и строго описывается. Но там 370 страниц, а я сейчас на 55-ой, так-что с плагином придётся ещё чуть-чуть подождать. :)

8

Ох и большая оказалась книжка. А главное: почти полностью состоит из алгоритма вывода словоформ. Уже 3500 строк кода настрочил, а ещё и половины работы не сделано. Боюсь не успею я сделать этот плагин, поэтому выкладываю подправленную старую версию. Ничего не менял, просто сделал поддержку нового формата объявления функций: 0.5.1.7

P.S. Кстати, такое ощущение, что все правила синтеза парадигмы слова состоят из перечисления исключений. Ох и огромную работу проделал А. А. Зализняк, огромное ему спасибо.

9

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

Ох и огромную работу проделал А. А. Зализняк, огромное ему спасибо.

Да, я тоже постоянно поражаюсь и восхищаюсь этим Человеком.