% !Mode:: "TeX:UTF-8"
% !TEX encoding = UTF-8 Unicode

\begin{tikzpicture}

\begin{scope}
%%%%%%%%%%%左侧源语言
{\small
\node [anchor=north west] (dictionarylabel) at (0,0) {源语言};
\node [anchor=north west] (entry1) at ([xshift=1.0em,yshift=-0.8em]dictionarylabel.south west) {今};
\node [anchor=north west] (entry2) at ([yshift=0.5em]entry1.south west) {天};
\node [anchor=north west] (entry3) at ([yshift=0.1em]entry2.south west) {是};
\node [anchor=north west] (entry4) at ([yshift=0.1em]entry3.south west) {个};
\node [anchor=north west] (entry5) at ([yshift=0.1em]entry4.south west) {好};
\node [anchor=north west] (entry6) at ([yshift=0.1em]entry5.south west) {天};
\node [anchor=north west] (entry7) at ([yshift=0.5em]entry6.south west) {气};
\node [anchor=north west] (entry8) at ([xshift=0.2em,yshift=0.1em]entry7.south west) {！};
\node [anchor=center] (pos00) at ([yshift=0.63em]entry1){};
\node [anchor=center] (pos9) at ([yshift=-1.92em]entry8){};
}

\begin{pgfonlayer}{background}
{
\node[rectangle,fill=yellow!20,inner sep=0.1em] [fit =(pos00) (entry1) (entry2) (entry3) (entry4) (entry5) (entry6)(entry7)(entry8)(pos9)]  {};
}
\end{pgfonlayer}

\end{scope}
%%%%%%%%%%%左侧源语言
%%%%%%%%%%%%%%左侧模型
\begin{scope}[xshift=4.0em,yshift=0.5em]

\tikzstyle{neuronnode} = [minimum size=0.1em,circle,draw,black,thick,fill=white]

\node [anchor=west] (dictionarylabel2) at ([xshift=1.2em]dictionarylabel.east) {\small{模型}};

\node [anchor=center] (pos1) at ([yshift=-1.65em]dictionarylabel2) {};

\node [anchor=center,neuronnode] (neuron00) at ([xshift=-1.5em,yshift=-4.7em]dictionarylabel2) {};
\node [anchor=center,neuronnode] (neuron01) at ([yshift=-1.7em]neuron00) {};
\node [anchor=center,neuronnode] (neuron02) at ([yshift=-1.7em]neuron01) {};
\node [anchor=center,neuronnode] (neuron03) at ([yshift=-1.7em]neuron02) {};

\node [anchor=center,neuronnode] (neuron10) at ([xshift=1.5em,yshift=-1.0em]neuron00) {};
\node [anchor=center,neuronnode] (neuron11) at ([yshift=-1.7em]neuron10) {};
\node [anchor=center,neuronnode] (neuron12) at ([yshift=-1.7em]neuron11) {};

\node [anchor=center,neuronnode] (neuron20) at ([xshift=3em]neuron00) {};
\node [anchor=center,neuronnode] (neuron21) at ([yshift=-1.7em]neuron20) {};
\node [anchor=center,neuronnode] (neuron22) at ([yshift=-1.7em]neuron21) {};
\node [anchor=center,neuronnode] (neuron23) at ([yshift=-1.7em]neuron22) {};

\node [anchor=center] (pos2) at ([yshift=-3.72em]neuron12) {};

\draw[-](neuron00.east) -- (neuron10.west);
\draw[-](neuron00.east) -- (neuron11.west);
\draw[-](neuron00.east) -- (neuron12.west);
\draw[-](neuron01.east) -- (neuron10.west);
\draw[-](neuron01.east) -- (neuron11.west);
\draw[-](neuron01.east) -- (neuron12.west);
\draw[-](neuron02.east) -- (neuron10.west);
\draw[-](neuron02.east) -- (neuron11.west);
\draw[-](neuron02.east) -- (neuron12.west);
\draw[-](neuron03.east) -- (neuron10.west);
\draw[-](neuron03.east) -- (neuron11.west);
\draw[-](neuron03.east) -- (neuron12.west);

\draw[-](neuron10.east) -- (neuron20.west);
\draw[-](neuron11.east) -- (neuron20.west);
\draw[-](neuron12.east) -- (neuron20.west);
\draw[-](neuron10.east) -- (neuron21.west);
\draw[-](neuron11.east) -- (neuron21.west);
\draw[-](neuron12.east) -- (neuron21.west);
\draw[-](neuron10.east) -- (neuron22.west);
\draw[-](neuron11.east) -- (neuron22.west);
\draw[-](neuron12.east) -- (neuron22.west);
\draw[-](neuron10.east) -- (neuron23.west);
\draw[-](neuron11.east) -- (neuron23.west);
\draw[-](neuron12.east) -- (neuron23.west);

\begin{pgfonlayer}{background}
{
\node[rectangle,fill=gray!20,inner sep=0.1em] [fit = (neuron00) (neuron03) (neuron20) (neuron23)(pos1)(pos2)]  {};
}
\end{pgfonlayer}


\end{scope}
%%%%%%%%%%%%%%左侧模型
%%%%%%%%%%%%%%%%%%%预测分布
\begin{scope}[xshift=11.5em]

\node [anchor=west] (dictionarylabel3) at ([xshift=9.0em]dictionarylabel.east) {\small{预测分布}};

\node [anchor=center] (pos31) at ([xshift=-5.0em,yshift=-1.77em]dictionarylabel3) {};
\node [anchor=center] (pos32) at ([yshift=-3.5em]pos31) {};
\node [anchor=center] (pos33) at ([xshift=9.5em]pos31) {};
\node [anchor=center] (pos34) at ([yshift=-3.5em]pos33) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=black,inner sep=0.2em,fill=white,drop shadow] [fit =(pos31)(pos32)(pos33)(pos34)]  (remark1label3-1) {};
}
\end{pgfonlayer}

\node [anchor=center] (pos3-21) at ([xshift=-5.0em,yshift=-8.7em]dictionarylabel3) {};
\node [anchor=center] (pos3-22) at ([yshift=-4em]pos3-21) {};
\node [anchor=center] (pos3-23) at ([xshift=9.5em]pos3-21) {};
\node [anchor=center] (pos3-24) at ([yshift=-4em]pos3-23) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=black,inner sep=0.2em,fill=white,drop shadow] [fit =(pos3-21)(pos3-22)(pos3-23)(pos3-24)]  (remark1label3-2) {};
}
\end{pgfonlayer}

\node [anchor=center,minimum height=2.5em,minimum width=1.0em,fill=orange!30] (cy3-11) at ([xshift=-4.6em,yshift=-4.0em]dictionarylabel3) {};
\node [anchor=center,minimum height=2.0em,minimum width=1.0em,fill=blue!30] (cy3-12) at ([xshift=1.5em,yshift=-0.25em]cy3-11) {};
\node [anchor=center,minimum height=3.5em,minimum width=1.0em,fill=black!30] (cy3-13) at ([xshift=1.5em,yshift=0.75em]cy3-12) {};
\node [anchor=center,minimum height=1.0em,minimum width=1.0em,fill=green!30] (cy3-14) at ([xshift=1.5em,yshift=-1.25em]cy3-13) {};
\node [anchor=center,minimum height=1.5em,minimum width=1.0em,fill=yellow!30] (cy3-15) at ([xshift=1.5em,yshift=0.25em]cy3-14) {};
\node [anchor=center,minimum height=0.0em,minimum width=1.0em,fill=gray!30] (cy3-16) at ([xshift=1.5em,yshift=-0.4em]cy3-15) {};
\node [anchor=center] (cy3-17) at ([xshift=1.5em,yshift=1em]cy3-16) {\tiny{$\cdots$}};

%%%%%%%%%%%%%%%%%%%%%%%下方图注

\node [anchor=center,minimum height=0.7em,minimum width=1.0em,fill=orange!30] (cu3-11) at ([yshift=-5.2em]cy3-11) {};
\node [anchor=west] (cu21) at ([xshift=0.0em]cu3-11.east) {\scriptsize{wonderful}};

\node [anchor=center,minimum height=0.7em,minimum width=1.0em,fill=green!30] (cu3-12) at ([xshift=5.5em]cu3-11) {};
\node [anchor=west] (cu22) at ([xshift=0.0em]cu3-12.east) {\scriptsize{brilliant}};

\node [anchor=center,minimum height=0.7em,minimum width=1.0em,fill=blue!30] (cu3-13) at ([yshift=-1.5em]cu3-11) {};
\node [anchor=west] (cu23) at ([xshift=0.0em]cu3-13.east) {\scriptsize{great}};

\node [anchor=center,minimum height=0.7em,minimum width=1.0em,fill=black!30] (cu3-14) at ([yshift=-1.5em]cu3-13) {};
\node [anchor=west] (cu24) at ([xshift=0.0em]cu3-14.east) {\scriptsize{good}};

\node [anchor=center,minimum height=0.7em,minimum width=1.0em,fill=yellow!30] (cu3-15) at ([yshift=-1.5em]cu3-12) {};
\node [anchor=west] (cu25) at ([xshift=0.0em]cu3-15.east) {\scriptsize{sunny}};

\node [anchor=center,minimum height=0.7em,minimum width=1.0em,fill=gray!30] (cu3-16) at ([yshift=-1.5em]cu3-15) {};
\node [anchor=west] (cu26) at ([xshift=0.0em]cu3-16.east) {\scriptsize{what}};

\end{scope}
%%%%%%%%%%%%%%%%%%%预测分布


%%%%%%%%%%%%%%%%%%%%%%%解码策略

\begin{scope}[xshift=22.5em]
\node [anchor=west] (dictionarylabel4) at ([xshift=20.5em]dictionarylabel.east) {\small{解码策略}};
%%%%%%%%%%%%%%%%%%%底框1
\node [anchor=center] (pos4-11) at ([xshift=-4.5em,yshift=-1.77em]dictionarylabel4) {};
\node [anchor=center] (pos4-12) at ([yshift=-2.5em]pos4-11) {};
\node [anchor=center] (pos4-13) at ([xshift=9.5em]pos4-11) {};
\node [anchor=center] (pos4-14) at ([yshift=-2.5em]pos4-13) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=black,inner sep=0.2em,fill=white,drop shadow] [fit =(pos4-11)(pos4-12)(pos4-13)(pos4-14)]  (remark1label41) {};
}
\end{pgfonlayer}
%%%%%%%%%%%%%%%%%%%底框2
\node [anchor=center] (pos4-212) at ([xshift=-4.5em,yshift=-10.2em]dictionarylabel4) {};
\node [anchor=center] (pos4-222) at ([yshift=-2.5em]pos4-212) {};
\node [anchor=center] (pos4-232) at ([xshift=9.5em]pos4-212) {};
\node [anchor=center] (pos4-242) at ([yshift=-2.5em]pos4-232) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=black,inner sep=0.2em,fill=white,drop shadow] [fit =(pos4-212)(pos4-222)(pos4-232)(pos4-242)]  (remark1label42) {};
}
\end{pgfonlayer}
%%%%%%%%%%%%%%%%%%%底框3
\node [anchor=center] (pos4-313) at ([xshift=-4.5em,yshift=-6em]dictionarylabel4) {};
\node [anchor=center] (pos4-323) at ([yshift=-2.5em]pos4-313) {};
\node [anchor=center] (pos4-333) at ([xshift=9.5em]pos4-313) {};
\node [anchor=center] (pos4-343) at ([yshift=-2.5em]pos4-333) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=black,inner sep=0.2em,fill=white,drop shadow] [fit =(pos4-313)(pos4-323)(pos4-333)(pos4-343)]  (remark1label43) {};
}
\end{pgfonlayer}
%%%%%%%%%%%%束搜索的虚线框1
\node [anchor=center] (pos12red11) at ([xshift=0.2em,yshift=-0.65em]pos4-11) {};
\node [anchor=center] (pos22red11) at ([yshift=-0.85em]pos12red11) {};
\node [anchor=center] (pos32red11) at ([xshift=1.5em]pos12red11) {};
\node [anchor=center] (pos42red11) at ([yshift=-0.85em]pos32red11) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=red,inner sep=0.2em,fill=white,dashed] [fit =(pos12red11)(pos22red11)(pos32red11)(pos42red11)]  (remark1labe41-1) {};
}
\end{pgfonlayer}
%%%%%%%%%%%%%%%%束搜索里面内容
{\scriptsize
\node [anchor=center] (cy00) at ([xshift=6.7em,yshift=0.2em]pos4-11) {\tiny{束搜索}};
\node [anchor=center,minimum height=1.8em,minimum width=0.8em,fill=orange!30] (cy11) at ([xshift=-0.0em,yshift=-1.80em]pos4-11) {};
\node [anchor=center,minimum height=1.5em,minimum width=0.8em,fill=blue!30] (cy12) at ([xshift=1.3em,yshift=-0.15em]cy11) {};
\node [anchor=center,minimum height=2.5em,minimum width=0.8em,fill=black!30] (cy13) at ([xshift=1.3em,yshift=0.5em]cy12) {};
\node [anchor=center,minimum height=0.8em,minimum width=0.8em,fill=green!30] (cy14) at ([xshift=1.3em,yshift=-0.85em]cy13) {};
\node [anchor=center,minimum height=1.2em,minimum width=0.8em,fill=yellow!30] (cy15) at ([xshift=1.3em,yshift=0.2em]cy14) {};
\node [anchor=center,minimum height=0.0em,minimum width=0.8em,fill=gray!30] (cy16) at ([xshift=1.3em,yshift=-0.25em]cy15) {};
\node [anchor=center] (cy17) at ([xshift=1.5em,yshift=-0.3em]cy16) {$\cdots$};
\node [anchor=center] (cy18) at ([xshift=1.1em,yshift=1.2em]cy17) {$\Rightarrow$};
\node [anchor=center,minimum height=1.8em,minimum width=0.8em,fill=orange!30] (cy19) at ([xshift=1.1em,yshift=-0.35em]cy18) {};
\node [anchor=center,minimum height=1.5em,minimum width=0.8em,fill=blue!30] (cy110) at ([xshift=1.3em,yshift=-0.15em]cy19) {};
\node [anchor=center,minimum height=2.5em,minimum width=0.8em,fill=black!30] (cy111) at ([xshift=1.3em,yshift=0.5em]cy110) {};
\node [anchor=center,color=red] (cy112) at ([xshift=1.35em,yshift=-1.23em]cy110) {\tiny{$\Uparrow$}};
\node [anchor=center,color=red] (cy113) at ([yshift=-0.55em]cy112) {\tiny{good}};
}
%%%%%%%%%%%%束搜索的虚线框2
\node [anchor=center] (pos12red12) at ([xshift=7.65em,yshift=-0.65em]pos4-11) {};
\node [anchor=center] (pos22red12) at ([yshift=-0.85em]pos12red12) {};
\node [anchor=center] (pos32red12) at ([xshift=1.5em]pos12red12) {};
\node [anchor=center] (pos42red12) at ([yshift=-0.85em]pos32red12) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=red,inner sep=0.2em,fill=white,dashed] [fit =(pos12red12)(pos22red12)(pos32red12)(pos42red12)]  (remark1label) {};
}
\end{pgfonlayer}
%%%%%%%%%%%%topk的虚线框1
\node [anchor=center] (pos12-2) at ([xshift=0.20em,yshift=-0.65em]pos4-212) {};
\node [anchor=center] (pos22-2) at ([yshift=-0.85em]pos12-2) {};
\node [anchor=center] (pos32-2) at ([xshift=1.5em]pos12-2) {};
\node [anchor=center] (pos42-2) at ([yshift=-0.85em]pos32-2) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=red,inner sep=0.2em,fill=white,dashed] [fit =(pos12-2)(pos22-2)(pos32-2)(pos42-2)]  (remark1label-2) {};
}
\end{pgfonlayer}

{\scriptsize
\node [anchor=center] (cy00-2) at ([xshift=6.7em,yshift=0.2em]pos4-212) {\tiny{TopK}};
\node [anchor=center,minimum height=1.8em,minimum width=0.8em,fill=orange!30] (cy11-2) at ([xshift=0.0em,yshift=-1.8em]pos4-212) {};
\node [anchor=center,minimum height=1.5em,minimum width=0.8em,fill=blue!30] (cy12-2) at ([xshift=1.3em,yshift=-0.15em]cy11-2) {};
\node [anchor=center,minimum height=2.5em,minimum width=0.8em,fill=black!30] (cy13-2) at ([xshift=1.3em,yshift=0.5em]cy12-2) {};
\node [anchor=center,minimum height=0.8em,minimum width=0.8em,fill=green!30] (cy14-2) at ([xshift=1.3em,yshift=-0.85em]cy13-2) {};
\node [anchor=center,minimum height=1.2em,minimum width=0.8em,fill=yellow!30] (cy15-2) at ([xshift=1.3em,yshift=0.2em]cy14-2) {};
\node [anchor=center,minimum height=0.0em,minimum width=0.8em,fill=gray!30] (cy16-2) at ([xshift=1.3em,yshift=-0.25em]cy15-2) {};
\node [anchor=center] (cy17-2) at ([xshift=1.5em,yshift=-0.3em]cy16-2) {$\cdots$};
\node [anchor=center] (cy18-2) at ([xshift=1.1em,yshift=1.2em]cy17-2) {$\Rightarrow$};
\node [anchor=center,minimum height=1.8em,minimum width=0.8em,fill=orange!30] (cy19-2) at ([xshift=1.1em,yshift=-0.35em]cy18-2) {};
\node [anchor=center,minimum height=1.5em,minimum width=0.8em,fill=blue!30] (cy110-2) at ([xshift=1.3em,yshift=-0.15em]cy19-2) {};
\node [anchor=center,minimum height=2.5em,minimum width=0.8em,fill=black!30] (cy111-2) at ([xshift=1.3em,yshift=0.5em]cy110-2) {};
\node [anchor=center,color=red] (cy112-2) at ([xshift=0.0em,yshift=-1.2em]cy110-2) {\tiny{$\Uparrow$}};
\node [anchor=center,color=red] (cy113-2) at ([yshift=-0.65em]cy112-2) {\tiny{wonderful}};
}
%%%%%%%%%%%%topk的虚线框2
\node [anchor=center] (pos12red22) at ([xshift=7.65em,yshift=-0.65em]pos4-212) {};
\node [anchor=center] (pos22red22) at ([yshift=-0.85em]pos12red22) {};
\node [anchor=center] (pos32red22) at ([xshift=1.5em]pos12red22) {};
\node [anchor=center] (pos42red22) at ([yshift=-0.85em]pos32red22) {};

\begin{pgfonlayer}{background}
{
\node[rectangle,draw=red,inner sep=0.2em,fill=white,dashed] [fit =(pos12red22)(pos22red22)(pos32red22)(pos42red22)]  (remark1label2) {};
}
\end{pgfonlayer}

%%%%%%%%%%%%%%%%%采样里面内容

{\scriptsize
\node [anchor=center] (cy00-2) at ([xshift=6.7em,yshift=0.2em]pos4-313) {\tiny{采样}};
\node [anchor=center,minimum height=1.8em,minimum width=0.8em,fill=orange!30] (cy11-3) at ([xshift=2.8em,yshift=-1.8em]pos4-313) {};
\node [anchor=center,minimum height=1.5em,minimum width=0.8em,fill=blue!30] (cy12-3) at ([xshift=1.3em,yshift=-0.15em]cy11-3) {};
\node [anchor=center,minimum height=2.5em,minimum width=0.8em,fill=black!30] (cy13-3) at ([xshift=1.3em,yshift=0.5em]cy12-3) {};
\node [anchor=center,minimum height=0.8em,minimum width=0.8em,fill=green!30] (cy14-3) at ([xshift=1.3em,yshift=-0.85em]cy13-3) {};
\node [anchor=center,minimum height=1.2em,minimum width=0.8em,fill=yellow!30] (cy15-3) at ([xshift=1.3em,yshift=0.2em]cy14-3) {};
\node [anchor=center,minimum height=0.0em,minimum width=0.8em,fill=gray!30] (cy16-3) at ([xshift=1.3em,yshift=-0.25em]cy15-3) {};
\node [anchor=center] (cy17-3) at ([xshift=1.5em,yshift=-0.3em]cy16-3) {$\cdots$};
\node [anchor=center,color=red] (cy112-3) at ([xshift=0.0em,yshift=-1.1em]cy15-3) {\tiny$\Uparrow$};
\node [anchor=center,color=red] (cy113-3) at ([yshift=-0.65em]cy112-3) {\tiny{sunny}};
}

\end{scope}

{\small
\node [anchor=west] (dictionarylabel) at ([xshift=32.0em]dictionarylabel.east) {目标语言};
\node [anchor=north west] (entry5-1) at ([xshift=0.70em,yshift=-1.37em]dictionarylabel.south west) {Today};
\node [anchor=north] (entry5-2) at ([yshift=0.5em]entry5-1.south) {is};
\node [anchor=north] (entry5-3) at ([yshift=0.1em]entry5-2.south) {a};
\node [anchor=center] (pos5-0) at ([yshift=1.2em]entry5-1){};
\node [anchor=center] (pos5-4) at ([yshift=-1.2em]entry5-3){};

\node [anchor=north,color=red,minimum height=1.2em,minimum width=3.41em,fill=blue!20,inner sep=0.1em] (entry5-5) at ([yshift=-0.4em]pos5-4.south) {？};

\node [anchor=north,minimum height=1.2em,minimum width=3.15em] (entry5-6) at ([yshift=-0.4em]entry5-5.south) {};
\node [anchor=north,minimum height=1.2em,minimum width=3.15em] (entry5-7) at ([yshift=-3.23em]entry5-6.south) {};
}
\begin{pgfonlayer}{background}
{
\node[rectangle,fill=green!20,inner sep=0.1em] [fit =(entry5-1) (entry5-2) (entry5-3)(pos5-0)(pos5-4)]  {};
}
\end{pgfonlayer}

\begin{pgfonlayer}{background}
{
\node[rectangle,fill=blue!20,inner sep=0.1em] [fit =(entry5-6) (entry5-7)]  {};
}
\end{pgfonlayer}

\draw [->,thick]([xshift=0.1em,yshift=0.3em]entry5.east) -- ([xshift=1.27em,yshift=0.3em]entry5.east);

\draw [->,thick]([xshift=5.4859em,yshift=0.3em]entry5.east) --  ([xshift=12em,yshift=0.3em]entry5.east) -- ([yshift=-0.57em]cy3-14.south);

\draw[-,thick] ([xshift=0.0em]cy3-17.east) ..controls+(east:1.2em) and + (west:1.2em)..([xshift=-0.19em]pos4-11.west);\draw[-,thick] ([xshift=0.0em]cy3-17.east) ..controls+(east:1.2em) and + (west:1.2em)..([yshift=-2.3em,xshift=-0.19em]pos4-212.west);

\draw [->,thick]([xshift=-1.291em]entry5-5.west) -- ([xshift=0.02em]entry5-5.west);
\draw [-,thick]([xshift=0.415em]pos4-13.east)--([xshift=0.9em]pos4-13.east)--([xshift=0.9em]pos4-242.east)--([xshift=0.415em]pos4-242.east);


\end{tikzpicture}

%---------------------------------------------------------------------
















