Генерация родительного падежа владения в 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
Другие вопросы по тегам