1

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

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

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

4

1 回答 1

1

RGL 中的大众名词

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

在某些资源语法中,此mkNP实例创建没有任何冠词的 NP:例如英语“I drink water”。在法语等其他语言中,它创建了一个 NP 部分:“je bois de l'eau”。意大利语给出的不是像英语那样的简单形式,也不是像法语那样的分词,而是一个正常的定冠词:“bevo l'acqua”

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

缺点是几乎不可能在mkN : N -> NP添加文章的语言中输出裸形式。据我了解,它只能作为一个独立的话语,例如参见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 的 github上创建一个问题,要求其他人创建这样的函数。

如何解决您当前的问题

那么如果你想输出un anno e mezzo怎么办?我只是懒惰,将“e mezzo”变成状语,然后将其附加到anno。像这样:

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

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

于 2021-04-12T08:43:34.390 回答