Запись в форме "Один из 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 ;