2

我一直在研究 Hidden Markov Models and Conditional Random Fields 用于命名实体识别的任务,我似乎停留在一个基本概念上,也就是说:学习过程的目标是从训练数据中计算 argmax ,并将该 argmax 序列应用于测试数据的所有实例?

考虑这个隐马尔可夫模型示例:我有两个状态 {1,0},其中 1 是实体,0 是任何其他词。为简单起见,我现在还不关心实体分类,而只是实体检测。

我的训练数据如下:

奥巴马住在华盛顿 1 0 0 1

iPad很棒 0 1 0 0

史蒂夫乔布斯病了 1 1 0 0

现在遵循 argmax 规则,其中:

P(状态 1 到状态 1) = 1/9

P(状态 1 到状态 0)= 1 - 1/9

P(状态 0 到状态 0)= 3/9

P(状态 0 到状态 1)= 1 - 3/9

在计算出 V 和 U 矩阵后,我发现:

从训练数据中提取的最佳标签序列 = 1 1 0 0

现在考虑测试语句:

iPhone很棒

我是否只是将测试语句应用于 1 1 0 0,这实际上会起作用,但如果我有另一个测试语句,例如“Sony 的发言人被解雇”,你可以看到序列 1 1 0 0 将完全没用对于那句话。

总结一下:训练的目的是提取一个最佳标签序列并将其应用于所有测试句子吗?这似乎不太可能!我错过了什么??

4

1 回答 1

0

我强烈建议你阅读这个关于 HMM 的讲座。这是 HMM 定义的摘录

任何三元组 (u,v,s) 的参数 q(s|u,v),使得 s ∈ K ∪ {STOP} 和 u,v ∈ K ∪ {*}。q(s|u,v) 的值可以解释为在标签的二元组 (u,v) 之后立即看到标签 s 的概率。

任何 x ∈ V, s ∈ K 的参数 e(x|s)。e(x|s) 的值可以解释为观察 x 与状态 s 配对的概率。

您似乎缺少 e 并且您没有正确计算 q。

q(1|0,0) = count <0,0,1> / count <0,0> 

考虑到上述参数的乘积,最好的标签序列是最可能的序列(抱歉没有发布公式)。

对于您的示例“索尼发言人被解雇”,所有序列都是:

* * 0 0 0 0 0 0 STOP
* * 0 0 0 0 0 1 STOP
...
* * 1 1 1 1 1 1 STOP

你应该计算 e(A|0) , e(spokesperson|0), q(0|*,*), q(0|*,0) 等。然后将它们相乘,得到概率最高的序列。

由于这是一项耗时的任务,并且对于更长的序列呈指数增长,因此使用了维特比算法(也在讲座中描述)

于 2013-09-16T08:26:46.600 回答