我正在尝试用意大利语输出以下句子,un anno e mezzo
其中句子是名词短语列表。我的代码:
lin
Sentence = mkUtt(mkNP
(and_Conj)
(mkNP (aSg_Det) (mkN("anno")))
(mkNP (mkN("mezzo")))
);
但是上面代码的输出是un anno ed il mezzo
. 为什么我的il
输出中有确定器?我找不到这个问题背后的原因。谢谢!
我正在尝试用意大利语输出以下句子,un anno e mezzo
其中句子是名词短语列表。我的代码:
lin
Sentence = mkUtt(mkNP
(and_Conj)
(mkNP (aSg_Det) (mkN("anno")))
(mkNP (mkN("mezzo")))
);
但是上面代码的输出是un anno ed il mezzo
. 为什么我的il
输出中有确定器?我找不到这个问题背后的原因。谢谢!
您将使用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是名词短语的头部,只需要变形。