Составление предложения с пассивным временем в GF без "быть"

Я использовал Phrase для создания предложения "Слушать комедию, организованную BBC".

mkPhr (mkVP(
        (mkV2 (mkV ("Play")))
        (mkNP
            aSg_Det
            (mkCN 
                (mkCN (mkN ("comedy")))
                (mkSC (passiveVP
                         (mkV2 ("host"))
                         (mkNP (mkN ("BBC"))))))))

Но я получаю результат "Включи фильм для BBC". Я проверил библиотеки GF, но похоже, что нет способа изменить VP на NP, чтобы избежать "быть".

Ребята, позвольте мне научить меня, как избавиться от этого, или есть ли способ в GF добавить два или более предложений во фразу.

Спасибо ~

1 ответ

Решение

Как сказал aschepler, "размещено на BBC" - это причастная фраза, а не пассивный залог. В модуле Extend есть несколько функций для создания причастий из VP:

PastPartAP      : VPSlash -> AP ;         -- lost (opportunity) ; (opportunity) lost in space
PastPartAgentAP : VPSlash -> NP -> AP ;   -- (opportunity) lost by the company

Итак, мы можем использовать PastPartAgentAPдля создания причастия "размещено на BBC". Если вы откроете ExtendEngв вашем файле GF вы можете использовать все его функции, как вы уже делаете это с SyntaxEng и ParadigmsEng. (См. Также этот ответ.)

Вот пример, который вы можете скопировать и вставить в файл с именем Comedy.gf и поиграйте с ним в оболочке GF.

resource Comedy = open SyntaxEng, ParadigmsEng, ExtendEng in {

oper
  -- Some lexicon
  comedy_N : N = mkN "comedy" ;
  host_V2 : V2 = mkV2 "host" ;
  play_V2 : V2 = mkV2 "play" ;
  BBC_PN : PN = mkPN "BBC" ;

  -- Intermediate phrases
  hosted_by_BBC : AP =
    PastPartAgentAP (mkVPSlash host_V2) (mkNP BBC_PN) ;

  comedy_hosted_by_BBC : NP =
    mkNP a_Det (mkCN comedy_N hosted_by_BBC) ;

  -- The final phrase
  play_comedy_hosted_by_BBC : Utt =
    mkUtt (mkImp (mkVP play_V2 comedy_hosted_by_BBC)) ;
}

При открытии Comedy.gf в оболочке GF с флагом -retain, вы можете проверить лексику и промежуточные результаты с помощью команды cc. Например:

> cc -table comedy_hosted_by_BBC
s . NCase Nom => a comedy hosted by BBC
s . NCase Gen => a comedy's hosted by BBC
s . NPAcc => a comedy hosted by BBC
s . NPNomPoss => a comedy hosted by BBC
a . AgP3Sg Neutr

> cc -one play_comedy_hosted_by_BBC
play a comedy hosted by BBC
Другие вопросы по тегам