1

在 GF 写句子的树上经常遇到许多选项,其中多个介词可以在同一棵树中使用,例如

在我的手机上下载

下载到我的手机

下载到我的手机上

... 这样的例子不胜枚举。

这种问题可以解决如下

(on_Prep|to_Prep|...)

但在某些情况下,这个问题会出现在诸如

吃食物

吃东西

我知道上述句子的含义并不完全相同,但是有什么方法可以实现这样的目标吗?

我尝试了以下方法,但似乎不合逻辑。

mkNP
    (the_Det|)
    (mkN ("food"))

我还尝试为确定器添加一个空字符串,mkDet (mkDigits ("")) 但不幸的是,上述两种方法似乎不够聪明。

4

1 回答 1

2

您使用的一般方法|是正确的。

没有空的确定器,而是另一个重载实例mkNP. 有一个带有限定符 (so Det -> N -> NP) 而另一个没有, just N -> NP。所以你可以这样做:

eat_food_VP : VP = 
  mkVP eat_V2 (mkNP the_Det food_N | mkNP food_N) ;
于 2020-11-26T19:46:16.873 回答