Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

   #1
16.07.2008 11:12

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Правила в generator.t

Предлагаю в этой ветке публиковать найденые дырки в генераторе и дополнения правил, их исправляющие.

Вот первое. Неправильная форма винительного падежа для слова "фонарь". Исправил, добавив в vrules следующие строки:

Код:

        ['1M'  'рь' 'рь'] // фонарь 
        ['1MI' 'рь' 'ря'] // звонарь

Неактивен

   #2
16.07.2008 13:08

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

Моя версия:

Код:

vrules =
[
  ...
  ['1MI' 'ь' 'я']
]

commonrules5 =
// на -ь
[...
[''    'ь'   'я'   'ю'   'ь'   'ем'   'е']

Изменил общее правило. По умолчанию, все слова муж. и ср. рода с 'ь' на конце с ним и останутся в В.П., кроме одушевленных.
Примеры: киль, руль, гвоздь, пень, день

Неактивен

   #3
16.07.2008 13:11

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

Согласен. Я просто "подгонял" под свои существительные... Спасибо, Андрей.
Ты меня поправляй. Я в программировании разбираюсь, а в морфологии - ни бельмеса.

Отредактировано fireton (16.07.2008 13:14)

Неактивен

   #4
16.07.2008 20:13

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

"ЖИ", "ШИ" - пиши с буквой "И"... smile

Наткнулся с прилагательным "большой". В творительном падеже получилось "большым". Исправил так:

Код:

trules=
[
   ...
   ['A'  '(4|ж)ой' '$1им']
]

Может, не только с прилагательными это сделать?

Неактивен

   #5
17.07.2008 08:02

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

Сделал и для того, и для другого.

Неактивен

   #6
19.07.2008 20:00

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

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

Попутно выяснил, что в ТАДС есть лимит лексем - около 30 тысяч (вероятно, значение имеет не количество, а лимит памяти). Учитывая, что у нас на каждое слово по 8 (в среднем) лексем, в нашем распоряжении не более 3,5 тысяч слов, на которые будет откликаться система...

Неактивен

   #7
20.07.2008 08:43

Korwin
Гоблин, зеленый от недосыпа (+141, -8)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 774
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Правила в generator.t

GrAndrey написал:

Попутно выяснил, что в ТАДС есть лимит лексем - около 30 тысяч (вероятно, значение имеет не количество, а лимит памяти). Учитывая, что у нас на каждое слово по 8 (в среднем) лексем, в нашем распоряжении не более 3,5 тысяч слов, на которые будет откликаться система...

Имеется в виду - 3500 разных слов? Когда-то читал, кажется у С.Симоновича что адвентюры Инфокома понимали до 5000 слов - правда мне непонятно и тогда было - это вместе со словоформами или как? С другой стороны, в английском словоформ-то кажется поменее.

Неактивен

   #8
21.07.2008 16:18

Flint
Участник
Зарегистрирован: 06.09.2007
Сообщений: 148

---

Re: Правила в generator.t

Надо будет зыркнуть в исходниках на предмет причины ограничения. Возможно, если это просто вручную заданное ограничение (например, статический массив или константа), то можно его немного "раздвинуть".
Разумеется, мы потеряем совместимость с непропатченными версиями проигрывателей.

Неактивен

   #9
21.07.2008 17:02

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

Гы. Вы игру сначала напишите, такую, чтобы ограничения реально мешали...

А когда напишите, можно Майку Робертсу написать письмо. Думаю, он поможет. smile

Отредактировано fireton (21.07.2008 17:03)

Неактивен

   #10
21.07.2008 17:12

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

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

Неактивен

   #11
26.07.2008 15:26

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

Перепроверил лимит на лексемы - ошибка на генерации 2477 слова, если для каждого слова создавать отдельный объект (оставлять в одном - переполняется стек). При общем лимите в 30 тысяч выходит по 12 лексем на слово, из них 1 - изначальное, 6 падежей, 2 с метками. Ещё два на второй творительный только у части слов. Куда девается остальное - не понял. Удаляю изначальные лексемы - точно тот же результат (изначальные лексемы не учитываются, но все равно храняться в памяти?)

Ошибка выглядит так:
fatal: too many vocabulary word relations (internal limit)

Количество можно увеличить, вынеся директивы генератору из noun в другое свойство, а также отдельно записывая лексемы творительного и дательного падежа. Так можно получить 4 с лишним тысячи. Кстати, 2500 тоже не мало, генерируется полминуты.


Вот ещё идея:
если в лексеме прописано несколько слов, помеченных для генерации и разделенных пробелами, то разбить их в отдельные лексемы.
Например:
noun = 'водка/ вино/ карты/2 женщины/2'

Так переключать раскладку придется только один раз - в начале строки, написав noun = ''

Неактивен

   #12
04.08.2008 16:29

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

Слово "камень" склоняет неправильно:

1му    - камень(-)    каменя(-)    каменю(-)(#d)    камень(-)    каменем(-)(#t)    камене(-)

Никак не могу прикинуть общее правило... Поможите, люди добрые.

Неактивен

   #13
05.08.2008 09:35

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

Все существительные мужского рода на -ень теряют гласную при склонении, за исключением:
-бюллетень, олень, пельмень, тюлень, ясень, ячмень + некоторые устаревшие слова. Их в правиле не прописал, они в меньшинстве. Стоит вписать?
Все слова м.р. на -оть: коготь, лапоть, ломоть
Внес единственное слово - огонь, так как довольно частое.

P.S. Исследовал с помощью "Словоискателя v1.0"

commonrules5 =
// на -ь
[['F'    'ь'   'и'   'и'   'ь'   'ью'   'и']

// -ень,-оть щебень, стержень, ломоть, лапоть, коготь; всего более 30-ти
// но!!! -олень, тюлень, окунь, пельмень, бюллетень, ясень, ячмень (это почти все)
['M'    'ень'   'ня'   'ню'   'ень'   'нем'   'не']
['M'    'оть'   'тя'   'тю'   'оть'   'тем'   'те']
['M'    'огонь'   'огня'   'огню'   'огонь'   'огнём'   'огне']   

[''    'ь'   'я'   'ю'   'ь'   'ем'   'е']

Неактивен

   #14
05.08.2008 10:15

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

Супер, спасибо.

Андрей, а ты изменения в SVN кладешь сразу? Я к тому, что в SVN у нас всегда самая свежая версия библиотеки?

Неактивен

   #15
12.08.2008 09:59

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

Попутно выяснил, что в ТАДС есть лимит лексем - около 30 тысяч (вероятно, значение имеет не количество, а лимит памяти).

Андрей, смотрел вот это:

Код:

tc32 -m?

Компилятору можно сказать, чтобы он увеличил объем используемой памяти... Это может помочь?

Неактивен

   #16
12.08.2008 10:21

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

Насчет памяти - проверю.

Ввел правило для творительного падежа существительных на -ец. Под ударением -цом, без -цем.
Например: торгОвец -> торгОвцем, резЕц -> резцОм.

Код:

trules=
[
...
   ['U' '(8[бвгджзйкмнпрстфхцчшщ])ец' '$1цом'] //леденЕц
]

commonrules6 =
[
...
  [''    '(8[бвгджзйкмнпрстфхцчшщ])ец' '$1ца' '$1цу' '$1ец' '$1цем' '$1це'] // мздОимец
]

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

Неактивен

   #17
12.08.2008 10:27

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

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

Нормально. Пару раз забудут, потом приучатся. Это ж дело такое...

Неактивен

   #18
12.08.2008 10:36

GrAndrey
папа RTADS и Бяка (+37, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1200
Вебсайт

меньше слов

Re: Правила в generator.t

может, быть в правила ещё один элемент включить? Строку с замечанием. Например:
[''    '(8[бвгджзйкмнпрстфхцчшщ])ец' '$1ца' '$1цу' '$1ец' '$1цем' '$1це' 'Правило для этого слова зависит от ударения!'] // мздОимец

Эта строка будет выводиться вместе с результатом генерации и вопросов в корректности работы генератора не возникнет

Неактивен

   #19
12.08.2008 10:38

fireton
некто с бородой (+209, -52)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1047
Вебсайт

Тон

Re: Правила в generator.t

Мне кажется, не обязательно.

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru