Возник следующий вопрос: имеет ли значение порядок слов в имени объекта при парсинге?
Например, у нас имеется красная деревянная байда
Как отреагируют современные системы на следующий запрос:
1. поднять деревянную красную байду
или
2. поднять байду деревянную
или
3. поднять байду любую
4. ...и как надо отреагировать на эти случаи?
Отредактировано /gray_flannel (06.09.2008 00:32)
Неактивен
Возьмём Inform 6 (потому что я больше ничего не знаю).
Каждому объекту назначаются ключевые слова, в данном случае это были бы красн, деревянн, байд. Если в команде встречается одно или больше слов из этого списка, то обрабатываем этот объект. Если также встречаются прочие слова, например, "любую", то получим "Здесь нет такого предмета.", хотя не всегда: например, "взять все байды" сработает. Ну, и если есть несколько предметов с общими словами, и введённых в команде недостаточно, чтобы определить, какой именно пользователь имел ввиду, то парсер спросит, например: "Красную или зелёную?" Порядок слов в команде значения не имеет, а вводить обработку слова "любой" не вижу смысла.
Отредактировано yandexx (07.09.2008 19:26)
Неактивен
yandexx, спасибо, а как Inform 6 обработает такую хитрую ситуацию, что у нас в комнате присутствует кроме байды еще красное яблоко, и человек вводит:
подпереть байду красным
В данном случае можно подумать, что мы хотим или подпереть красную байду, или подпереть байду красным яблоком, а как воспримет это информ?
Неактивен
Мы можем создавать собственные глаголы и изменять поведение уже имеющихся, и выглядит это так (для нового глагола):
Verb 'подпер' * noun -> Support * noun noun -> Support;
В созданной грамматике будет возможна обработка как запросов с одним предметом, так и с двумя. Причём приоритет идёт сверху вниз. Поэтому, если ввести подпереть байду красным, то парсер поймет это как попытку подпереть байду (игроком), потому что это уже удовлетворяет первому варианту грамматики (оба слова являются ключевыми для байды). Если появится ключевое слово другого предмета, не являющееся ключевым для первого, то осуществится второй вариант грамматики.
EDIT:
Однако, красным, а не красную, и чтобы верно работало для RInform, следует указывать падежи слов для команды:
Verb 'подпер' * cAcc_noun -> Support * cAcc_noun cIns_noun -> Support;
Тогда подпереть байду красным будет пытаться подпирать яблоком, а подпереть байду красную подпирать байду просто.
Отредактировано yandexx (08.09.2008 17:20)
Неактивен
Постпозитивное определение - определение, стоящее после определяемого слова.
В RTADS определение после существительного будет связано с ним только в тех случаях, если между ними стоит свзяка "от", "из", "для", "про" и т.д. ('of' в англ. варианте) или у определения есть специальная пометка, сообщающая парсеру что оно приписывается без связки (обработчик все равно незаметно вставит связку).
Например:
стул из дерева
книга про сусликов
платок Марьи
река забвения
Без связки или метки обычные прилагательные не увязываются с предыдущим существительным.
Неактивен