更多确定子句语法

转载自:https://mp.weixin.qq.com/s/knJC5mlYgntbLMtmzeuC7A

本章有两个主要目标:

1.研究DCG表示法提供的两个重要功能:额外的参数和额外的

目标。

2.讨论DCGs的现状和局限性。

 

1  额外参数

在上一章中,我们介绍了基本的DCG表示法。但是DCG所提供的功能远远超过我们迄今为止所看到的。首先,DCG允许我们指定额外的参数。多余的参数可以用于许多目的。我们将研究三个。

 

上下文无关文法的特性

作为第一个例子,让我们看看如何使用额外的参数向上下文无关文法添加特性。

这是我们在上一章中使用的DCG:

 

s --> np,vp.

 

np --> det,n.

 

vp --> v,np.

vp --> v.

 

det --> [the].

det --> [a].

 

n --> [woman].

n --> [man].

 

v --> [shoots].

 

现在,假设我们要处理“她向他开枪”和“他向她开枪”这样的句子。我们应该做什么?好吧,显然,我们应该添加规则,说“he”,“she”,“him”和“her”是代词:

 

pro --> [he].

pro --> [she].

pro --> [him].

pro --> [her].

 

此外,我们应该添加一条规则,说名词短语可以是代词:

 

np --> pro.

 

在这个新的DCG中有什么好处?好吧,到目前为止,它是可行的。例如:

 

?- s([she,shoots,him],[]).

true.

 

但是有一个明显的问题。 DCG还将接受很多明显错误的句子,例如“A woman shoots she”,“Her shoots a man”和“Her shoots she”:

 

?- s([a,woman,shoots,she],[]).

true.

 

?- s([her,shoots,a,man],[]).

true.

 

?- s([her,shoots,she],[]).

true.

 

就是说,语法不知道“she”和“he”是主语代词,不能用于宾语位置;因此,“A woman shoots she”是不对的,因为它违反了有关英语的这一基本事实。而且,语法不知道“her”和“him”是宾语代词,不能在主语中使用。因此,“Her shoots a man”是不对的,因为它违反了这一限制。至于“Her shoots she”,这要设法使两个问题都立即报出错误。

现在,很明显我们必须做些什么来纠正这个错误:我们需要扩展DCG,使其包含哪些代词可以出现在主语位置,哪些代词可以出现在宾语位置的信息。有趣的问题是:我们到底该怎么做?首先,让我们看看一种简单的纠正方法,即添加新规则:

s --> np_subject,vp.

 

np_subject --> det,n.

np_object --> det,n.

np_subject --> pro_subject.

np_object --> pro_object.

 

vp --> v,np_object.

vp --> v.

 

det --> [the].

det --> [a].

 

n --> [woman].

n --> [man].

 

pro_subject --> [he].

pro_subject --> [she].

pro_object --> [him].

pro_object --> [her].

 

v --> [shoots].

 

现在,此解决方案“有效”。例如,

 

?- s([her,shoots,she],[]).

false.

 

但无论是计算机科学家还是语言学家都不会认为这是一个好的解决方案。麻烦的是,一个小的词汇添加导致了DCG发生了很大的变化。让我们面对现实吧:“she”和“her”(还有“he”和“him”)在很多方面都是一样的。但是,为了处理它们不同的属性(即它们在句子中出现的位置),我们不得不对语法进行重大修改:特别是,我们将名词短语规则的数量增加了一倍。如果我们不得不做进一步的改变(例如,处理复数名词短语),事情会变得更糟。我们真正需要的是一个更微妙的编程机制,它允许我们处理这些事实,而不必一直被迫添加规则。这就是额外的参数起作用的地方。请看下面的语法:

 

s --> np(subject),vp.

 

np(_) --> det,n.

np(X) --> pro(X).

 

vp --> v,np(object).

vp --> v.

 

det --> [the].

det --> [a].

 

n --> [woman].

n --> [man].

 

pro(subject) --> [he].

pro(subject) --> [she].

pro(object) --> [him].

pro(object) --> [her].

 

v --> [shoots].

 

需要注意的是,这个新语法只包含一个新的名词短语规则。事实上,它与我们所写的第一个语法非常相似,只是现在符号np与一个新的参数(主语、宾语或x)相关联。一位语言学家会说,我们添加了一些特征来区分各种名词短语。尤其要注意代词的四个规则。这里我们用额外的参数来说明哪些代词可以出现在主语位置,哪些可以出现在宾语位置。因此,这些规则是最基本的,因为它们为我们提供了如何使用这些代词的基本事实。

那么其他规则怎么办?好吧,直觉上,规则

 

np(X) --> pro(X).

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值