Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
fecfc02e
Commit
fecfc02e
authored
Jan 04, 2021
by
zengxin
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'zengxin' 到 'caorunzhe'
Zengxin 查看合并请求
!777
parents
484276b0
8331cd1a
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
14 行增加
和
14 行删除
+14
-14
ChapterAppend/chapterappend.tex
+14
-14
没有找到文件。
ChapterAppend/chapterappend.tex
查看文件 @
fecfc02e
...
...
@@ -245,16 +245,16 @@ c(i|j,m,l;\mathbf{s},\mathbf{t}) &=&\frac{f(s_j|t_i)a(i|j,m,l)} {\sum_{k=0}^{l
\parinterval
M-Step的计算公式如下,其中参数
$
a
(
i|j,m,l
)
$
表示调序概率:
\begin{eqnarray}
f(s
_
u|t
_
v)
&
=
\frac
{
c(s
_
u|t
_
v;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
{
\sum
_{
s
_
u
}
c(s
_
u|t
_
v;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
\\
a(i|j,m,l)
&
=
\frac
{
c(i|j;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
{
\sum
_{
i
}
c(i|j;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
f(s
_
u|t
_
v)
&
=
&
\frac
{
c(s
_
u|t
_
v;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
{
\sum
_{
s
_
u
}
c(s
_
u|t
_
v;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
\\
a(i|j,m,l)
&
=
&
\frac
{
c(i|j;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
{
\sum
_{
i
}
c(i|j;
\mathbf
{
s
}
,
\mathbf
{
t
}
)
}
\label
{
eq:append-2
}
\end{eqnarray}
对于由
$
K
$
个样本组成的训练集
$
\{
(
\mathbf
{
s
}^{
[
1
]
}
,
\mathbf
{
t
}^{
[
1
]
}
)
,...,
(
\mathbf
{
s
}^{
[
K
]
}
,
\mathbf
{
t
}^{
[
K
]
}
)
\}
$
,可以将M-Step的计算调整为:
\begin{eqnarray}
f(s
_
u|t
_
v)
&
=
\frac
{
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(s
_
u|t
_
v;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
{
\sum
_{
s
_
u
}
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(s
_
u|t
_
v;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
\\
a(i|j,m,l)
&
=
\frac
{
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(i|j;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
{
\sum
_{
i
}
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(i|j;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
f(s
_
u|t
_
v)
&
=
&
\frac
{
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(s
_
u|t
_
v;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
{
\sum
_{
s
_
u
}
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(s
_
u|t
_
v;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
\\
a(i|j,m,l)
&
=
&
\frac
{
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(i|j;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
{
\sum
_{
i
}
\sum
_{
k=1
}^{
K
}
c
_{
\mathbb
{
E
}}
(i|j;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
}
\label
{
eq:append-3
}
\end{eqnarray}
...
...
@@ -294,13 +294,13 @@ p_x & = & \zeta^{-1} \sum_{k=1}^{K}c(x;\mathbf{s}^{[k]},\mathbf{t}^{[k]}) \label
\parinterval
在模型3中,因为繁衍率的引入,并不能像模型1和模型2那样,在保证正确性的情况下加速参数估计的过程。这就使得每次迭代过程中,都不得不面对大小为
$
(
l
+
1
)
^
m
$
的词对齐空间。遍历所有
$
(
l
+
1
)
^
m
$
个词对齐所带来的高时间复杂度显然是不能被接受的。因此就要考虑能否仅利用词对齐空间中的部分词对齐对这些参数进行估计。比较简单的方法是仅使用Viterbi对齐来进行参数估计,这里Viterbi 词对齐可以被简单的看作搜索到的最好词对齐。遗憾的是,在模型3中并没有方法直接获得Viterbi对齐。这样只能采用一种折中的策略,即仅考虑那些使得
$
\funp
{
P
}_{
\theta
}
(
\mathbf
{
s
}
,
\mathbf
{
a
}
|
\mathbf
{
t
}
)
$
达到较高值的词对齐。这里把这部分词对齐组成的集合记为
$
S
$
。式
\ref
{
eq:1.2
}
可以被修改为:
\begin{eqnarray}
c(s|t,
\mathbf
{
s
}
,
\mathbf
{
t
}
)
\approx
\sum
_{
\mathbf
{
a
}
\in
S
}
\big
[\funp{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{j=1}^{m}(\delta(s_j,\mathbf{s}) \cdot \delta(t_{a_{j}},\mathbf{t})) \big]
c(s|t,
\mathbf
{
s
}
,
\mathbf
{
t
}
)
&
\approx
&
\sum
_{
\mathbf
{
a
}
\in
S
}
\big
[\funp{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{j=1}^{m}(\delta(s_j,\mathbf{s}) \cdot \delta(t_{a_{j}},\mathbf{t})) \big]
\label
{
eq:1.11
}
\end{eqnarray}
\parinterval
同理可以获得式
\ref
{
eq:1.3
}
-
\ref
{
eq:1.6
}
的修改结果。进一步,在IBM模型3中,可以定义
$
S
$
如下:
\begin{eqnarray}
S
=
N(b
^{
\infty
}
(V(
\mathbf
{
s
}
|
\mathbf
{
t
}
;2)))
\cup
(
\mathop
{
\cup
}
\limits
_{
ij
}
N(b
_{
i
\leftrightarrow
j
}^{
\infty
}
(V
_{
i
\leftrightarrow
j
}
(
\mathbf
{
s
}
|
\mathbf
{
t
}
,2))))
S
&
=
&
N(b
^{
\infty
}
(V(
\mathbf
{
s
}
|
\mathbf
{
t
}
;2)))
\cup
(
\mathop
{
\cup
}
\limits
_{
ij
}
N(b
_{
i
\leftrightarrow
j
}^{
\infty
}
(V
_{
i
\leftrightarrow
j
}
(
\mathbf
{
s
}
|
\mathbf
{
t
}
,2))))
\label
{
eq:1.12
}
\end{eqnarray}
...
...
@@ -323,7 +323,7 @@ S = N(b^{\infty}(V(\mathbf{s}|\mathbf{t};2))) \cup (\mathop{\cup}\limits_{ij} N(
\parinterval
如果
$
\bf
{
a
}$
和
$
\bf
{
a
}
'
$
区别于两个位置
$
j
_
1
$
和
$
j
_
2
$
的对齐上,
$
a
_{
j
_{
1
}}
=
a
_{
j
_{
2
}^{
'
}}$
且
$
a
_{
j
_{
2
}}
=
a
_{
j
_{
1
}^{
'
}}$
,那么
\begin{eqnarray}
\funp
{
P
}_{
\theta
}
(
\mathbf
{
a'
}
,
\mathbf
{
s
}
|
\mathbf
{
t
}
)
=
\funp
{
P
}_{
\theta
}
(
\mathbf
{
a
}
,
\mathbf
{
s
}
|
\mathbf
{
t
}
)
\cdot
\frac
{
t(s
_{
j
_{
2
}}
|t
_{
a
_{
j
_{
2
}}}
)
}{
t(s
_{
j
_{
1
}}
|t
_{
a
_{
j
_{
1
}}}
)
}
\cdot
\frac
{
d(j
_{
2
}
|a
_{
j
_{
2
}}
,m,l)
}{
d(j
_{
1
}
|a
_{
j
_{
1
}}
,m,l)
}
\funp
{
P
}_{
\theta
}
(
\mathbf
{
a'
}
,
\mathbf
{
s
}
|
\mathbf
{
t
}
)
&
=
&
\funp
{
P
}_{
\theta
}
(
\mathbf
{
a
}
,
\mathbf
{
s
}
|
\mathbf
{
t
}
)
\cdot
\frac
{
t(s
_{
j
_{
2
}}
|t
_{
a
_{
j
_{
2
}}}
)
}{
t(s
_{
j
_{
1
}}
|t
_{
a
_{
j
_{
1
}}}
)
}
\cdot
\frac
{
d(j
_{
2
}
|a
_{
j
_{
2
}}
,m,l)
}{
d(j
_{
1
}
|a
_{
j
_{
1
}}
,m,l)
}
\label
{
eq:1.14
}
\end{eqnarray}
...
...
@@ -337,7 +337,7 @@ S = N(b^{\infty}(V(\mathbf{s}|\mathbf{t};2))) \cup (\mathop{\cup}\limits_{ij} N(
\parinterval
模型4的参数估计基本与模型3一致。需要修改的是扭曲度的估计公式,对于目标语第
$
i
$
个cept.生成的第一单词,可以得到(假设有
$
K
$
个训练样本):
\begin{eqnarray}
d
_
1(
\Delta
_
j|ca,cb)
=
\mu
_{
1cacb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_
1(
\Delta
_
j|ca,cb;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
d
_
1(
\Delta
_
j|ca,cb)
&
=
&
\mu
_{
1cacb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_
1(
\Delta
_
j|ca,cb;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
\label
{
eq:1.15
}
\end{eqnarray}
...
...
@@ -352,7 +352,7 @@ s_1(\Delta_j|ca,cb;\rm{a},\mathbf{s},\mathbf{t}) & = & \sum_{i=1}^l \big[\vareps
且
\begin{eqnarray}
\varepsilon
(x)
=
\begin{cases}
\varepsilon
(x)
&
=
&
\begin{cases}
0
&
x
\leq
0
\\
1
&
x > 0
\end{cases}
...
...
@@ -362,7 +362,7 @@ s_1(\Delta_j|ca,cb;\rm{a},\mathbf{s},\mathbf{t}) & = & \sum_{i=1}^l \big[\vareps
对于目标语第
$
i
$
个cept.生成的其他单词(非第一个单词),可以得到:
\begin{eqnarray}
d
_{
>1
}
(
\Delta
_
j|cb)
=
\mu
_{
>1cb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_{
>1
}
(
\Delta
_
j|cb;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
d
_{
>1
}
(
\Delta
_
j|cb)
&
=
&
\mu
_{
>1cb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_{
>1
}
(
\Delta
_
j|cb;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
\label
{
eq:1.18
}
\end{eqnarray}
...
...
@@ -377,7 +377,7 @@ s_{>1}(\Delta_j|cb;\mathbf{a},\mathbf{s},\mathbf{t}) & = & \sum_{i=1}^l \big[\va
\noindent
这里,
$
ca
$
和
$
cb
$
分别表示目标语言和源语言的某个词类。模型4需要像模型3一样,通过定义一个词对齐集合
$
S
$
,使得每次迭代都在
$
S
$
上进行,进而降低运算量。模型4中
$
S
$
的定义为:
\begin{eqnarray}
\textrm
{
S
}
=
N(
\tilde
{
b
}^{
\infty
}
(V(
\mathbf
{
s
}
|
\mathbf
{
t
}
;2)))
\cup
(
\mathop
{
\cup
}
\limits
_{
ij
}
N(
\tilde
{
b
}_{
i
\leftrightarrow
j
}^{
\infty
}
(V
_{
i
\leftrightarrow
j
}
(
\mathbf
{
s
}
|
\mathbf
{
t
}
,2))))
\textrm
{
S
}
&
=
&
N(
\tilde
{
b
}^{
\infty
}
(V(
\mathbf
{
s
}
|
\mathbf
{
t
}
;2)))
\cup
(
\mathop
{
\cup
}
\limits
_{
ij
}
N(
\tilde
{
b
}_{
i
\leftrightarrow
j
}^{
\infty
}
(V
_{
i
\leftrightarrow
j
}
(
\mathbf
{
s
}
|
\mathbf
{
t
}
,2))))
\label
{
eq:1.22
}
\end{eqnarray}
...
...
@@ -392,7 +392,7 @@ s_{>1}(\Delta_j|cb;\mathbf{a},\mathbf{s},\mathbf{t}) & = & \sum_{i=1}^l \big[\va
\parinterval
模型5的参数估计过程也模型4的过程基本一致,二者的区别在于扭曲度的估计公式。在模型5中,对于目标语第
$
i
$
个cept.生成的第一单词,可以得到(假设有
$
K
$
个训练样本):
\begin{eqnarray}
d
_
1(
\Delta
_
j|cb)
=
\mu
_{
1cb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_
1(
\Delta
_
j|cb;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
d
_
1(
\Delta
_
j|cb)
&
=
&
\mu
_{
1cb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_
1(
\Delta
_
j|cb;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
\label
{
eq:1.23
}
\end{eqnarray}
...
...
@@ -408,7 +408,7 @@ s_1(\Delta_j|cb,v_x,v_y;\mathbf{a},\mathbf{s},\mathbf{t}) & = & \sum_{i=1}^l \Bi
对于目标语第
$
i
$
个cept.生成的其他单词(非第一个单词),可以得到:
\begin{eqnarray}
d
_{
>1
}
(
\Delta
_
j|cb,v)
=
\mu
_{
>1cb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_{
>1
}
(
\Delta
_
j|cb,v;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
d
_{
>1
}
(
\Delta
_
j|cb,v)
&
=
&
\mu
_{
>1cb
}^{
-1
}
\times
\sum
_{
k=1
}^{
K
}
c
_{
>1
}
(
\Delta
_
j|cb,v;
\mathbf
{
s
}^{
[k]
}
,
\mathbf
{
t
}^{
[k]
}
)
\label
{
eq:1.26
}
\end{eqnarray}
...
...
@@ -431,7 +431,7 @@ s_{>1}(\Delta_j|cb,v;\mathbf{a},\mathbf{s},\mathbf{t}) & = & \sum_{i=1}^l\Big[\v
\parinterval
在模型5中同样需要定义一个词对齐集合
$
S
$
,使得每次迭代都在
$
S
$
上进行。可以对
$
S
$
进行如下定义
\begin{eqnarray}
\textrm
{
S
}
=
N(
\tilde
{
\tilde
{
b
}}^{
\infty
}
(V(
\mathbf
{
s
}
|
\mathbf
{
t
}
;2)))
\cup
(
\mathop
{
\cup
}
\limits
_{
ij
}
N(
\tilde
{
\tilde
{
b
}}_{
i
\leftrightarrow
j
}^{
\infty
}
(V
_{
i
\leftrightarrow
j
}
(
\mathbf
{
s
}
|
\mathbf
{
t
}
,2))))
\textrm
{
S
}
&
=
&
N(
\tilde
{
\tilde
{
b
}}^{
\infty
}
(V(
\mathbf
{
s
}
|
\mathbf
{
t
}
;2)))
\cup
(
\mathop
{
\cup
}
\limits
_{
ij
}
N(
\tilde
{
\tilde
{
b
}}_{
i
\leftrightarrow
j
}^{
\infty
}
(V
_{
i
\leftrightarrow
j
}
(
\mathbf
{
s
}
|
\mathbf
{
t
}
,2))))
\label
{
eq:1.29
}
\end{eqnarray}
\vspace
{
0.5em
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论