如何解决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 -> NP
的 mkNP
实例构成了质量名词。典型的例子是“我喝水”,其中水是用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 举报,一经查实,本站将立刻删除。