Генерация родительного падежа владения в GF
Я проверил библиотеку GF на предмет "s", как в "Доме моего друга", но мне не удалось найти правильный метод для создания такой связи. Может кто-нибудь подскажет мне по этой проблеме.
Ценить это
2 ответа
Там нет действительно никакой функции для "s притяжательного в основном RGL. Самое близкое, что вы можете получить, используя только RGL API, - это "дом моего друга".
Однако есть модуль Extend, в котором есть функция GenNP : NP -> Quant
.
Итак, как использовать Extend? Вы использовали RGL API, где все
mkX
Операторы доступны, когда вы открываете модули "Синтаксис" и "Парадигмы". Модуль Extend намного новее, чем основной RGL, поэтому его функции не показаны в синопсисе. Но вы можете использовать их точно так же, как и модули Syntax и Paradigms. Вот пример использования:
resource Test = open SyntaxEng, ParadigmsEng, LexiconEng, ExtendEng in {
oper
-- "the house of my friend"
house1 : NP = mkNP the_Det (mkCN (mkN2 house_N) (mkNP i_Pron friend_N)) ;
-- "my friend's house"
house2 : NP =
let myFriend : NP = mkNP i_Pron friend_N ;
myFriends : Quant = GenNP myFriend ; -- GenNP is from ExtendEng
in mkNP myFriends house_N ;
}
Если у вас возникнут дополнительные вопросы по использованию Extend, я буду рад помочь!
Скопируйте его в файл Test.gf и откройте оболочку GF, как обычно. Затем вы можете импортировать файл с флагом
-retain
, который позволяет вам оценивать операции с
cc
команда. Как это:
(You need to be inside the GF shell, not on the command line)
> i -retain Test.gf
> cc -one house1
the house of my friend
> cc -one house2
my friend's house
Если вы поищете в английском RGL реализации родительного падежа (Gen
по большей части), вы можете найти что-нибудь полезное для своей реализации.
Например, у вас есть
addGenitiveS
в CompatibilityEng.gf и
regGenitiveS
в ResEng.gf.
> cc -table ResEng.regGenitiveS "dog"
ResEng.Nom => dog
ResEng.Gen => dog's