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
99f5a117
Commit
99f5a117
authored
Jan 13, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parsing = string-based decoding
parent
c36bc0ad
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
190 行增加
和
155 行删除
+190
-155
Section04-Phrasal-and-Syntactic-Models/section04-test.tex
+70
-153
Section04-Phrasal-and-Syntactic-Models/section04.tex
+116
-1
Section06-Neural-Machine-Translation/section06.tex
+4
-1
没有找到文件。
Section04-Phrasal-and-Syntactic-Models/section04-test.tex
查看文件 @
99f5a117
...
...
@@ -152,201 +152,118 @@
\subsection
{
规则匹配
}
%%%------------------------------------------------------------------------------------------------------------
%%% 基于树的解码方法 - chart-based decoding
\begin{frame}
{
基于树的解码 - 基于chart的方法
}
%%% 基于串的解码方法
\begin{frame}
{
基于串的解码
}
\begin{itemize}
\item
基于chart这种结构,可以很容易的构建解码所用的超图。常用的方法是自底向上解码:
\item
不同于基于树的解码,
\alert
{
基于串的解码
}
方法并不要求输入句法树,它直接对输入词串进行翻译,最终得到译文。
\begin{itemize}
\item
从源语言句法树的叶子节点开始,自下而上访问树的节点
\item
对于每个跨度,如果对应一个树节点,则匹配相应的规则
\item
从树的根节点可以得到翻译推导,最终选择最优推导所对应的译文输出
\item
这种方法适用于树到串、串到树、树到树等多种模型
\item
本质上,由于并不受固定输入的句法树约束,基于串的解码可以探索更多潜在的树结构,这也增大了搜索空间(相比基于串的解码),因此该方法更有可能找到高质量翻译结果
\end{itemize}
\item
<2-> 在基于串的方法中,句法结构被看做是翻译的隐含变量,而非线性的输入和输出。比如,层次短语翻译解码就是一种典型的基于串的解码方法,所有的翻译推导在翻译过程里动态生成,但是并不要输入或者输出这些推导所对应的层次结构
\end{itemize}
\visible
<2->
{
\begin{minipage}
[b]
{
0.42
\linewidth
}
\begin{center}
\begin{tikzpicture}
\begin{scope}
\tikzstyle
{
chartnode
}
=[rectangle,minimum size=1.3em,draw]
\node
[chartnode,anchor=north west] (cell11) at (0,0)
{}
;
\node
[chartnode,anchor=north west] (cell21) at ([yshift=-0em]cell11.south west)
{}
;
\node
[chartnode,anchor=west] (cell22) at (cell21.east)
{}
;
\node
[chartnode,anchor=north west] (cell31) at ([yshift=-0em]cell21.south west)
{}
;
\node
[chartnode,anchor=west] (cell32) at (cell31.east)
{}
;
\node
[chartnode,anchor=west] (cell33) at (cell32.east)
{}
;
\node
[chartnode,anchor=north west] (cell41) at ([yshift=-0em]cell31.south west)
{}
;
\node
[chartnode,anchor=west] (cell42) at (cell41.east)
{}
;
\node
[chartnode,anchor=west] (cell43) at (cell42.east)
{}
;
\node
[chartnode,anchor=west] (cell44) at (cell43.east)
{}
;
\tikzstyle
{
chartnode2
}
=[rectangle,minimum size=1.3em,fill=orange!20]
\node
<3-> [chartnode2,anchor=north west] (cell11) at (0,0)
{}
;
\node
<4-> [chartnode2,anchor=north west] (cell21) at ([yshift=-0em]cell11.south west)
{}
;
\node
<7-> [chartnode2,anchor=west] (cell22) at (cell21.east)
{}
;
\node
<5-> [chartnode2,anchor=north west] (cell31) at ([yshift=-0em]cell21.south west)
{}
;
\node
<8-> [chartnode2,anchor=west] (cell32) at (cell31.east)
{}
;
\node
<10-> [chartnode2,anchor=west] (cell33) at (cell32.east)
{}
;
\node
<6-> [chartnode2,anchor=north west] (cell41) at ([yshift=-0em]cell31.south west)
{}
;
\node
<9-> [chartnode2,anchor=west] (cell42) at (cell41.east)
{}
;
\node
<11-> [chartnode2,anchor=west] (cell43) at (cell42.east)
{}
;
\node
<12-> [chartnode2,anchor=west] (cell44) at (cell43.east)
{}
;
\node
[anchor=east] (s1) at (cell11.west)
{
\scriptsize
{
猫
}}
;
\node
[anchor=east] (s2) at (cell21.west)
{
\scriptsize
{
喜欢
}}
;
\node
[anchor=east] (s3) at (cell31.west)
{
\scriptsize
{
吃
}}
;
\node
[anchor=east] (s4) at (cell41.west)
{
\scriptsize
{
鱼
}}
;
\node
[anchor=north] (t5) at (cell41.south)
{
\tiny
{$
l
$
=1
}}
;
\node
[anchor=north] (t5) at (cell42.south)
{
\tiny
{$
l
$
=2
}}
;
\node
[anchor=north] (t5) at (cell43.south)
{
\tiny
{$
l
$
=3
}}
;
\node
[anchor=north] (t5) at (cell44.south)
{
\tiny
{$
l
$
=4
}}
;
\node
[anchor=north] (chartlabel) at ([yshift=-1em]cell42.south east)
{
\footnotesize
{
\textbf
{
chart
}}}
;
\node
[anchor=north west] (w1) at ([yshift=-2.5em,xshift=-2.0em]cell41.south west)
{
猫
}
;
\node
[anchor=west] (w2) at ([xshift=0.3em]w1.east)
{
喜欢
}
;
\node
[anchor=west] (w3) at ([xshift=0.3em]w2.east)
{
吃
}
;
\node
[anchor=west] (w4) at ([xshift=0.3em]w3.east)
{
鱼
}
;
\node
[anchor=north east] (p0) at ([xshift=0.3em]w1.south west)
{
\blue
{
0
}}
;
\node
[anchor=north east] (p1) at ([xshift=0.3em]w2.south west)
{
\blue
{
1
}}
;
\node
[anchor=north east] (p2) at ([xshift=0.3em]w3.south west)
{
\blue
{
2
}}
;
\node
[anchor=north east] (p3) at ([xshift=0.3em]w4.south west)
{
\blue
{
3
}}
;
\node
[anchor=north west] (p4) at ([xshift=-0.4em]w4.south east)
{
\blue
{
4
}}
;
\node
[anchor=north] (slabel) at (p2.south)
{
\scriptsize
{
\textbf
{
源语言句子
}}}
;
\begin{scope}
[scale=0.9,level distance=15pt,sibling distance=0pt]
\end{scope}
{
\scriptsize
\Tree
[.
\node
(bsn0)
{
IP
}
;
[.
\node
(bsn1)
{
NP
}
;
[.
\node
(bsn2)
{
NN
}
;
\node
(bsw1)
{
猫
}
; ]
]
[.
\node
(bsn3)
{
VP
}
;
[.
\node
(bsn4)
{
VV
}
;
\node
(bsw2)
{
喜欢
}
; ]
[.
\node
(bsn5)
{
VP
}
;
\edge
[roof]
;
\node
(bsw3)
{
吃
\
鱼
}
; ]
]
]
\end{tikzpicture}
\end{center}
\node
[anchor=west] (target) at ([xshift=1em]bsw3.east)
{
Cats like eating fish
}
;
\node
[anchor=north,inner sep=3pt] (cap1) at (target.south west)
{
(a) 基于树的解码
}
;
\draw
[->,thick] (bsw3.east) -- (target.west);
\node
[anchor=west] (sourcelabel) at ([xshift=2em]bsn0.east)
{
显式输入的结构
}
;
\node
[anchor=west] (source2) at ([xshift=2em]target.east)
{
猫 喜欢 吃 鱼
}
;
\node
[anchor=west] (target2) at ([xshift=1em]source2.east)
{
Cats like eating fish
}
;
\node
[anchor=north,inner sep=3pt] (cap2) at (target2.south west)
{
(b) 基于串的解码
}
;
\draw
[->,thick] (source2.east) -- (target2.west);
\begin{scope}
[xshift=2.45in,sibling distance=3pt]
\Tree
[.
\node
(bsn0)
{
IP
}
;
[.
\node
(bsn1)
{
NP
}
;
[.
\node
(bsn2)
{
NN
}
; ]
]
[.
\node
(bsn3)
{
VP
}
;
[.
\node
(bsn4)
{
VV
}
; ]
[.
\node
(bsn5)
{
VP
}
; ]
]
]
\begin{pgfonlayer}
{
background
}
\node
[draw,dashed,inner sep=2pt] (box) [fit = (bsn0) (bsn1) (bsn2) (bsn3) (bsn4) (bsn5)]
{}
;
\node
[anchor=north west] (boxlabel) at (box.north east)
{
隐含结构
}
;
\end{pgfonlayer}
\end{minipage}
\begin{minipage}
[b]
{
0.55
\linewidth
}
\end{scope}
{
\footnotesize
\visible
<3->
{
\begin{tabular}
{
l l l l
}
\visible
<3->
{
序号
}
&
\visible
<3->
{
跨度
}
&
\visible
<3->
{
标记
}
&
\visible
<3->
{
源语句子片段
}
\\
\hline
\visible
<3->
{
1
}
&
\visible
<3->
{
[
{
\blue
0
}
,
{
\blue
1
}
]
}
&
\visible
<3->
{
NN
\&
NP
}
&
\visible
<3->
{
猫
}
\\
\visible
<4->
{
2
}
&
\visible
<4->
{
[
{
\blue
1
}
,
{
\blue
2
}
]
}
&
\visible
<4->
{
VV
}
&
\visible
<4->
{
喜欢
}
\\
\visible
<5->
{
3
}
&
\visible
<5->
{
[
{
\blue
2
}
,
{
\blue
5
}
]
}
&
\visible
<5->
{
VV
}
&
\visible
<5->
{
吃
}
\\
\visible
<6->
{
4
}
&
\visible
<6->
{
[
{
\blue
3
}
,
{
\blue
6
}
]
}
&
\visible
<6->
{
NN
\&
NP
}
&
\visible
<6->
{
鱼
}
\\
\visible
<7->
{
5
}
&
\visible
<7->
{
[
{
\blue
0
}
,
{
\blue
2
}
]
}
&
\visible
<7->
{
N/A
}
&
\visible
<7->
{
猫 喜欢
}
\\
\visible
<8->
{
6
}
&
\visible
<8->
{
[
{
\blue
1
}
,
{
\blue
3
}
]
}
&
\visible
<8->
{
N/A
}
&
\visible
<8->
{
喜欢 吃
}
\\
\visible
<9->
{
7
}
&
\visible
<9->
{
[
{
\blue
2
}
,
{
\blue
4
}
]
}
&
\visible
<9->
{
VP
}
&
\visible
<9->
{
吃 鱼
}
\\
\visible
<10->
{
8
}
&
\visible
<10->
{
[
{
\blue
0
}
,
{
\blue
3
}
]
}
&
\visible
<10->
{
N/A
}
&
\visible
<10->
{
猫 喜欢 吃
}
\\
\visible
<11->
{
9
}
&
\visible
<11->
{
[
{
\blue
1
}
,
{
\blue
4
}
]
}
&
\visible
<11->
{
VP
}
&
\visible
<11->
{
喜欢 吃 鱼
}
\\
\visible
<12->
{
10
}
&
\visible
<12->
{
[
{
\blue
0
}
,
{
\blue
4
}
]
}
&
\visible
<12->
{
IP (
\alert
{
root
}
)
}
&
\visible
<12->
{
猫 喜欢 吃 鱼
}
\\
\\
\end{tabular}
}
}
\end{minipage}
\end{scope}
\end{tikzpicture}
\end{center}
}
\end{frame}
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
规则使用 - 基于树的匹配
\begin{frame}
{
使用树结构匹配树到串规则
}
%%%
------------------------------------------------------------------------------------------------------------
%%%
基于串的解码方法本质上和句法分析一样
\begin{frame}
{
基于串的解码
$
\approx
$
句法分析
}
\begin{itemize}
\item
对于规则的源语言部分,可以使用树片段的匹配找到可以使用这条规则位置
\begin{itemize}
\item
匹配的规则会被存入相应的表格单元中
\end{itemize}
\item
基于串的翻译和传统
\alert
{
句法分析
}
的任务很像:对于一个输入的词串,找到生成这个词串的最佳推导。唯一不同的地方,在于机器翻译需要考虑译文的生成(语言模型的引入会使问题稍微复杂一些),但是源语言部分的处理和句法分析一模一样
\item
<2-> 这个过程仍然可以用基于chart的方法实现,即对于每一个源语言片段,都匹配可能的翻译规则,之后填入相应的表格单元,这也构成了一个超图,最佳推导可以从这个超图得到
\end{itemize}
\vspace
{
-2em
}
\visible
<2->
{
\begin{center}
\begin{tikzpicture}
\begin{scope}
{
\scriptsize
\begin{scope}
[sibling distance=2pt,level distance=20pt,grow'=up]
\Tree
[.
\node
(treeroot)
{
IP
}
;
[.NP [.NR 阿都拉
$_
1
$
]]
[.
\node
(tn1)
{
VP
}
;
[.
\node
(tn2)
{
PP
}
;
[.
\node
(tn3)
{
P
}
;
\node
(cw1)
{
对
$_
2
$}
; ]
[.
\node
(tn4)
{
NP
}
;
\edge
[roof]
;
{
自己
$_
3
$
四
$_
4
$
\
个
$_
5
$
\
多
$_
6
$
\
月
$_
7
$
\
以来
$_
8
$
\
的
$_
9
$
\
施政
$_{
10
}$
\
表现
$_{
11
}$}
]
]
[.
\node
(tn5)
{
VP
}
;
[.VV 感到
$_{
12
}$
]
[.NN 满意
$_{
13
}$
]
]
]
]
\end{scope}
\visible
<2->
{
\node
[anchor=west,fill=green!20!white] (rulepart1) at ([yshift=2.0in,xshift=-1.3in]treeroot.east)
{
VP(PP(P(对) NP
$_
1
$
) VP
$_
2
$
)
}
;
\node
[anchor=north west] (rulepart2) at (rulepart1.south west)
{$
\to
$
VP
$_
2
$
with NP
$_
1
$}
;
}
\node
[anchor=west] (sw1) at (0,0)
{
阿都拉
$_
1
$}
;
\node
[anchor=west] (sw2) at ([xshift=0.1em]sw1.east)
{
对
$_
2
$}
;
\node
[anchor=west] (sw3) at ([xshift=0.1em]sw2.east)
{
自己
$_
3
$
四
$_
4
$
\
个
$_
5
$
\
多
$_
6
$
\
月
$_
7
$
\
以来
$_
8
$
\
的
$_
9
$
\
施政
$_{
10
}$
\
表现
$_{
11
}$}
;
\node
[anchor=west] (sw4) at ([xshift=0.2em]sw3.east)
{
感到
$_{
12
}$
满意
$_{
13
}$}
;
\begin{pgfonlayer}
{
background
}
\visible
<2->
{
\node
[rectangle,draw,inner sep=2pt]
[fit = (rulepart1) (rulepart2)] (rulemark)
{}
;
}
\end{pgfonlayer}
\visible
<2->
{
\node
[anchor=south west] at (rulemark.north west)
{
\tiny
{
\textbf
{
树到串翻译规则
}}}
;
}
}
\begin{scope}
[xshift=1.5in,yshift=1.6in]
\visible
<3->
{
\node
[anchor=center, minimum size=10pt,draw]
(cell1and1) at (0,0)
{}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell2and1) at ([xshift=10pt]cell1and1.center)
{}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell3and1) at ([xshift=10pt]cell2and1.center)
{}
;
\node
[anchor=center, minimum size=10pt]
(cell4and1) at ([xshift=15pt]cell3and1.center)
{
\tiny
{$
\dots
$}}
;
\node
[anchor=center, minimum size=10pt,draw]
(cellnand1) at ([xshift=13pt]cell4and1.center)
{}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell1and2) at ([yshift=10pt]cell1and1.center)
{}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell2and2) at ([xshift=10pt]cell1and2.center)
{}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell1and3) at ([yshift=10pt]cell1and2.center)
{}
;
\node
[anchor=center, minimum size=10pt]
(cell1and4) at ([yshift=20pt]cell1and3.center)
{
\tiny
{$
\vdots
$}}
;
\node
[anchor=center, minimum size=10pt]
(cell2and3) at ([yshift=20pt]cell2and2.center)
{
\tiny
{$
\vdots
$}}
;
\node
[anchor=center, minimum size=10pt]
(cell3and2) at ([yshift=20pt]cell3and1.center)
{
\tiny
{$
\vdots
$}}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell4andn) at ([yshift=20pt,xshift=10pt]cell3and1.center)
{}
;
%\node[anchor=center, minimum size=10pt] (cell4and2) at ([yshift=20pt]cell4and1.center) {\tiny{$\ddots$}};
\node
[anchor=center, minimum size=10pt,draw]
(cell1andn) at ([yshift=10pt]cell1and4.center)
{}
;
\node
[anchor=center, minimum size=10pt,draw]
(cell2andn) at ([xshift=10pt,yshift=-10pt]cell1andn.center)
{}
;
%\node[anchor=center, minimum size=10pt,draw] (cell3andn) at ([xshift=10pt,yshift=-10pt]cell2andn.center) {};
\node
[anchor=west]
(chartlabel) at ([xshift=-0em,yshift=-0.8em]cell1and1.south east)
{
\scriptsize
{
Chart
}}
;
\node
[fill=red!20,inner sep=0pt] (box1) [fit = (sw1)]
{}
;
\node
[fill=green!20,inner sep=0pt] (box2) [fit = (sw3)]
{}
;
\node
[fill=orange!20,inner sep=0pt] (box3) [fit = (sw4)]
{}
;
\node
[anchor=south,align=center] (box1label) at (box1.north)
{
[
{
\blue
0
}
,
{
\blue
1
}
]
\\
VP
}
;
\node
[anchor=south,align=center] (box2label) at (box2.north)
{
[
{
\blue
2
}
,
{
\blue
11
}
]
\\
NP
}
;
\node
[anchor=south,align=center] (box3label) at (box3.north)
{
[
{
\blue
11
}
,
{
\blue
13
}
]
\\
VP
}
;
}
\end{
scope
}
\end{
pgfonlayer
}
\visible
<3->
{
\path
[draw,thick,blue,->,dashed] (rulemark.north east) .. controls +(60:2.0) and +(north east:1.5) .. ([yshift=0.05em,xshift=0.05em]cell4andn.north east) node[pos=0.25, below,yshift=-0.2em] (spanlabel)
{}
;
}
\draw
[decorate,decoration={brace,mirror,,amplitude=3mm}]
(sw1.south west) -- (sw4.south east);
\node
[anchor=north] (label) at ([yshift=-1em]sw3.south)
{
在跨度[
{
\blue
0
}
,
{
\blue
13
}
]上进行规则匹配
}
;
\node
[anchor=north] (rule) at ([yshift=-0.3em]label.south)
{{
\footnotesize
比如:IP(
{
\color
{
red
}
NP
$_
1
$}
VP(PP(P(对)
{
\color
{
ugreen
}
NP
$_
2
$}
)
{
\color
{
orange
}
VP
$_
3
$}
))
}}
;
\node
[anchor=north west] (rule2) at ([yshift=0.2em]rule.south west)
{{
\footnotesize
\hspace
{
2.8em
}
$
\to
$
NP
$_
1
$
VP
$_
3
$
with NP
$_
2
$}}
;
\begin{pgfonlayer}
{
background
}
\visible
<2->
{
\path
[fill=green!20] (tn1.south west) -- ([yshift=0.2em]tn2.south west) -- ([yshift=0.2em,xshift=-0.30em]tn3.south west) -- (cw1.north west) -- (cw1.north east) -- ([xshift=0.30em]tn3.north east) -- (tn4.north east) -- (tn4.south east) -- ([xshift=0.5em]tn2.north east) -- (tn5.north east)-- ([yshift=0.2em]tn5.south east) -- (tn1.south east) -- (tn1.south west);
}
\end{pgfonlayer}
\visible
<2->
{
\path
[draw,thick,blue,<->] ([xshift=-2em]rulepart1.south east) .. controls +(south:1.7) and +(north:1.3) .. ([xshift=0em,yshift=0.10em]cw1.north) node[pos=0.5, below,xshift=0.3in]
{
\scriptsize
{
树片段的匹配
}}
;
}
\end{scope}
\end{tikzpicture}
\end{center}
}
\end{frame}
...
...
Section04-Phrasal-and-Syntactic-Models/section04.tex
查看文件 @
99f5a117
...
...
@@ -4485,7 +4485,7 @@ NP-BAR(NN$_1$ NP-BAR$_2$) $\to$ NN$_1$ NP-BAR$_2$
%%% 基于树的解码方法 - 超图
\begin
{
frame
}{
基于树的解码
-
超图
}
\begin
{
itemize
}
\item
如果源语言输入的是句法树,
基于树的解码
会找到一个推导覆盖整个句法树,之后输出所对应的目标语词串作为译文
\item
如果源语言输入的是句法树,
\alert
{
基于树的解码
}
会找到一个推导覆盖整个句法树,之后输出所对应的目标语词串作为译文
\item
比如,可以从树的叶子结点开始,找到所有能匹配到这个节点的规则,当所有节点匹配完之后,本质上获得了一个超图
\begin
{
itemize
}
\item
<
2
-
> 图的节点对应一个句法树句法节点
...
...
@@ -4808,6 +4808,121 @@ NP-BAR(NN$_1$ NP-BAR$_2$) $\to$ NN$_1$ NP-BAR$_2$
\end
{
frame
}
%%%------------------------------------------------------------------------------------------------------------
%%% 基于串的解码方法
\begin
{
frame
}{
基于串的解码
}
\begin
{
itemize
}
\item
不同于基于树的解码,
\alert
{
基于串的解码
}
方法并不要求输入句法树,它直接对输入词串进行翻译,最终得到译文。
\begin
{
itemize
}
\item
这种方法适用于树到串、串到树、树到树等多种模型
\item
本质上,由于并不受固定输入的句法树约束,基于串的解码可以探索更多潜在的树结构,这也增大了搜索空间
(
相比基于串的解码
)
,因此该方法更有可能找到高质量翻译结果
\end
{
itemize
}
\item
<
2
-
> 在基于串的方法中,句法结构被看做是翻译的隐含变量,而非线性的输入和输出。比如,层次短语翻译解码就是一种典型的基于串的解码方法,所有的翻译推导在翻译过程里动态生成,但是并不要输入或者输出这些推导所对应的层次结构
\end
{
itemize
}
\visible
<
2
-
>
{
\begin
{
center
}
\begin
{
tikzpicture
}
\begin
{
scope
}
[
scale
=
0
.
9
,level distance
=
15
pt,sibling distance
=
0
pt
]
{
\scriptsize
\Tree
[
.
\node
(
bsn
0
)
{
IP
}
;
[
.
\node
(
bsn
1
)
{
NP
}
;
[
.
\node
(
bsn
2
)
{
NN
}
;
\node
(
bsw
1
)
{
猫
}
;
]
]
[
.
\node
(
bsn
3
)
{
VP
}
;
[
.
\node
(
bsn
4
)
{
VV
}
;
\node
(
bsw
2
)
{
喜欢
}
;
]
[
.
\node
(
bsn
5
)
{
VP
}
;
\edge
[
roof
]
;
\node
(
bsw
3
)
{
吃
\
鱼
}
;
]
]
]
\node
[
anchor
=
west
]
(
target
)
at
([
xshift
=
1
em
]
bsw
3
.east
)
{
Cats like eating fish
}
;
\node
[
anchor
=
north,inner sep
=
3
pt
]
(
cap
1
)
at
(
target.south west
)
{
(
a
)
基于树的解码
}
;
\draw
[-
>,thick
]
(
bsw
3
.east
)
--
(
target.west
)
;
\node
[
anchor
=
west
]
(
sourcelabel
)
at
([
xshift
=
2
em
]
bsn
0
.east
)
{
显式输入的结构
}
;
\node
[
anchor
=
west
]
(
source
2
)
at
([
xshift
=
2
em
]
target.east
)
{
猫 喜欢 吃 鱼
}
;
\node
[
anchor
=
west
]
(
target
2
)
at
([
xshift
=
1
em
]
source
2
.east
)
{
Cats like eating fish
}
;
\node
[
anchor
=
north,inner sep
=
3
pt
]
(
cap
2
)
at
(
target
2
.south west
)
{
(
b
)
基于串的解码
}
;
\draw
[-
>,thick
]
(
source
2
.east
)
--
(
target
2
.west
)
;
\begin
{
scope
}
[
xshift
=
2
.
45
in,sibling distance
=
3
pt
]
\Tree
[
.
\node
(
bsn
0
)
{
IP
}
;
[
.
\node
(
bsn
1
)
{
NP
}
;
[
.
\node
(
bsn
2
)
{
NN
}
;
]
]
[
.
\node
(
bsn
3
)
{
VP
}
;
[
.
\node
(
bsn
4
)
{
VV
}
;
]
[
.
\node
(
bsn
5
)
{
VP
}
;
]
]
]
\begin
{
pgfonlayer
}{
background
}
\node
[
draw,dashed,inner sep
=
2
pt
]
(
box
)
[
fit
=
(
bsn
0
)
(
bsn
1
)
(
bsn
2
)
(
bsn
3
)
(
bsn
4
)
(
bsn
5
)]
{}
;
\node
[
anchor
=
north west
]
(
boxlabel
)
at
(
box.north east
)
{
隐含结构
}
;
\end
{
pgfonlayer
}
\end
{
scope
}
}
\end
{
scope
}
\end
{
tikzpicture
}
\end
{
center
}
}
\end
{
frame
}
%%%------------------------------------------------------------------------------------------------------------
%%% 基于串的解码方法本质上和句法分析一样
\begin
{
frame
}{
基于串的解码
$
\approx
$
句法分析
}
\begin
{
itemize
}
\item
基于串的翻译和传统
\alert
{
句法分析
}
的任务很像:对于一个输入的词串,找到生成这个词串的最佳推导。唯一不同的地方,在于机器翻译需要考虑译文的生成
(
语言模型的引入会使问题稍微复杂一些
)
,但是源语言部分的处理和句法分析一模一样
\item
<
2
-
> 这个过程仍然可以用基于chart的方法实现,即对于每一个源语言片段,都匹配可能的翻译规则,之后填入相应的表格单元,这也构成了一个超图,最佳推导可以从这个超图得到
\end
{
itemize
}
\visible
<
2
-
>
{
\begin
{
center
}
\begin
{
tikzpicture
}
\begin
{
scope
}
{
\scriptsize
\node
[
anchor
=
west
]
(
sw
1
)
at
(
0
,
0
)
{
阿都拉
$_
1
$}
;
\node
[
anchor
=
west
]
(
sw
2
)
at
([
xshift
=
0
.
1
em
]
sw
1
.east
)
{
对
$_
2
$}
;
\node
[
anchor
=
west
]
(
sw
3
)
at
([
xshift
=
0
.
1
em
]
sw
2
.east
)
{
自己
$_
3
$
四
$_
4
$
\
个
$_
5
$
\
多
$_
6
$
\
月
$_
7
$
\
以来
$_
8
$
\
的
$_
9
$
\
施政
$_{
10
}$
\
表现
$_{
11
}$}
;
\node
[
anchor
=
west
]
(
sw
4
)
at
([
xshift
=
0
.
2
em
]
sw
3
.east
)
{
感到
$_{
12
}$
满意
$_{
13
}$}
;
\begin
{
pgfonlayer
}{
background
}
\visible
<
3
-
>
{
\node
[
fill
=
red
!
20
,inner sep
=
0
pt
]
(
box
1
)
[
fit
=
(
sw
1
)]
{}
;
\node
[
fill
=
green
!
20
,inner sep
=
0
pt
]
(
box
2
)
[
fit
=
(
sw
3
)]
{}
;
\node
[
fill
=
orange
!
20
,inner sep
=
0
pt
]
(
box
3
)
[
fit
=
(
sw
4
)]
{}
;
\node
[
anchor
=
south,align
=
center
]
(
box
1
label
)
at
(
box
1
.north
)
{
[
{
\blue
0
}
,
{
\blue
1
}
]
\\
VP
}
;
\node
[
anchor
=
south,align
=
center
]
(
box
2
label
)
at
(
box
2
.north
)
{
[
{
\blue
2
}
,
{
\blue
11
}
]
\\
NP
}
;
\node
[
anchor
=
south,align
=
center
]
(
box
3
label
)
at
(
box
3
.north
)
{
[
{
\blue
11
}
,
{
\blue
13
}
]
\\
VP
}
;
}
\end
{
pgfonlayer
}
\draw
[
decorate,decoration
=
{
brace,mirror,,amplitude
=
3
mm
}
]
(
sw
1
.south west
)
--
(
sw
4
.south east
)
;
\node
[
anchor
=
north
]
(
label
)
at
([
yshift
=-
1
em
]
sw
3
.south
)
{
在跨度
[
{
\blue
0
}
,
{
\blue
13
}
]
上进行规则匹配
}
;
\node
[
anchor
=
north
]
(
rule
)
at
([
yshift
=-
0
.
3
em
]
label.south
)
{{
\footnotesize
比如:IP
(
{
\color
{
red
}
NP
$_
1
$}
VP
(
PP
(
P
(
对
)
{
\color
{
ugreen
}
NP
$_
2
$}
)
{
\color
{
orange
}
VP
$_
3
$}
))
}}
;
\node
[
anchor
=
north west
]
(
rule
2
)
at
([
yshift
=
0
.
2
em
]
rule.south west
)
{{
\footnotesize
\hspace
{
2
.
8
em
}
$
\to
$
NP
$_
1
$
VP
$_
3
$
with NP
$_
2
$}}
;
}
\end
{
scope
}
\end
{
tikzpicture
}
\end
{
center
}
}
\end
{
frame
}
%%%------------------------------------------------------------------------------------------------------------
%%% 基于串的解码
...
...
Section06-Neural-Machine-Translation/section06.tex
查看文件 @
99f5a117
...
...
@@ -3997,12 +3997,13 @@ $\textrm{``you''} = \argmax_{y} \textrm{P}(y|\textbf{s}_1, \alert{\textbf{C}})$
\item
通过自注意机制能够直接获取全局信息,不像RNN需要逐步进行信息提取,也不像CNN只能获取局部信息,可以并行化操作,提高训练效率
\item
Transformer不仅仅被用于神经机器翻译任务,还广泛用于其他NLP任务、甚至图像处理任务。目前最火的预训练模型Bert也基于Transformer
\item
<2->
Transformer不仅仅被用于神经机器翻译任务,还广泛用于其他NLP任务、甚至图像处理任务。目前最火的预训练模型Bert也基于Transformer
\end{itemize}
\vspace
{
0em
}
\visible
<2->
{
{
\footnotesize
\begin{center}
...
...
@@ -4027,6 +4028,8 @@ $\textrm{``you''} = \argmax_{y} \textrm{P}(y|\textbf{s}_1, \alert{\textbf{C}})$
\end{tabular}
\end{center}
}
}
\end{frame}
%%%------------------------------------------------------------------------------------------------------------
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论