Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
Toy-MT-Introduction
概览
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
单韦乔
Toy-MT-Introduction
Commits
75c98937
Commit
75c98937
authored
Mar 12, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates of section names (book)
parent
ff4b679a
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
21 行增加
和
16 行删除
+21
-16
Book/Chapter2/chapter2.tex
+2
-2
Book/Chapter3/Chapter3.tex
+3
-3
Book/Chapter6/Figures/figure-Comparison-of-the-number-of-padding-in-batch.tex
+16
-11
Book/mt-book-xelatex.tex
+0
-0
没有找到文件。
Book/Chapter2/chapter2.tex
查看文件 @
75c98937
...
...
@@ -642,12 +642,12 @@
\parinterval
当然,真正的分词系统还需要解决很多其它问题,比如使用动态规划等方法高效搜索最优解以及如何处理未见过的词等等,由于本节的重点是介绍中文分词的基础方法和统计建模思想,因此无法覆盖所有中文分词的技术内容,有兴趣的读者可以参考2.6节的相关文献做进一步深入研究。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section
{
语言建模
}
\index
{
Chapter2.4
}
\section
{
$
n
$
-gram语言模型
}
\index
{
Chapter2.4
}
\parinterval
在基于统计的汉语分词模型中,我们通过``大题小做''的技巧,利用独立性假设把整个句子的单词切分概率转化为每个单个词出现概率的乘积。这里,每个单词也被称作1-gram(或uni-gram),而1-gram概率的乘积实际上也是在度量词序列出现的可能性(记为
$
\textrm
{
P
}
(
w
_
1
w
_
2
...w
_
m
)
$
)。这种计算整个单词序列概率
$
\textrm
{
P
}
(
w
_
1
w
_
2
...w
_
m
)
$
的方法被称为统计语言模型。1-gram语言模型是最简单的一种语言模型,它没有考虑任何的上下文。很自然的一个问题是:能否考虑上下文信息构建更强大的语言模型,进而得到跟准确的分词结果。下面我们将进一步介绍更加通用的
$
n
$
-gram语言模型,它在机器翻译及其它自然语言处理任务中有更加广泛的应用。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
$
n
\textrm
{
-
gram
}$
语言模型
}
\index
{
Chapter2.4.1
}
\subsection
{
建模
}
\index
{
Chapter2.4.1
}
\parinterval
\textbf
{
语言模型(language model)
}
的目的是描述文字序列出现的规律。这个对问题建模的过程被称作
\textbf
{
语言建模(language modeling)
}
。如果使用统计建模的方式,语言模型可以被定义为计算
$
\textrm
{
P
}
(
w
_
1
w
_
2
...w
_
m
)
$
,也就是计算整个词序列
$
w
_
1
w
_
2
...w
_
m
$
出现的可能性大小。具体定义如下,
...
...
Book/Chapter3/Chapter3.tex
查看文件 @
75c98937
...
...
@@ -279,7 +279,7 @@
\parinterval
回到设计
$
g
(
\mathbf
{
s
}
,
\mathbf
{
t
}
)
$
的问题上。这里,我们采用``大题小作''的方法,这个技巧在第二章已经进行了充分的介绍。具体来说,直接建模句子之间的对应比较困难,但可以利用单词之间的对应来描述句子之间的对应关系。这就用到了上一小节所介绍的单词翻译概率。
\parinterval
我们首先引入一个非常重要的概念
\ \dash
\ \textbf
{
词对齐
}
,它是统计机器翻译中最核心的概念之一。词对齐描述了平行句对中单词之间的对应关系,它体现了一种观点:本质上句子之间的对应是由词之间的对应表示的。当然,这个观点在神经机器翻译或者其它模型中可能会有不同的理解,但是翻译句子的过程中我们考虑词级的对应关系是符合我们对语言的认知的。图
\ref
{
fig:3-7
}
展示了一个句对
$
\mathbf
{
s
}$
和
$
\mathbf
{
t
}$
,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子
$
\mathbf
{
s
}$
和
$
\mathbf
{
t
}$
中的词对齐关系。比如,``满意''的右下标数字5表示在句子
$
\mathbf
{
s
}$
中处于第5个位置,``satisfied''的右下标数字3表示在句子
$
\mathbf
{
t
}$
中处于第3个位置,``满意''和``satisfied''之间的虚线表示两个单词之间是对齐的。为方便描述,我们用二元组
$
(
j,i
)
$
来描述词对齐,它表示源语言句子的第
$
j
$
个单词对应目标语言句子的第
$
i
$
个单词,即单词
$
s
_
j
$
和
$
t
_
i
$
对应。通常,也会把
$
(
j,i
)
$
称作一条
\textbf
{
词对齐连接
}
。图
\ref
{
fig:3-7
}
中共有5条虚线,表示有5组单词之间的词对齐连接。我们把这些词对齐连接构成的集合作为词对齐的一种表示,记为
$
\mathbf
{
a
}$
,即
$
A
=
{
\{
(
1
,
1
)
,
(
2
,
4
)
,
(
3
,
5
)
,
(
4
,
2
)
,
(
5
,
3
)
}
\}
$
。
\parinterval
我们首先引入一个非常重要的概念
\ \dash
\ \textbf
{
词对齐
}
,它是统计机器翻译中最核心的概念之一。词对齐描述了平行句对中单词之间的对应关系,它体现了一种观点:本质上句子之间的对应是由词之间的对应表示的。当然,这个观点在神经机器翻译或者其它模型中可能会有不同的理解,但是翻译句子的过程中我们考虑词级的对应关系是符合我们对语言的认知的。图
\ref
{
fig:3-7
}
展示了一个句对
$
\mathbf
{
s
}$
和
$
\mathbf
{
t
}$
,单词的右下标数字表示了该词在句中的位置,而虚线表示的是句子
$
\mathbf
{
s
}$
和
$
\mathbf
{
t
}$
中的词对齐关系。比如,``满意''的右下标数字5表示在句子
$
\mathbf
{
s
}$
中处于第5个位置,``satisfied''的右下标数字3表示在句子
$
\mathbf
{
t
}$
中处于第3个位置,``满意''和``satisfied''之间的虚线表示两个单词之间是对齐的。为方便描述,我们用二元组
$
(
j,i
)
$
来描述词对齐,它表示源语言句子的第
$
j
$
个单词对应目标语言句子的第
$
i
$
个单词,即单词
$
s
_
j
$
和
$
t
_
i
$
对应。通常,也会把
$
(
j,i
)
$
称作一条
\textbf
{
词对齐连接
}
。图
\ref
{
fig:3-7
}
中共有5条虚线,表示有5组单词之间的词对齐连接。我们把这些词对齐连接构成的集合作为词对齐的一种表示,记为
$
\mathbf
{
a
}$
,即
$
A
=
{
\{
(
1
,
1
)
,
(
2
,
4
)
,
(
3
,
5
)
,
(
4
,
2
)(
5
,
3
)
}
\}
$
。
%----------------------------------------------
% 图3.11
\begin{figure}
[htp]
...
...
@@ -473,7 +473,7 @@ g(\mathbf{s},\mathbf{t}) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)}
实际上,在机器翻译中引入语言模型是一个很深刻的概念。在IBM模型之后相当长的时间里,语言模型一直是机器翻译各个部件中最重要的部分。即使现在机器翻译模型已经更新换代,对译文连贯性的建模也是所有系统中需要包含的内容(即使隐形体现)。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
建模
}
\index
{
Chapter3.3.2
}
\subsection
{
统计机器翻译的三个基本问题
}
\index
{
Chapter3.3.2
}
\parinterval
公式
\ref
{
eqC3.17-new
}
给出了统计机器翻译问题的数学描述。为了实现这个过程,面临着三个基本问题:
...
...
@@ -1135,7 +1135,7 @@ p_0+p_1 & = & 1 \label{eqC3.62-new}
\label
{
eqC3.66-new
}
\end{eqnarray}
\parinterval
这里,因子
$
1
-
\delta
(
v
_
i, v
_{
i
-
1
}
)
$
是用来判断第
$
i
$
个位置是不是为空。如果第
$
i
$
个位置为空则
$
v
_
i
=
v
_{
i
-
1
}$
,这样
$
\textrm
{
P
}
(
\pi
_{
[
j
]
1
}
=
i|
\pi
_
1
^{
[
j
]-
1
}
,
\tau
_
0
^
l,
\varphi
_
0
^
l,
\mathbf
{
t
}
)
=
0
$
。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有
$
v
_
i
$
,
$
B
(
f
_
i
)
$
和
$
v
_{
i
-
1
}$
。此外还要考虑在
$
i
$
位置放置了第一个单词以后它的右边是不是还有足够的位置留给剩下的
$
k
-
1
$
个单词。参数
$
v
_
m
-
\varphi
_{
[
j
]
}
+
1
$
就是为了考虑这个因素,这里
$
v
_
m
$
表示整个源语言言句子中还有多少空位置,
$
\varphi
_{
[
j
]
}
-
1
$
表示
$
i
$
位置右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数
$
v
_
i
-
v
_{
\varphi
_{
[
j
]
}
k
-
1
}$
上。式
\ref
{
eqC3.66-new
}
的其它部分都可以用上面的理论解释,这里不再赘述。
\parinterval
这里,因子
$
1
-
\delta
(
v
_
i, v
_{
i
-
1
}
)
$
是用来判断第
$
i
$
个位置是不是为空。如果第
$
i
$
个位置为空则
$
v
_
i
=
v
_{
i
-
1
}$
,这样
$
\textrm
{
P
}
(
\pi
_{
[
j
]
1
}
=
i|
\pi
_
1
^{
[
j
]-
1
}
,
\tau
_
0
^
l,
\varphi
_
0
^
l,
\mathbf
{
t
}
)
=
0
$
。这样就从模型上避免了模型3和模型4中生成不存在的字符串的问题。这里还要注意的是,对于放置第一个单词的情况,影响放置的因素有
$
v
_
i
$
,
$
B
(
f
_
i
)
$
和
$
v
_{
i
-
1
}$
。此外还要考虑在
$
i
$
位置放置了第一个单词以后它的右边是不是还有足够的位置留给剩下的
$
k
-
1
$
个单词。参数
$
v
_
m
-
\varphi
_{
[
j
]
}
+
1
$
就是为了考虑这个因素,这里
$
v
_
m
$
表示整个源语言言句子中还有多少空位置,
$
\varphi
_{
[
j
]
}
-
1
$
表示
$
i
$
位置右边至少还要留出的空格数。对于放置非第一个单词的情况,主要是要考虑它和前一个放置位置的相对位置。这主要体现在参数
$
v
_
i
-
v
_{
\varphi
_{
[
j
]
}
k
-
1
}$
上。式
4.99
的其它部分都可以用上面的理论解释,这里不再赘述。
\parinterval
实际上,模型5和模型4的思想基本一致,即,先确定
$
\tau
_{
[
j
]
1
}$
的绝对位置,然后再确定
$
\tau
_{
[
j
]
}$
中剩余单词的相对位置。模型5消除了产生不存在的句子的可能性,不过模型5的复杂性也大大增加了。
...
...
Book/Chapter6/Figures/figure-Comparison-of-the-number-of-padding-in-batch.tex
查看文件 @
75c98937
...
...
@@ -3,27 +3,32 @@
\begin{tikzpicture}
\begin{scope}
[scale=1.5]
{
\Large
\tikzstyle
{
snode
}
= [draw,inner sep=1pt,minimum width=3em,minimum height=0.5em,rounded corners=1pt,fill=green!30!white]
\tikzstyle
{
pnode
}
= [draw,inner sep=1pt,minimum width=1em,minimum height=0.5em,rounded corners=1pt]
\node
[anchor=west,snode] (s1) at (0,0)
{
\tiny
{}
}
;
\node
[anchor=north west,snode,minimum width=6.
3em] (s2) at ([yshift=-0.3em]s1.south west)
{
\tiny
{}
}
;
\node
[anchor=north west,snode,minimum width=2em] (s3) at ([yshift=-0.3em]s2.south west)
{
\tiny
{}
}
;
\node
[anchor=west,snode] (s1) at (0,0)
{}
;
\node
[anchor=north west,snode,minimum width=6.
5em] (s2) at ([yshift=-0.3em]s1.south west)
{
}
;
\node
[anchor=north west,snode,minimum width=2em] (s3) at ([yshift=-0.3em]s2.south west)
{}
;
\node
[anchor=east] (label1) at ([xshift=-0.8em,yshift=0.6em]s1.west)
{
\scriptsize
{
Shuffle:
}}
;
\node
[anchor=east] (label1) at ([xshift=-0.8em,yshift=0.6em]s1.west)
{
\scriptsize
{
Shuffle
d
:
}}
;
\node
[anchor=west,pnode,minimum width=3em] (p1) at ([xshift=0.3em]s1.east)
{
\tiny
{}
}
;
\node
[anchor=west,pnode,minimum width=4em] (p3) at ([xshift=0.3em]s3.east)
{
\tiny
{}
}
;
\node
[anchor=west,pnode,minimum width=3em] (p1) at ([xshift=0.3em]s1.east)
{}
;
\node
[anchor=west,pnode,minimum width=4em] (p3) at ([xshift=0.3em]s3.east)
{}
;
\node
[anchor=west,snode,minimum width=5em] (s4) at ([xshift=
6em]p1.east)
{
\tiny
{}
}
;
\node
[anchor=north west,snode,minimum width=5em] (s5) at ([yshift=-0.3em]s4.south west)
{
\tiny
{}
}
;
\node
[anchor=north west,snode,minimum width=6.
3em] (s6) at ([yshift=-0.3em]s5.south west)
{
\tiny
{}
}
;
\node
[anchor=west,snode,minimum width=5em] (s4) at ([xshift=
4em]p1.east)
{
}
;
\node
[anchor=north west,snode,minimum width=5em] (s5) at ([yshift=-0.3em]s4.south west)
{}
;
\node
[anchor=north west,snode,minimum width=6.
5em] (s6) at ([yshift=-0.3em]s5.south west)
{
}
;
\node
[anchor=east] (label2) at ([xshift=-0.8em,yshift=0.6em]s4.west)
{
\scriptsize
{
Sorted:
}}
;
\node
[anchor=west,pnode,minimum width=1em] (p4) at ([xshift=0.3em]s4.east)
{
\tiny
{}
}
;
\node
[anchor=west,pnode,minimum width=1em] (p5) at ([xshift=0.3em]s5.east)
{
\tiny
{}
}
;
\node
[anchor=west,pnode,minimum width=1em] (p4) at ([xshift=0.3em]s4.east)
{}
;
\node
[anchor=west,pnode,minimum width=1em] (p5) at ([xshift=0.3em]s5.east)
{}
;
\node
[rectangle,inner sep=0.5em,rounded corners=2pt,very thick,dotted,draw=ugreen!80] [fit = (s1) (s3) (p1) (p3)] (box0)
{}
;
\node
[rectangle,inner sep=0.5em,rounded corners=2pt,very thick,dotted,draw=ugreen!80] [fit = (s4) (s6) (p4) (p5)] (box0)
{}
;
}
\end{scope}
\end{tikzpicture}
Book/mt-book-xelatex.tex
查看文件 @
75c98937
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论