微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在GF中生成带有被动时态的句子而没有“成为”

如何解决在GF中生成带有被动时态的句子而没有“成为”

我用词组生成了句子“播放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中有什么方法可以在短语中添加两个或更多的句子。

谢谢〜

解决方法

@aschepler所说,“由BBC托管”是一个分词,不是被动语态。在Extend模块中,有几个函数可以从VP创建分词:

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

因此,我们可以使用PastPartAgentAP创建“ BBC托管”的分词。 如果在GF文件中打开ExtendEng,则可以使用它的所有功能,就像已经在使用SyntaxEng和ParadigmsEng一样。 (另请参见this answer。)

下面是一个示例,您可以将其复制并粘贴到名为Comedy.gf的文件中,然后在GF shell中进行播放。

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)) ;
}

在带有标志-retain的GF shell中打开Comedy.gf时,可以使用命令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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。