Commit 82d30e12 by xiaotong

updates of appendix

parent c8ee606d
......@@ -26,73 +26,64 @@
\section{IBM模型3训练方法}
\parinterval 模型3的参数估计与模型1和模型2采用相同的方法。这里直接给出辅助函数。
\begin{eqnarray}
h(t,d,n,p, \lambda,\mu, \nu, \zeta) & = & \textrm{P}_{\theta}(\mathbf{s}|\mathbf{t})-\sum_{e}\lambda_{e}(\sum_{s}t(\mathbf{s}|\mathbf{t})-1)-\sum_{i}\mu_{iml}(\sum_{j}d(j|i,m,l)-1) \nonumber \\
& & -\sum_{e}\nu_{e}(\sum_{\varphi}n(\varphi|e)-1)-\zeta(p^0+p^1-1)
h(t,d,n,p, \lambda,\mu, \nu, \zeta) & = & \textrm{P}_{\theta}(\mathbf{s}|\mathbf{t})-\sum_{t}\lambda_{t}\big(\sum_{s}t(s|t)-1\big) \nonumber \\
& & -\sum_{i}\mu_{iml}\big(\sum_{j}d(j|i,m,l)-1\big) \nonumber \\
& & -\sum_{t}\nu_{t}\big(\sum_{\varphi}n(\varphi|t)-1\big)-\zeta(p^0+p^1-1)
\label{eq:1.1}
\end{eqnarray}
%----------------------------------------------
\parinterval 由于篇幅所限这里略去了推导步骤直接给出一些用于参数估计的等式。
\begin{eqnarray}
c(s|t,\mathbf{s},\mathbf{t}) = \sum_{\mathbf{a}}(\textrm{p}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{i=1}^{m} (\delta(s_i,\mathbf{s}) \cdot \delta(t_{a_{i}},\mathbf{t})))
\label{eq:1.2}
\end{eqnarray}
\begin{eqnarray}
c(i|j,m,l;\mathbf{s},\mathbf{t}) = \sum_{\mathbf{a}}(\textrm{p}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \delta(j,a_i))
\label{eq:1.3}
\end{eqnarray}
\begin{eqnarray}
c(\varphi|e;\mathbf{s},\mathbf{t}) = \sum_{\mathbf{a}}(\textrm{p}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{j=1}^{l}\delta(\varphi,\varphi_{j})\delta(e,e_j))
c(s|t,\mathbf{s},\mathbf{t}) & = & \sum_{\mathbf{a}}\big[\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{j=1}^{m} (\delta(s_j,s) \cdot \delta(t_{a_{j}},t))\big] \label{eq:1.2} \\
c(j|i,m,l;\mathbf{s},\mathbf{t}) & = & \sum_{\mathbf{a}}\big[\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \delta(i,a_j)\big] \label{eq:1.3} \\
c(\varphi|t;\mathbf{s},\mathbf{t}) & = & \sum_{\mathbf{a}}\big[\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{i=1}^{l}\delta(\varphi,\varphi_{i})\delta(t,t_i)\big]
\label{eq:1.4}
\end{eqnarray}
\begin{eqnarray}
c(0|\mathbf{s},\mathbf{t}) = \sum_{\mathbf{a}}(\textrm{p}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times (m-2\varphi_0) )
\label{eq:1.5}
\end{eqnarray}
\begin{eqnarray}
c(1|\mathbf{s},\mathbf{t}) = \sum_{\mathbf{a}}(\textrm{p}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \varphi_0)
\label{eq:1.6}
c(0|\mathbf{s},\mathbf{t}) & = & \sum_{\mathbf{a}}\big[\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times (m-2\varphi_0) \big] \label{eq:1.5} \\
c(1|\mathbf{s},\mathbf{t}) & = & \sum_{\mathbf{a}}\big[\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \varphi_0 \big] \label{eq:1.6}
\end{eqnarray}
%----------------------------------------------
\parinterval 进一步,
\begin{eqnarray}
t(\mathbf{s}|\mathbf{t}) = \lambda_{t}^{-1} \times \sum_{k=1}^{S}c(\mathbf{s}|\mathbf{t};\mathbf{s}(k),\mathbf{t}(k))
\label{eq:1.7}
\end{eqnarray}
\begin{eqnarray}
d(i|j,m,l) = \mu_{jml}^{-1} \times \sum_{k=1}^{S}c(i|j,m,l;\mathbf{s}(k),\mathbf{t}(k))
\label{eq:1.8}
\end{eqnarray}
\begin{eqnarray}
n(\varphi|\mathbf{t}) = \nu_{t}^{-1} \times \sum_{s=1}^{S}c(\varphi |t;\mathbf{s}(k),\mathbf{t}(k))
\label{eq:1.9}
\end{eqnarray}
\parinterval 进一步,对于由$K$个样本组成的训练集,有:
\begin{eqnarray}
pk = \zeta^{-1} \sum_{k=1}^{S}c(k;\mathbf{s}(k),\mathbf{t}(k))
\label{eq:1.10}
t(s|t) & = & \lambda_{t}^{-1} \times \sum_{k=1}^{K}c(s|t;\mathbf{s}^{[k]},\mathbf{t}^{[k]}) \label{eq:1.7} \\
d(j|i,m,l) & = & \mu_{iml}^{-1} \times \sum_{k=1}^{K}c(j|i,m,l;\mathbf{s}^{[k]},\mathbf{t}^{[k]}) \label{eq:1.8} \\
n(\varphi|t) & = & \nu_{t}^{-1} \times \sum_{s=1}^{K}c(\varphi |t;\mathbf{s}^{[k]},\mathbf{t}^{[k]}) \label{eq:1.9} \\
p^x & = & \zeta^{-1} \sum_{k=1}^{K}c(x;\mathbf{s}^{[k]},\mathbf{t}^{[k]}) \label{eq:1.10}
\end{eqnarray}
%----------------------------------------------
\parinterval 在模型3中,因为产出率的引入,我们并不能像在模型1和模型2中那样,在保证正确性的情况下加速参数估计的过程。这就使得每次迭代过程中,我们都不得不面对大小为$(l+1)^m$的词对齐空间。遍历所有$(l+1)^m$个词对齐所带来的高时间复杂度显然是不能被接受的。因此就要考虑是不是可以仅利用词对齐空间中的部分词对齐对这些参数进行估计。比较简单且直接的方法就是仅利用Viterbi对齐来进行参数估计。遗憾的是,在模型3中我们没有方法直接获得Viterbi对齐。这样只能采用一种折中的方法,即仅考虑那些使得$\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t})$值较高的词对齐。这里把这部分词对齐组成的集合记为S。式(\ref{eq:1.2})可以被修改为,
\parinterval 在模型3中,因为产出率的引入,并不能像模型1和模型2那样,在保证正确性的情况下加速参数估计的过程。这就使得每次迭代过程中,都不得不面对大小为$(l+1)^m$的词对齐空间。遍历所有$(l+1)^m$个词对齐所带来的高时间复杂度显然是不能被接受的。因此就要考虑能否仅利用词对齐空间中的部分词对齐对这些参数进行估计。比较简单且直接的方法就是仅利用Viterbi对齐来进行参数估计\footnote{Viterbi词对齐可以被简单的看作搜索到的最好词对齐。}。 遗憾的是,在模型3中并没有方法直接获得Viterbi对齐。这样只能采用一种折中的策略,即仅考虑那些使得$\textrm{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 \mathbf{S}}(\textrm{P}_{\theta}(\mathbf{s},\mathbf{a}|\mathbf{t}) \times \sum_{i=1}^{m}(\delta(s_i,\mathbf{s}) \cdot \delta(t_{a_{i}},\mathbf{t})))
c(s|t,\mathbf{s},\mathbf{t}) \approx \sum_{\mathbf{a} \in \mathbf{S}}\big[\textrm{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.4})、式(\ref{eq:1.5})和式(\ref{eq:1.6})的修改结果。
\parinterval 同理可以获得式\ref{eq:1.3}-\ref{eq:1.6}的修改结果。进一步,在IBM模型3中,可以如下定义\textrm{S}
\parinterval 在模型3中,可以如下定义\textrm{S}
\begin{eqnarray}
\textrm{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}
%----------------------------------------------
\parinterval 其中 $b^{\infty}(V(\mathbf{s}|\mathbf{t};2))$$b_{i \leftrightarrow j}^{\infty}(V_{i \leftrightarrow j}(\mathbf{s}|\mathbf{t},2))$ 分别是对 $V(\mathbf{s}|\mathbf{t};3)$$V_{i \leftrightarrow j}(\mathbf{s}|\mathbf{t},3)$ 的估计。在计算\textrm{S}的过程中,我们需要知道一个对齐$\bf{a}$的邻居$\bf{a}'$的概率,即如何通过$\textrm{p}_{\theta}(\mathbf{a},\mathbf{s}|\mathbf{t})$计算$\textrm{p}_{\theta}(\mathbf{a}',\mathbf{s}|\mathbf{t})$。在模型3总,如果$\bf{a}$$\bf{a}'$区别于某个源语单词的对齐到的目标位置上($a_j$不等于$a_{j}'$),那么
\parinterval 为了理解这个公式,先介绍几个概念。
\begin{itemize}
\item $V(\mathbf{s}|\mathbf{t})$表示Viterbi词对齐,$V(\mathbf{s}|\mathbf{t},1)$$V(\mathbf{s}|\mathbf{t},2)$$V(\mathbf{s}|\mathbf{t},3)$就分别对应了模型1、2 和3 的Viterbi 词对齐;
\item 把那些满足第$j$个源语言语单词对应第$i$个目标语言单词($a_j=i$)的词对齐构成的集合记为$\mathbf{A}_{i \leftrightarrow j}(\mathbf{s},\mathbf{t})$。通常称这些对齐中$j$$i$被``钉''在了一起。在$\mathbf{A}_{i \leftrightarrow j}(\mathbf{s},\mathbf{t})$中使$\textrm{P}(\mathbf{a}|\mathbf{s},\mathbf{t})$达到最大的那个词对齐被记为$V_{i \leftrightarrow j}(\mathbf{s},\mathbf{t})$
\item 如果两个词对齐,通过交换两个词对齐连接就能互相转化,则称它们为邻居。一个词对齐$\mathbf{a}$的所有邻居记为$N(\mathbf{a})$
\end{itemize}
\vspace{0.3em}
\parinterval 公式\ref{eq:1.12}中,$b^{\infty}(V(\mathbf{s}|\mathbf{t};2))$$b_{i \leftrightarrow j}^{\infty}(V_{i \leftrightarrow j}(\mathbf{s}|\mathbf{t},2))$ 分别是对 $V(\mathbf{s}|\mathbf{t};3)$$V_{i \leftrightarrow j}(\mathbf{s}|\mathbf{t},3)$ 的估计。在计算$S$的过程中,需要知道一个对齐$\bf{a}$的邻居$\bf{a}^{'}$的概率,即如何通过$\textrm{P}_{\theta}(\mathbf{a},\mathbf{s}|\mathbf{t})$计算$\textrm{p}_{\theta}(\mathbf{a}',\mathbf{s}|\mathbf{t})$。在模型3中,如果$\bf{a}$$\bf{a}'$区别于某个源语单词的对齐到的目标位置上($a_j \neq a_{j}'$),那么
\begin{small}
\begin{eqnarray}
\textrm{p}_{\theta}(\mathbf{a}',\mathbf{s}|\mathbf{t}) = \textrm{p}_{\theta}(\mathbf{a},\mathbf{s}|\mathbf{t}) \cdot \frac{\varphi_{j'}+1}{\varphi_j} \cdot \frac{n(\varphi_{j'}+1|t_{j'})}{n(\varphi_{j'}|t_{j'})} \cdot \frac{n(\varphi_{j-1}|t_{j})}{n(\varphi_{j}|t_{j})} \cdot \frac{t(s_i|t_{j'})}{t(s_{i}|t_{j})} \cdot \frac{d(i|j',m,l)}{d(i|j,m,l)}
\textrm{P}_{\theta}(\mathbf{a}',\mathbf{s}|\mathbf{t}) = \textrm{P}_{\theta}(\mathbf{a},\mathbf{s}|\mathbf{t}) \cdot \frac{\varphi_{j'}+1}{\varphi_j} \cdot \frac{n(\varphi_{j'}+1|t_{j'})}{n(\varphi_{j'}|t_{j'})} \cdot \frac{n(\varphi_{j-1}|t_{j})}{n(\varphi_{j}|t_{j})} \cdot \frac{t(s_i|t_{j'})}{t(s_{i}|t_{j})} \cdot \frac{d(i|j',m,l)}{d(i|j,m,l)}
\label{eq:1.13}
\end{eqnarray}
\end{small}
......
\indexentry{Chapter3.1|hyperpage}{9}
\indexentry{Chapter3.2|hyperpage}{11}
\indexentry{Chapter3.2.1|hyperpage}{11}
\indexentry{Chapter3.2.1.1|hyperpage}{11}
\indexentry{Chapter3.2.1.2|hyperpage}{12}
\indexentry{Chapter3.2.1.3|hyperpage}{13}
\indexentry{Chapter3.2.2|hyperpage}{13}
\indexentry{Chapter3.2.3|hyperpage}{14}
\indexentry{Chapter3.2.3.1|hyperpage}{14}
\indexentry{Chapter3.2.3.2|hyperpage}{14}
\indexentry{Chapter3.2.3.3|hyperpage}{16}
\indexentry{Chapter3.2.4|hyperpage}{17}
\indexentry{Chapter3.2.4.1|hyperpage}{17}
\indexentry{Chapter3.2.4.2|hyperpage}{19}
\indexentry{Chapter3.2.5|hyperpage}{21}
\indexentry{Chapter3.3|hyperpage}{24}
\indexentry{Chapter3.3.1|hyperpage}{24}
\indexentry{Chapter3.3.2|hyperpage}{26}
\indexentry{Chapter3.3.2.1|hyperpage}{27}
\indexentry{Chapter3.3.2.2|hyperpage}{27}
\indexentry{Chapter3.3.2.3|hyperpage}{29}
\indexentry{Chapter3.4|hyperpage}{30}
\indexentry{Chapter3.4.1|hyperpage}{30}
\indexentry{Chapter3.4.2|hyperpage}{32}
\indexentry{Chapter3.4.3|hyperpage}{33}
\indexentry{Chapter3.4.4|hyperpage}{34}
\indexentry{Chapter3.4.4.1|hyperpage}{34}
\indexentry{Chapter3.4.4.2|hyperpage}{35}
\indexentry{Chapter3.5|hyperpage}{41}
\indexentry{Chapter3.5.1|hyperpage}{41}
\indexentry{Chapter3.5.2|hyperpage}{44}
\indexentry{Chapter3.5.3|hyperpage}{45}
\indexentry{Chapter3.5.4|hyperpage}{47}
\indexentry{Chapter3.5.5|hyperpage}{48}
\indexentry{Chapter3.5.5|hyperpage}{51}
\indexentry{Chapter3.6|hyperpage}{51}
\indexentry{Chapter3.6.1|hyperpage}{51}
\indexentry{Chapter3.6.2|hyperpage}{52}
\indexentry{Chapter3.6.4|hyperpage}{53}
\indexentry{Chapter3.6.5|hyperpage}{54}
\indexentry{Chapter3.7|hyperpage}{54}
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {english}{}
\defcounter {refsection}{0}\relax
\contentsline {part}{\@mypartnumtocformat {I}{统计机器翻译}}{7}{part.1}%
\contentsline {part}{\@mypartnumtocformat {I}{附录}}{7}{part.1}%
\ttl@starttoc {default@1}
\defcounter {refsection}{0}\relax
\contentsline {chapter}{\numberline {1}基于词的机器翻译模型}{9}{chapter.1}%
\contentsline {chapter}{\numberline {A}附录A}{9}{appendix.1.A}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.1}什么是基于词的翻译模型}{9}{section.1.1}%
\contentsline {chapter}{\numberline {B}附录B}{11}{appendix.2.B}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.2}构建一个简单的机器翻译系统}{11}{section.1.2}%
\contentsline {section}{\numberline {B.1}IBM模型3训练方法}{11}{section.2.B.1}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.1}如何进行翻译?}{11}{subsection.1.2.1}%
\contentsline {section}{\numberline {B.2}IBM模型4训练方法}{13}{section.2.B.2}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{机器翻译流程}{12}{section*.6}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{人工翻译 vs. 机器翻译}{13}{section*.8}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.2}基本框架}{13}{subsection.1.2.2}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.3}单词翻译概率}{14}{subsection.1.2.3}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{什么是单词翻译概率?}{14}{section*.10}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{如何从一个双语平行数据中学习?}{14}{section*.12}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{如何从大量的双语平行数据中学习?}{16}{section*.13}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.4}句子级翻译模型}{17}{subsection.1.2.4}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{基础模型}{17}{section*.15}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{生成流畅的译文}{19}{section*.17}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.2.5}解码}{21}{subsection.1.2.5}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.3}基于词的翻译建模}{24}{section.1.3}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.3.1}噪声信道模型}{24}{subsection.1.3.1}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.3.2}统计机器翻译的三个基本问题}{26}{subsection.1.3.2}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{词对齐}{27}{section*.26}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{基于词对齐的翻译模型}{27}{section*.29}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{基于词对齐的翻译实例}{29}{section*.31}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.4}IBM模型1-2}{30}{section.1.4}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.1}IBM模型1}{30}{subsection.1.4.1}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.2}IBM模型2}{32}{subsection.1.4.2}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.3}解码及计算优化}{33}{subsection.1.4.3}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.4.4}训练}{34}{subsection.1.4.4}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{目标函数}{34}{section*.36}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{优化}{35}{section*.38}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.5}IBM模型3-5及隐马尔可夫模型}{41}{section.1.5}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.1}基于产出率的翻译模型}{41}{subsection.1.5.1}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.2}IBM 模型3}{44}{subsection.1.5.2}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.3}IBM 模型4}{45}{subsection.1.5.3}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.4} IBM 模型5}{47}{subsection.1.5.4}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.5}隐马尔可夫模型}{48}{subsection.1.5.5}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{隐马尔可夫模型}{49}{section*.50}%
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{词对齐模型}{50}{section*.52}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.5.6}解码和训练}{51}{subsection.1.5.6}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.6}问题分析}{51}{section.1.6}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.1}词对齐及对称化}{51}{subsection.1.6.1}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.2}Deficiency}{52}{subsection.1.6.2}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.3}句子长度}{53}{subsection.1.6.3}%
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {1.6.4}其他问题}{54}{subsection.1.6.4}%
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {1.7}小结及深入阅读}{54}{section.1.7}%
\contentsline {section}{\numberline {B.3}IBM模型5训练方法}{15}{section.2.B.3}%
\contentsfinish
......@@ -114,11 +114,11 @@
%\include{Chapter1/chapter1}
%\include{Chapter2/chapter2}
\include{Chapter3/chapter3}
%\include{Chapter3/chapter3}
%\include{Chapter4/chapter4}
%\include{Chapter5/chapter5}
%\include{Chapter6/chapter6}
%\include{ChapterAppend/chapterappend}
\include{ChapterAppend/chapterappend}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论