1

要输出一个带有宾语的动词短语,那么 RGL 似乎只提供了两个功能:

VQ -> QS -> VP
V2Q -> NP -> QS -> VP

而在这两个功能中,动词类型又分为两个不同的类别。但是该类型V2Q有一个参数,需要在句子中添加介词。为了生成句子Tell me who I am,我使用了以下代码:

MySentence = {s = (mkPhr 
                      (mkImp 
                        (mkVP 
                          (mkV2Q 
                            (mkV "tell") 
                            (mkPrep "")) 
                          (i_NP) 
                          (mkQS 
                            (mkQCl 
                              (mkIComp (who_IP)) 
                              (i_NP)))))).s };

上面的代码可以毫无问题地生成我想要的输出。所以我的问题是,介词被添加到动词有什么原因V2Q?或者这个输出是以错误的方式产生的?

4

1 回答 1

1

首先,是的,您正确地构建了句子。

为什么V2Q中有介词槽

一般来说,所有的 V2*(和 V3*)都可以将它们的 NP 宾语作为直接宾语,比如eat ___,see ___,或者带有介词,比如相信 ___

这比强制所有及物动词只接受直接宾语,并且所有介词短语都被分析为可选状语更灵活。拿一个像“相信自己”这样的VP来说,不是你相信(某事),你的定位就是你自己。很高兴能够对believe_V2带有强制性参数的编码进行编码,并且该参数由介词in引入。

(旁注:对于像“sleep in a soft bed”这样的VP ,“in a soft bed”不是sleep的强制论点。那么我们只需将sleep变成一个不及物动词sleep_V,,并将in a soft bed变成一个高级)

因此,这适用于所有带有 NP 参数的动词(V2V、V2S、V2Q、V2A)。拿一个像“lie [to children] [that moon is made of cheese]”这样的 VP :动词lie是一个 V2S,它用介词to 来介绍它的 NP 宾语。

事实上,许多 RGL 语言在其 Paradigms 模块中提供了一个- 您可以在 RGL 概要页面中noPrep按 Ctrl+F来查看示例。

V2Q 的构造函数

mkV2Q (mkV "tell") (mkPrep "")那么,即使没有介词,为什么还要强迫你的 V2Q 使用呢?

更常见的动词类型,如 V2,有几个mkV2. 最简单的就是mkV2 : Str -> V2. 由于及物动词有一个直接宾语(即不使用介词介绍宾语)是很常见的事情,而且有这么多简单的 V2,因此必须始终noPrep为其中的大多数指定 a 会很烦人。

V2Q 比 V2 更罕见,所以没有人不费心创建一个不带介词的实例。带介词的构造函数比不带介词的构造函数更通用,因为您总是可以选择介词为noPrep. 好吧,我只是推了一些新的添加,看这里,所以如果你得到了最新的 RGL,你现在就可以了mkV2Q "tell"

这种事情是完全可定制的:如果你想要一些操作的更多重载实例mkX,你可以制作它们。

于 2021-08-31T11:48:28.563 回答