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

mkNP 在 GF 中包含额外的确定器

如何解决mkNP 在 GF 中包含额外的确定器

我正在尝试用意大利语 un anno e mezzo 输出以下句子,其中该句子是名词短语列表。我的代码

lin
   Sentence = mkUtt(mkNP
         (and_Conj)
         (mkNP (aSg_Det) (mkN("anno")))
         (mkNP (mkN("mezzo")))
   );

但是上面代码输出un anno ed il mezzo。为什么我的输出中有 il 限定符?我找不到这个问题背后的原因。谢谢!

解决方法

RGL 中的质量名词

您使用 il 获得输出,因为 N -> NPmkNP 实例构成了质量名词。典型的例子是“我喝水”,其中是用mkNP water_N构造的。

在一些资源语法中,这个 mkNP 实例创建了没有任何冠词的 NPs:就像英语“我喝水”。在法语等其他语言中,它创建了一个分词的 NP:“je bois de l'eau”。意大利语给出的不是像英语那样的简单形式,也不是像法语那样的分词,而是一个普通的定冠词:"bevo l'acqua"

RGL 的创作者为什么要这样做?在编写应用程序语法时,mkNP : N -> NP 实例是大量名词 的高级构造,而不是“我是否放置文章”的低级问题。 >

缺点是几乎不可能在 mkN : N -> NP 添加文章的语言中输出裸表。据我了解,它只能作为一个独立的话语,参见例如this answer 在 GF 邮件列表中。

Lang> p "king John" | l -treebank
Lang: UttCN (ApposCN (UseN king_N) (UsePN john_PN))
LangEng: king John
LangSpa: rey Juan
Lang: UttNP (MassNP (ApposCN (UseN king_N) (UsePN john_PN)))
LangEng: king John
LangSpa: el rey Juan

如果你想要真正的 NP 级别的无文章 NP,你可以添加这样一个函数 (CN -> NP) 到 Extend 模块,或者在 RGL's github 上创建一个问题,要求其他人创建一个这样的函数.

如何解决您当前的问题

如果你想输出un anno e mezzo怎么办?我只是懒惰,把“e mezzo”变成一个副词,然后把它附加到anno。像这样:

 Sentence =
      mkUtt (mkNP
               aSg_Det
               (mkCN
                  (mkN "anno")
                  (ParadigmsIta.mkAdv "e mezzo")
               )
            ) ;

您可以安全地执行此操作,因为 e mezzo 不会变形。 Anno 是名词短语的中心词,只有它需要变化。

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