一,上下文无关文法(CFGs)

1,基本定义

Probabilistic Context-Free Grammers(PCFGs)

如下就是一个比较清楚的例子:

Probabilistic Context-Free Grammers(PCFGs)

2,最左推导

Probabilistic Context-Free Grammers(PCFGs)

例如:

Probabilistic Context-Free Grammers(PCFGs)

一组最左推导正好可以很容易地表示成一棵句法解析树,即一组最左推导其实可以看成一棵句法解析树!

假设上面的句法解析树为t,则yield(t)=the dog laughs,即这棵树表示的单词序列。
如果至少存在一组推倒,它的yield(t)=s,那么这个单词序列s就被称为是这个CFG定义的语言。

二,歧义

一个单词序列s实际上可以有超过一组的底层推导方式,在这种情况下,我们称这个单词序列在这个CFG下是有歧义的。
最常见的就是介词短语绑定歧义,如下所示:

Probabilistic Context-Free Grammers(PCFGs)

歧义是自然语言问题中比较严重的问题了,为了解决解析歧义,所以出现了PCFGs!

三,概率上下文无关文法(PCFGs)

1,基本定义

Probabilistic Context-Free Grammers(PCFGs)

那怎么解决解析歧义呢?这时我们就可以利用概率了!
一个单词序列s的最佳的解析树就是:
Probabilistic Context-Free Grammers(PCFGs)

这就引入了以下三个问题:

  • 模型定义问题:我们应该怎样定义函数p(t)?
  • 模型训练问题:我们应该怎样从训练数据中学到模型p(t)的参数?
  • 解析问题:给定一个单词序列s,我们应该怎样找到最有可能的解析树?

下面就会详细介绍这些问题如何解决!

2,PCFGs的定义

Probabilistic Context-Free Grammers(PCFGs)
Probabilistic Context-Free Grammers(PCFGs)

例如下面这个例子十分清楚:

Probabilistic Context-Free Grammers(PCFGs)
Probabilistic Context-Free Grammers(PCFGs)

这就解决了模型定义问题!

直观的理解,PCFGs做了一个假设即解析树是通过以下过程随机生成的:

Probabilistic Context-Free Grammers(PCFGs)

3,通过语料库来训练出一个PCFGs

核心步骤如下:

Probabilistic Context-Free Grammers(PCFGs)

这就解决了模型训练问题!

4,找到PCFGs中最佳的解析树

一个极其关键的问题就是给定一个单词序列s,我们怎样找到s的最佳解析树?即:
Probabilistic Context-Free Grammers(PCFGs)

这需要用到动态规划算法CKY算法!
但使用CKY算法之前,必须先将一般的PCFGs转化为等价的CNF形式的PCFGs。

(1)CNF
CNF十分简单,即:

Probabilistic Context-Free Grammers(PCFGs)

CNF形式的PCFGs如下:

Probabilistic Context-Free Grammers(PCFGs)

(2)用CKY算法进行解析

Probabilistic Context-Free Grammers(PCFGs)

详细流程如下:

Probabilistic Context-Free Grammers(PCFGs)

主要就是:

  • 规则的选择
  • 分割点的选择

合理性体现在哪里呢?

One key observation is:

Probabilistic Context-Free Grammers(PCFGs)

Second key observation is:

Probabilistic Context-Free Grammers(PCFGs)
可用反证法证明。

5,概率计算问题

其实还有一类问题,就是概率计算问题:给定一个单词序列s,计算它在PCFGs下(即可以通过PCFGs解析)的概率。这需要用到内向算法和外向算法。这里主要介绍一下内向算法,因为它的形式和CKY算法十分相似。

Probabilistic Context-Free Grammers(PCFGs)
Probabilistic Context-Free Grammers(PCFGs)

详细流程如下:

Probabilistic Context-Free Grammers(PCFGs)

它和CKY算法的唯一区别在于将CKY递推式中的max换为了

相关文章:

  • 2021-10-24
  • 2021-11-18
  • 2021-09-09
  • 2021-07-05
  • 2021-07-23
  • 2021-04-23
猜你喜欢
  • 2021-07-16
  • 2021-12-08
  • 2022-12-23
  • 2021-06-16
  • 2022-12-23
  • 2021-09-05
相关资源
相似解决方案