Запись в форме "Один из XXX (множественное число)" в GF

Я пытаюсь сгенерировать предложение Один из моих друзей на GF, используя библиотеку GF. Мне не удалось найти правильный метод построения преподобного после числительного и установления отношения одного из существительного во множественном числе.

как класс Noun Phrase шоу, Numeral или же Digits иметь только Common Noun или же Noun после них.

1 ответ

Решение

CountNP

Для этого есть функция в модуле Noun, но, к сожалению, ее нет в RGL API. Функция CountNP:

CountNP : Det -> NP -> NP ;    -- three of them, some of the boys

Чтобы использовать его в своей грамматике, вам нужно открыть модуль NounEng. Обычная практика - открывать не относящиеся к API модули с квалификацией: вместо open NounEng in { … }, мы даем ему сокращение, например N: open (N=NounEng) in { … }. Затем в тексте грамматики нужно написать N.CountNP. Вот пример, вы можете скопировать и вставить его в файл с именем Friend.gf.

resource Friend = open SyntaxEng, LexiconEng, (N=NounEng) in {
  oper
    one_Det : Det = mkDet (mkNumeral n1_Unit) ;

    my_friends_NP : NP = mkNP (mkDet i_Pron pluralNum) friend_N ;

    friend : NP = N.CountNP one_Det my_friends_NP ;
}

Predet

В других случаях, когда вы хотите изменить уже существующий NP, вы можете использовать категорию Predet. Вот примеры (их можно вставить в тот же файл Friend.gf).

-- The RGL includes some Predets, like all, most and only:
all_friends : NP = mkNP all_Predet my_friends_NP ;
most_friends : NP = mkNP most_Predet my_friends_NP ;
only_friends : NP = mkNP only_Predet my_friends_NP ;
Другие вопросы по тегам