计算隐马尔可夫模型 (HMM) 的排放概率值

机器算法验证 可能性 隐马尔可夫模型 拉普拉斯平滑 维特双算法
2022-03-16 21:00:18

我是 HMM 的新手,仍在学习。我目前正在使用 HMM 来标记词性。为了实现维特比算法,我需要转换概率()和发射概率(b_i(o))。ai,jbi(o)

我正在使用监督学习方法为这些概率生成值,其中我给出了一个句子及其标记。我将排放概率计算为:

bi(o)=Count(io)Count(i)

其中\Count(i)是标签i在训练集中出现Count(i)的次数, \Count(i \to o)是观察到的单词o映射到标签i的次数。iCount(io)oi

但是当使用这个经过训练的bi(o)进行标记时,在给定句子中可能存在观察到的变量,这些变量在找到bi的值时从未出现过。在这种情况下,您如何估计该实例的bi值?

2个回答

对于这类问题,可以使用拉普拉斯平滑法一般来说,拉普拉斯平滑可以写成:

If y{1,2,...,k}then,P(y=j)=i=1mL{yi=j}+1m+k

这里L是可能性。

因此在这种情况下,发射概率值 ( bi(o) ) 可以重写为:

bi(o)=\Count(io)+1\Count(i)+n

其中n是系统训练后可用的标签数量。

这是一个相对较老的问题,但我会为那些(像我自己)遇到它寻找相关内容的人添加我的 5 美分。

处理零排放概率的另一种方法是“关闭词汇表”。一个想法是在训练集中定义“稀有”词 - 那些出现次数少于预定义次数的词,并在模型训练之前用“词类”替换它们。将模型应用于新的单词序列时,所有未在训练集中看到的单词也会被转换为“单词类别”(实际上将它们视为“稀有”)。它保证模型不会有看不见的单词。

必须手动选择从单词生成“单词类”的规则(这是一个缺点)。例如,在使用这种方法的(可能)第一篇文章中(Bikel, DM, Schwartz, R. & Weischedel, RM Machine Learning (1999) 34: 211.; https://link.springer.com/article/ 10.1023/A:1007558221122 ; http://curtis.ml.cmu.edu/w/courses/index.php/Bikel_et_al_MLJ_1999)类的例子是:

Word Feature           | Example Text           | Intuition
-----------------------|------------------------|-----------------------------------------
twoDigitNum            | 90                     | Two-digit year
fourDigitNum           | 1990                   | Four digit year
containsDigitAndAlpha  | A8956-67               | Product code
containsDigitAndDash   | 09-96                  | Date
containsDigitAndSlash  | 11/9/89                | Date
containsDigitAndComma  | 23,000.00              | Monetary amount
containsDigitAndPeriod | 1.00 Monetary          | amount, percentage
otherNum               | 456789                 | Other number
allCaps                | BBN                    | Organization
capPeriod              | M.                     | Person name initial
firstWord              | first word of sentence | No useful capitalization information
initCap                | Sally                  | Capitalized word
lowerCase              | can                    | Uncapitalized word
other                  | ,                      | Punctuation marks, all other words

来自训练集的预处理标记句子示例(来自 Michael Collins 的讲座):

“利润/NA 飙升/NA at/NA 波音/SC Co./CC ,/NA 轻松/NA 领先/NA 预测/NA on/NA Wall/SL Street/CL ,/NA as/NA 他们/NA CEO/NA Alan/SP Mulally/CP 宣布/NA 第一/NA 季度/NA 结果/NA ./NA"

被转换(带有一些假设的标签和“稀有词”)为(替换词,如粗体所示)

" firstword /NA soared/NA at/NA initCap /SC Co./CC ,/NA 轻松/NA小写/NA 预测/NA on/NA initCap /SL Street/CL ,/NA as/NA 他们/NA CEO/NA Alan/SP initCap /CP 宣布/NA 第一/NA 季度/NA 结果/NA ./NA"

仍然有可能在训练集中没有看到所有的“标签 -> 词/词类”对,这使得某个词或词类不可能被这些标签标记。但这并不能阻止这些词被其他标签标记——不像在训练集中没有看到的词。