番外.2.词性标注by Viterbi

Posted oldmao_2001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了番外.2.词性标注by Viterbi相关的知识,希望对你有一定的参考价值。


重新再复习一下NLP,把一些内容以番外的内容记录一下。本节使用维比特算法来实现了一个英文单词词性标注的模型。
公式输入请参考: 在线Latex公式

数据格式说明

数据是一个txt文件,里面包含很多句子,然后按单词(包括标点符号)进行了分词,然后每个词后面对应该词的词性。一个词在不同的语句中词性可能是不一样的。
贴一部分:
Still/RB
,/,
massive/JJ
internal/JJ
debt/NN
has/VBZ
forced/VBN
the/DT
government/NN
to/TO
borrow/VB
massively/RB
on/IN
the/DT
domestic/JJ
market/NN
and/CC
to/TO
offer/VB
inflation-adjusted/JJ
returns/NNS
of/IN
2/CD
%/NN
to/TO
3/CD
%/NN
a/DT
month/NN
just/RB
to/TO
get/VB
investors/NNS
to/TO
hold/VB
on/RP
to/TO
its/PRP$
paper/NN
./.
关于词性不多深入,大概就是有:
NN名词
VB动词
IN介词

模型公式推导

目标描述

假设有一句话 S S S可以表示为多个单词 w w w的序列
S = w 1 w 2 w 3 ⋯ S=w_1w_2w_3\\cdots S=w1w2w3
每个单词在句子中都有对应的词性 z z z
w 1 → z 1 , w 2 → z 2 , w 3 → z 3 ⋯ w_1\\rightarrow z_1,w_2\\rightarrow z_2,w_3\\rightarrow z_3\\cdots w1z1,w2z2,w3z3
得到一个词性标注序列 Z Z Z
Z = z 1 , z 2 , z 3 ⋯ Z=z_1,z_2,z_3\\cdots Z=z1,z2,z3
对于有T个单词的句子,上面序列长度为T
我们的目标是构建一个模型,通过对语料库的训练,可以对新的一个句子 S ′ S' S
S ′ = w 1 ′ w 2 ′ w 3 ′ ⋯ S'=w'_1w'_2w'_3\\cdots S=w1w2w3
进行词性标注预测:
Z ′ = z 1 ′ z 2 ′ z 3 ′ ⋯ Z'=z'_1z'_2z'_3\\cdots Z=z1z2z3

Noisy Channel Model

根据前面的
Noisy Channel Model的内容,我们可以写出模型就是要使得在给定序列 S S S的条件下,词性序列 Z Z Z出现概率最大化:
P ( Z ∣ S ) = P ( S ∣ Z ) ⋅ P ( Z ) P(Z|S)= P(S|Z)\\cdot P(Z) P(ZS)=P(SZ)P(Z)
其中 P ( S ∣ Z ) P(S|Z) P(SZ)是翻译模型(translation model), P ( Z ) P(Z) P(Z)是语言模型(language model),展开(这里使用约等于是前面部分有独立性条件假设约束进行简化。后面部分按bigram来展开):
P ( w 1 w 2 ⋯ w N ∣ z 1 z 2 ⋯ z N ) ⋅ P ( z 1 z 2 ⋯ z N ) ≈ ∏ i = 1 T P ( w i ∣ z i ) ⋅ P ( z 1 ) P ( z 2 ∣ z 1 ) P ( z 3 ∣ z 2 ) ⋯ P ( z n ∣ z n − 1 ) P(w_1w_2\\cdots w_N|z_1z_2\\cdots z_N)\\cdot P(z_1z_2\\cdots z_N)\\\\ \\approx\\prod_{i=1}^TP(w_i|z_i)\\cdot P(z_1)P(z_2|z_1)P(z_3|z_2)\\cdots P(z_n|z_{n-1}) P(w1w2wNz1z2zN)P(z1z2zN)i=1TP(wizi)P(z1)P(z2z1)P(z3z2)P(znzn1)
目标函数就是:
Z ^ = a r g max ⁡ P ( Z ∣ S ) = a r g max ⁡ ∏ i = 1 T P ( w i ∣ z i ) ⋅ P ( z 1 ) ∏ j = 2 T P ( z j ∣ z j − 1 ) = a r g max ⁡ log ⁡ ( ∏ i = 1 T P ( w i ∣ z i ) ⋅ P ( z 1 ) ∏ j = 2 T P ( z j ∣ z j − 1 ) ) = a r g max ⁡ ∑ i = 1 T P ( w i ∣ z i ) + log ⁡ P ( z 1 ) + ∑ j = 2 T P ( z j ∣ z j − 1 ) (1) \\begin{aligned} \\hat Z &=arg\\max P(Z|S) \\\\ &=arg\\max \\prod_{i=1}^TP(w_i|z_i)\\cdot P(z_1)\\prod_{j=2}^TP(z_j|z_{j-1}) \\\\ &= arg\\max\\log\\left(\\prod_{i=1}^TP(w_i|z_i)\\cdot P(z_1)\\prod_{j=2}^TP(z_j|z_{j-1}) \\right)\\\\ &=arg\\max\\sum_{i=1}^TP(w_i|z_i)+\\log P(z_1)+\\sum_{j=2}^TP(z_j|z_{j-1}) \\end{aligned}\\tag{1} Z^=argmaxP(ZS)=argmaxi=1TP(wizi)P(z1)HanLP中人名识别分析

ikanalyzer 可以做词性标注吗

Python之酒店评论分词词性标注TF-IDF词频统计词云

nlp词性标注

隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注

词法分析:词性标注