1
2
如果你在看使用统一并且有用的实际例子,那么看看计算语言学中使用的基于统一的语法,例如hpsg和lfg。从表面上看,这看起来像是另一种统一的味道,但它们确实是一样的。 基于统一的语法可以被认为是一种CFG(上下文无关语法),在这种语法中,生成的内容会随着统一而扩展。CGF中的每个术语都会得到一个AVM(属性值矩阵),它是一个特征和值的有向非循环图。这里的想法有点类似于编译器中使用的属性语法。 想象一下这个玩具语法:
在协议中,我们有一些轻微的过度生成: *猫看见了金 [S[NP猫][副总裁[V看到][NP金]] 为了解决这一问题,我们可以改进CFG,使其包含协议的概念:
在这里,我们将拒绝过去的过度生成。但这很快就导致了组合移植。然而,当我们分析以下内容时,我们可以用AVM扩展每个术语,并将它们统一起来:
_1符号是可重入符号,这意味着该特性的值必须相同,事实上,它们在统一后将指向图中的同一节点,如果成功。在实践中,我们认为动词短语的一致性特征与短语中动词的一致性相同。
由于NP和VP无法统一,因此我们的增强玩具语法“Kim see the cats”被拒绝,因为它的AGR特性具有不同的值。 当我们分析时,我们将AVM统一在一起,因此获得了非常多的表达能力,使语法工程师很容易编写语法。通常,广泛覆盖的UBG有100条规则,而等量CFG,可能不存在,具有统一性的CFG图灵完备,将有数千条或更多的规则。 |
2
5
感谢您提供这些详细的答案。现在我真的明白了。不过,我想在这里写一个我在斯图尔特·罗素和彼得·诺维格的《人工智能:现代方法》一书中找到的例子,以防有人再次寻找同样的问题。我认为这个答案使用了一种非常实际的方法:
|
3
1
逻辑编程,阿法克,几乎是统一的。您向解释器提供一条语句,解释器试图将其与它知道是“真”的东西(即数据库中的东西)统一起来。 例如
断言汤姆是只猫。 然后你可以查询
Prolog会回来
Prolog在其数据库中查找并尝试统一所提供的语句(
|
Joachim Breitner · 重写二阶统一 7 年前 |