我一直在寻找隐藏马尔可夫模型和条件随机场来完成命名实体识别的任务,我似乎陷入了一个基本概念,也就是说:学习过程的目标是从中计算argmax训练数据,并将argmax序列应用于测试数据的所有实例?
考虑这个隐马尔可夫模型示例:我有两个状态{1,0},其中1是实体,0是任何其他单词。为了简化起见,我不仅仅关注实体分类,而只关注实体检测。
我的训练数据如下:
奥巴马住在华盛顿 1 0 0 1iPad很棒 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,这实际上是有效的,但如果我有另一个测试句,如“索尼的发言人被解雇”,你可以看到序列1 1 0 0会对那句话完全没用。
总结:培训的目的是提取一个最佳标签序列并将其应用于所有测试句子?这似乎不太可能!我错过了什么?
答案 0 :(得分:0)
我强烈建议您阅读this lecture on HMM。这是HMM定义的摘录
任何三元组(u,v,s)的参数q(s | u,v),使得s∈K∪{STOP}, 和你,v∈K∪{*}。 q(s | u,v)的值可以解释为 在标签的二元组之后立即看到标签的概率 (U,V)。
任何x∈V,s∈K的参数e(x | s).e(x | s)的值可以是 解释为观察x与之配对的概率 州。
你似乎错过了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(发言人| 0),q(0 | *,*),q(0 | *,0)等。然后相应地相乘并得到序列概率最高。
由于这是一项耗时的任务,并且对于较长的序列呈指数增长,因此使用维特比算法(也在讲座中描述)