diff --git "a/\350\257\276\344\273\266/transformer_nmt_teacher.ipynb" "b/\350\257\276\344\273\266/transformer_nmt_teacher.ipynb" deleted file mode 100644 index 54bf2a4..0000000 --- "a/\350\257\276\344\273\266/transformer_nmt_teacher.ipynb" +++ /dev/null @@ -1,9713 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Transformer翻译项目" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "toc": true - }, - "source": [ - "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n", - "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#一.-建立Transformer模型的直观认识\" data-toc-modified-id=\"一.-建立Transformer模型的直观认识-1\">一. 建立Transformer模型的直观认识</a></span></li><li><span><a href=\"#二.-编码器部分(Encoder)\" data-toc-modified-id=\"二.-编码器部分(Encoder)-2\">二. 编码器部分(Encoder)</a></span><ul class=\"toc-item\"><li><span><a href=\"#0.-先准备好输入的数据\" data-toc-modified-id=\"0.-先准备好输入的数据-2.1\">0. 先准备好输入的数据</a></span></li><li><span><a href=\"#1.-positional-encoding(即位置嵌入或位置编码)\" data-toc-modified-id=\"1.-positional-encoding(即位置嵌入或位置编码)-2.2\">1. positional encoding(即位置嵌入或位置编码)</a></span></li><li><span><a href=\"#2.-self-attention(自注意力机制)\" data-toc-modified-id=\"2.-self-attention(自注意力机制)-2.3\">2. self attention(自注意力机制)</a></span></li><li><span><a href=\"#3.-Attention-Mask\" data-toc-modified-id=\"3.-Attention-Mask-2.4\">3. Attention Mask</a></span></li><li><span><a href=\"#4.-Layer-Normalization-和残差连接\" data-toc-modified-id=\"4.-Layer-Normalization-和残差连接-2.5\">4. Layer Normalization 和残差连接</a></span></li><li><span><a href=\"#5.-Transformer-Encoder-整体结构\" data-toc-modified-id=\"5.-Transformer-Encoder-整体结构-2.6\">5. Transformer Encoder 整体结构</a></span></li></ul></li><li><span><a href=\"#三.-解码器部分(Decoder)\" data-toc-modified-id=\"三.-解码器部分(Decoder)-3\">三. 解码器部分(Decoder)</a></span></li><li><span><a href=\"#四.-Transformer模型\" data-toc-modified-id=\"四.-Transformer模型-4\">四. Transformer模型</a></span></li><li><span><a href=\"#五.-模型训练\" data-toc-modified-id=\"五.-模型训练-5\">五. 模型训练</a></span></li><li><span><a href=\"#六.-模型预测\" data-toc-modified-id=\"六.-模型预测-6\">六. 模型预测</a></span></li></ul></div>" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "在这份notebook当中,我们会(尽可能)实现 $Transformer$ 模型来完成翻译任务。 \n", - "(参考论文:$Attention\\; Is\\; All\\; You\\; Need$ https://arxiv.org/pdf/1706.03762.pdf )\n", - "\n", - "我们的数据集非常小,只有一万多个句子的训练数据,从结果来看训练出来的模型在测试集上的表现其实已经算还可以了。 \n", - "如果想得到更好的效果,则需要更大的数据量并进行更多的训练迭代次数,感兴趣(并且有硬件条件)的同学可以进行尝试。 " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.4.0\n", - "False\n" - ] - } - ], - "source": [ - "import torch\n", - "print(torch.__version__)\n", - "print(torch.cuda.is_available())" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/rnn1.jpeg\", width=660>\n", - "<img src=\"./imgs/rnn_att.jpeg\", width=660>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/rnn1.jpeg\", width=660>\n", - "<img src=\"./imgs/rnn_att.jpeg\", width=660>" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 一. 建立Transformer模型的直观认识\n", - " \n", - "首先来说一下**Transformer**和**LSTM**的最大区别,就是LSTM的训练是迭代(自回归)的,是一个接一个字的来,当前这个字过完LSTM单元,才可以进下一个字,而 $Transformer$ 的训练是并行了,就是所有字是全部同时训练的,这样就大大加快了计算效率,$Transformer$ 使用了位置嵌入$(positional \\ encoding)$来理解语言的顺序,使用自注意力机制和全连接层来进行计算,这些后面都会详细讲解。 \n", - " \n", - "$Transformer$ 模型主要分为**两大部分**,分别是**编码器($Encoder$)**和**解码器($Decoder$)**: \n", - "- **编码器($Encoder$)**负责把自然语言序列映射成为**隐藏层**(下图中**第2步**用九宫格比喻的部分),含有自然语言序列的数学表达\n", - "- **解码器($Decoder$)**再把隐藏层映射为自然语言序列,从而使我们可以解决各种问题,如情感分类、命名实体识别、语义关系抽取、摘要生成、机器翻译等等。\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "<img src=\"./imgs/intuition.jpg\", width=660>\n", - "<img src=\"./imgs/transformer.png\", width=660>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "\n", - "<img src=\"./imgs/intuition.jpg\", width=660>\n", - "<img src=\"./imgs/transformer.png\", width=660>\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 二. 编码器部分(Encoder)\n", - " \n", - " \n", - "我们会**重点介绍编码器的结构**,因为理解了编码器中的结构, 理解解码器就非常简单了。而且我们用编码器就能够完成一些自然语言处理中比较主流的任务, 如情感分类, 语义关系分析, 命名实体识别等。 \n", - " \n", - "**编码器($Encoder$)**部分, 即把**自然语言序列映射为隐藏层的数学表达的过程**。 " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**以下为一个Transformer Encoder Block结构示意图**\n", - "> 注意: 为方便查看, 下面各部分的内容分别对应着图中第1, 2, 3, 4个方框的序号:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/encoder.jpg\", width=550>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/encoder.jpg\", width=550>\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "注意transformer向量维度的变化:\n", - "\n", - "**输入向量维度: [batch_size, seq_len, embedding_size]**\n", - "\n", - "**输出向量维度:[batch_size, seq_len, embedding_size]**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 0. 先准备好输入的数据" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import math\n", - "import copy\n", - "import time\n", - "import numpy as np\n", - "import torch\n", - "import torch.nn as nn\n", - "import torch.nn.functional as F\n", - "\n", - "from nltk import word_tokenize\n", - "from collections import Counter\n", - "from torch.autograd import Variable" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# 初始化参数设置\n", - "UNK = 0 # 未登录词的标识符对应的词典id\n", - "PAD = 1 # padding占位符对应的词典id\n", - "BATCH_SIZE = 64 # 每批次训练数据数量\n", - "EPOCHS = 20 # 训练轮数\n", - "LAYERS = 6 # transformer中堆叠的encoder和decoder block层数\n", - "H_NUM = 8 # multihead attention hidden个数\n", - "D_MODEL = 256 # embedding维数\n", - "D_FF = 1024 # feed forward第一个全连接层维数\n", - "DROPOUT = 0.1 # dropout比例\n", - "MAX_LENGTH = 60 # 最大句子长度\n", - "\n", - "TRAIN_FILE = 'nmt/en-cn/train.txt' # 训练集数据文件\n", - "DEV_FILE = \"nmt/en-cn/dev.txt\" # 验证(开发)集数据文件\n", - "SAVE_FILE = 'save/model.pt' # 模型保存路径(注意如当前目录无save文件夹需要自己创建)\n", - "DEVICE = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "def seq_padding(X, padding=0):\n", - " \"\"\"\n", - " 对一个batch批次(以单词id表示)的数据进行padding填充对齐长度\n", - " \"\"\"\n", - " # 计算该批次数据各条数据句子长度\n", - " L = [len(x) for x in X]\n", - " # 获取该批次数据最大句子长度\n", - " ML = max(L)\n", - " # 对X中各条数据x进行遍历,如果长度短于该批次数据最大长度ML,则以padding id填充缺失长度ML-len(x)\n", - " # (注意这里默认padding id是0,相当于是拿<UNK>来做了padding)\n", - " return np.array([\n", - " np.concatenate([x, [padding] * (ML - len(x))]) if len(x) < ML else x for x in X\n", - " ])\n", - "\n", - "\n", - "class PrepareData:\n", - " def __init__(self, train_file, dev_file):\n", - " # 读取数据 并分词\n", - " self.train_en, self.train_cn = self.load_data(train_file)\n", - " self.dev_en, self.dev_cn = self.load_data(dev_file)\n", - "\n", - " # 构建单词表\n", - " self.en_word_dict, self.en_total_words, self.en_index_dict = self.build_dict(self.train_en)\n", - " self.cn_word_dict, self.cn_total_words, self.cn_index_dict = self.build_dict(self.train_cn)\n", - "\n", - " # id化\n", - " self.train_en, self.train_cn = self.wordToID(self.train_en, self.train_cn, self.en_word_dict, self.cn_word_dict)\n", - " self.dev_en, self.dev_cn = self.wordToID(self.dev_en, self.dev_cn, self.en_word_dict, self.cn_word_dict)\n", - "\n", - " # 划分batch + padding + mask\n", - " self.train_data = self.splitBatch(self.train_en, self.train_cn, BATCH_SIZE)\n", - " self.dev_data = self.splitBatch(self.dev_en, self.dev_cn, BATCH_SIZE)\n", - "\n", - " def load_data(self, path):\n", - " \"\"\"\n", - " 读取翻译前(英文)和翻译后(中文)的数据文件\n", - " 每条数据都进行分词,然后构建成包含起始符(BOS)和终止符(EOS)的单词(中文为字符)列表\n", - " 形式如:en = [['BOS', 'i', 'love', 'you', 'EOS'], ['BOS', 'me', 'too', 'EOS'], ...]\n", - " cn = [['BOS', '我', '爱', '你', 'EOS'], ['BOS', '我', '也', '是', 'EOS'], ...]\n", - " \"\"\"\n", - " en = []\n", - " cn = []\n", - " with open(path, 'r', encoding='utf-8') as f:\n", - " for line in f:\n", - " line = line.strip().split('\\t')\n", - "\n", - " en.append([\"BOS\"] + word_tokenize(line[0].lower()) + [\"EOS\"])\n", - " cn.append([\"BOS\"] + word_tokenize(\" \".join([w for w in line[1]])) + [\"EOS\"])\n", - "\n", - " return en, cn\n", - " \n", - " def build_dict(self, sentences, max_words=50000):\n", - " \"\"\"\n", - " 传入load_data构造的分词后的列表数据\n", - " 构建词典(key为单词,value为id值)\n", - " \"\"\"\n", - " # 对数据中所有单词进行计数\n", - " word_count = Counter()\n", - "\n", - " for sentence in sentences:\n", - " for s in sentence:\n", - " word_count[s] += 1\n", - " # 只保留最高频的前max_words数的单词构建词典\n", - " # 并添加上UNK和PAD两个单词,对应id已经初始化设置过\n", - " ls = word_count.most_common(max_words)\n", - " # 统计词典的总词数\n", - " total_words = len(ls) + 2\n", - "\n", - " word_dict = {w[0]: index + 2 for index, w in enumerate(ls)}\n", - " word_dict['UNK'] = UNK\n", - " word_dict['PAD'] = PAD\n", - " # 再构建一个反向的词典,供id转单词使用\n", - " index_dict = {v: k for k, v in word_dict.items()}\n", - "\n", - " return word_dict, total_words, index_dict\n", - "\n", - " def wordToID(self, en, cn, en_dict, cn_dict, sort=True):\n", - " \"\"\"\n", - " 该方法可以将翻译前(英文)数据和翻译后(中文)数据的单词列表表示的数据\n", - " 均转为id列表表示的数据\n", - " 如果sort参数设置为True,则会以翻译前(英文)的句子(单词数)长度排序\n", - " 以便后续分batch做padding时,同批次各句子需要padding的长度相近减少padding量\n", - " \"\"\"\n", - " # 计算英文数据条数\n", - " length = len(en)\n", - " # 将翻译前(英文)数据和翻译后(中文)数据都转换为id表示的形式\n", - " out_en_ids = [[en_dict.get(w, 0) for w in sent] for sent in en]\n", - " out_cn_ids = [[cn_dict.get(w, 0) for w in sent] for sent in cn]\n", - "\n", - " # 构建一个按照句子长度排序的函数\n", - " def len_argsort(seq):\n", - " \"\"\"\n", - " 传入一系列句子数据(分好词的列表形式),\n", - " 按照句子长度排序后,返回排序后原来各句子在数据中的索引下标\n", - " \"\"\"\n", - " return sorted(range(len(seq)), key=lambda x: len(seq[x]))\n", - "\n", - " # 把中文和英文按照同样的顺序排序\n", - " if sort:\n", - " # 以英文句子长度排序的(句子下标)顺序为基准\n", - " sorted_index = len_argsort(out_en_ids)\n", - " # 对翻译前(英文)数据和翻译后(中文)数据都按此基准进行排序\n", - " out_en_ids = [out_en_ids[i] for i in sorted_index]\n", - " out_cn_ids = [out_cn_ids[i] for i in sorted_index]\n", - " \n", - " return out_en_ids, out_cn_ids\n", - "\n", - " def splitBatch(self, en, cn, batch_size, shuffle=True):\n", - " \"\"\"\n", - " 将以单词id列表表示的翻译前(英文)数据和翻译后(中文)数据\n", - " 按照指定的batch_size进行划分\n", - " 如果shuffle参数为True,则会对这些batch数据顺序进行随机打乱\n", - " \"\"\"\n", - " # 在按数据长度生成的各条数据下标列表[0, 1, ..., len(en)-1]中\n", - " # 每隔指定长度(batch_size)取一个下标作为后续生成batch的起始下标\n", - " idx_list = np.arange(0, len(en), batch_size)\n", - " # 如果shuffle参数为True,则将这些各batch起始下标打乱\n", - " if shuffle:\n", - " np.random.shuffle(idx_list)\n", - " # 存放各个batch批次的句子数据索引下标\n", - " batch_indexs = []\n", - " for idx in idx_list:\n", - " # 注意,起始下标最大的那个batch可能会超出数据大小\n", - " # 因此要限定其终止下标不能超过数据大小\n", - " \"\"\"\n", - " 形如[array([4, 5, 6, 7]), \n", - " array([0, 1, 2, 3]), \n", - " array([8, 9, 10, 11]),\n", - " ...]\n", - " \"\"\"\n", - " batch_indexs.append(np.arange(idx, min(idx + batch_size, len(en))))\n", - " \n", - " # 按各batch批次的句子数据索引下标,构建实际的单词id列表表示的各batch句子数据\n", - " batches = []\n", - " for batch_index in batch_indexs:\n", - " # 按当前batch的各句子下标(数组批量索引)提取对应的单词id列表句子表示数据\n", - " batch_en = [en[index] for index in batch_index] \n", - " batch_cn = [cn[index] for index in batch_index]\n", - " # 对当前batch的各个句子都进行padding对齐长度\n", - " # 维度为:batch数量×batch_size×每个batch最大句子长度\n", - " batch_cn = seq_padding(batch_cn)\n", - " batch_en = seq_padding(batch_en)\n", - " # 将当前batch的英文和中文数据添加到存放所有batch数据的列表中\n", - " batches.append(Batch(batch_en, batch_cn))\n", - "\n", - " return batches" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "注意,上述预处理中使用的 $Batch$ 类在后面的 $Encoder$ 内容的 $Attention\\ Mask$ 部分定义" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Embeddings** \n", - " \n", - "与其他序列传导模型类似,我们使用learned embeddings将输入标记和输出标记转换为维度 $d_{model}$ 的向量。我们还使用通常学习的线性变换和softmax函数将 $Decoder$(解码器)的输出转换为预测的下一个标签的概率。 \n", - " \n", - "在我们的模型中,我们在两个embedding层和pre-softmax线性变换层之间共享相同的权重矩阵。这么做可以节省参数,也是一种正则化方式。 \n", - "在其中的embedding层,我们会将这些权重乘以 $\\sqrt{d_{model}}$ 。" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "class Embeddings(nn.Module):\n", - " def __init__(self, d_model, vocab):\n", - " super(Embeddings, self).__init__()\n", - " # Embedding层\n", - " self.lut = nn.Embedding(vocab, d_model)\n", - " # Embedding维数\n", - " self.d_model = d_model\n", - "\n", - " def forward(self, x):\n", - " # 返回x对应的embedding矩阵(需要乘以math.sqrt(d_model))\n", - " return self.lut(x) * math.sqrt(self.d_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "数据全部处理完成,现在我们开始理解和构建 $Transformer$ 模型" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1. positional encoding(即位置嵌入或位置编码)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "由于 $Transformer$ 模型**没有**循环神经网络的迭代操作,所以我们必须提供每个字的位置信息给 $Transformer$,才能识别出语言中的顺序关系。 \n", - " \n", - "因此,我们定义一个位置嵌入的概念,也就是$positional \\ encoding$,位置嵌入的维度为$[max \\ sequence \\ length,\\ embedding \\ dimension]$,嵌入的维度同词向量的维度,$max \\ sequence \\ length$属于超参数,指的是限定的最大单个句长。 \n", - " \n", - "注意,我们一般以字为单位训练transformer模型,也就是说我们不用分词了,首先我们要初始化字向量为$[vocab \\ size,\\ embedding \\ dimension]$,$vocab \\ size$为总共的字库数量,$embedding \\ dimension$为字向量的维度,也是每个字的数学表达。 \n", - " \n", - "在论文 **attention is all you need**( https://arxiv.org/pdf/1706.03762.pdf )中使用了$sine$和$cosine$函数的线性变换来提供给模型位置信息: \n", - " \n", - "$$PE_{(pos,2i)} = sin(pos / 10000^{2i/d_{\\text{model}}}) \\quad \\quad PE_{(pos,2i+1)} = cos(pos / 10000^{2i/d_{\\text{model}}})\\tag{eq.1}$$ \n", - " \n", - "上式中$pos$指的是句中字的位置,取值范围是$[0, \\ max \\ sequence \\ length)$,$i$指的是词向量的维度,取值范围是$[0, \\ embedding \\ dimension)$,上面有$sin$和$cos$一组公式,也就是对应着$embedding \\ dimension$维度的一组奇数和偶数的序号的维度,例如$0, 1$一组,$2, 3$一组,分别用上面的$sin$和$cos$函数做处理,从而产生不同的周期性变化,而**位置嵌入在$embedding \\ dimension$维度上随着维度序号增大,周期变化会越来越慢**,而产生一种**包含位置信息的纹理**,就像论文原文中第六页讲的,位置嵌入函数的周期从$2 \\pi$到$10000 * 2 \\pi$变化,而每一个位置在$embedding \\ dimension$维度上都会得到不同周期的$sin$和$cos$函数的取值组合,从而产生独一的纹理位置信息,模型从而学到位置之间的依赖关系和自然语言的**时序特性**。 " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# 导入依赖库\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "class PositionalEncoding(nn.Module):\n", - " def __init__(self, d_model, dropout, max_len=5000):\n", - " super(PositionalEncoding, self).__init__()\n", - " self.dropout = nn.Dropout(p=dropout)\n", - " \n", - " # 初始化一个size为 max_len(设定的最大长度)×embedding维度 的全零矩阵\n", - " # 来存放所有小于这个长度位置对应的porisional embedding\n", - " pe = torch.zeros(max_len, d_model, device=DEVICE)\n", - " # 生成一个位置下标的tensor矩阵(每一行都是一个位置下标)\n", - " \"\"\"\n", - " 形式如:\n", - " tensor([[0.],\n", - " [1.],\n", - " [2.],\n", - " [3.],\n", - " [4.],\n", - " ...])\n", - " \"\"\"\n", - " position = torch.arange(0., max_len, device=DEVICE).unsqueeze(1)\n", - " # 这里幂运算太多,我们使用exp和log来转换实现公式中pos下面要除以的分母(由于是分母,要注意带负号)\n", - " div_term = torch.exp(torch.arange(0., d_model, 2, device=DEVICE) * -(math.log(10000.0) / d_model))\n", - " # 得到各个位置在各embedding维度上的位置纹理值,存放到pe矩阵中\n", - " pe[:, 0::2] = torch.sin(position * div_term)\n", - " pe[:, 1::2] = torch.cos(position * div_term)\n", - " # 加1个维度,使得pe维度变为:1×max_len×embedding维度\n", - " # (方便后续与一个batch的句子所有词的embedding批量相加)\n", - " pe = pe.unsqueeze(0) \n", - " # 将pe矩阵以持久的buffer状态存下(不会作为要训练的参数)\n", - " self.register_buffer('pe', pe)\n", - "\n", - " def forward(self, x):\n", - " # 将一个batch的句子所有词的embedding与已构建好的positional embeding相加\n", - " # (这里按照该批次数据的最大句子长度来取对应需要的那些positional embedding值)\n", - " x = x + Variable(self.pe[:, :x.size(1)], requires_grad=False)\n", - " return self.dropout(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "可见,这里首先是按照最大长度max_len生成一个位置,而后根据公式计算出所有的向量,在forward函数中根据长度取用即可,非常方便。 \n", - " \n", - "> 注意要设置requires_grad=False,因其不参与训练。" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "下面画一下位置嵌入,可见纵向观察,随着$embedding \\ dimension$增大,位置嵌入函数呈现不同的周期变化。" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(69.0, 0.5, 'sequence length')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 720x720 with 2 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "pe = PositionalEncoding(16, 0, 100)\n", - "positional_encoding = pe.forward(Variable(torch.zeros(1, 100, 16)))\n", - "plt.figure(figsize=(10,10))\n", - "sns.heatmap(positional_encoding.squeeze())\n", - "plt.title(\"Sinusoidal Function\")\n", - "plt.xlabel(\"hidden dimension\")\n", - "plt.ylabel(\"sequence length\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.legend.Legend at 0x13356ab00>" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 1080x360 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(15, 5))\n", - "pe = PositionalEncoding(20, 0)\n", - "y = pe.forward(Variable(torch.zeros(1, 100, 20)))\n", - "plt.plot(np.arange(100), y[0, :, 4:8].data.numpy())\n", - "plt.legend([\"dim %d\"%p for p in [4,5,6,7]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2. self attention(自注意力机制)\n", - "\n", - "1. multi-attention的实现过程\n", - "2. 数据shape的变化\n", - "3. attention mask的实现方式\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "<img src=\"./imgs/attention_0.jpg\", width=600>\n", - "<img src=\"./imgs/attention_1.jpg\", width=600>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "\n", - "<img src=\"./imgs/attention_0.jpg\", width=600>\n", - "<img src=\"./imgs/attention_1.jpg\", width=600>" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/multi-head.png\", width=550>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/multi-head.png\", width=550>\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**除以$\\sqrt{d_k}$的解释** \n", - " \n", - "假设 $q$ 和 $k$ 是独立的随机变量,平均值为 0,方差 1,这样他们的**点积后**形成的注意力矩阵为 $q⋅k=\\sum_{i=1}^{d_k}{q_i k_i}$,均值为 0 但**方差放大为 $d_k$** 。为了抵消这种影响,我们用$\\sqrt{d_k}$来缩放点积,可以使得Softmax归一化时结果更稳定(不至于点积后得到注意力矩阵的值差别太大),以便**反向传播时获取平衡的梯度**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3. Attention Mask" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/attention_mask.jpg\", width=750>\n", - "<img src=\"./imgs/attention_mask2.jpg\", width=550>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/attention_mask.jpg\", width=750>\n", - "<img src=\"./imgs/attention_mask2.jpg\", width=550>" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "注意, 在上面$self \\ attention$的计算过程中, 我们通常使用$mini \\ batch$来计算, 也就是一次计算多句话, 也就是$X$的维度是$[batch \\ size, \\ sequence \\ length]$, $sequence \\ length$是句长, 而一个$mini \\ batch$是由多个不等长的句子组成的, 我们就需要按照这个$mini \\ batch$中最大的句长对剩余的句子进行补齐长度, **我们一般用$0$来进行填充, 这个过程叫做$padding$**. \n", - " \n", - "但这时在进行$softmax$的时候就会产生问题, 回顾$softmax$函数$\\sigma (\\mathbf {z} )_{i}={\\frac {e^{z_{i}}}{\\sum _{j=1}^{K}e^{z_{j}}}}$, $e^0$是1, 是有值的, 这样的话$softmax$中被$padding$的部分就参与了运算, 就等于是让无效的部分参与了运算, 会产生很大隐患, 这时就需要做一个$mask$让这些无效区域不参与运算, 我们一般给无效区域**加一个很大的负数的偏置**, 也就是: \n", - " \n", - "$$z_{illegal} = z_{illegal} + bias_{illegal}$$\n", - "$$bias_{illegal} \\to -\\infty$$\n", - "$$e^{z_{illegal}} \\to 0 $$ \n", - " \n", - "经过上式的$masking$我们使无效区域经过$softmax$计算之后几乎为$0$, 这样就避免了无效区域参与计算." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "在 $Transformer$ 里面,$Encoder$ 和 $Decoder $的 $Attention$ 计算都需要相应的 $Mask$ 处理,但功能却不同。 \n", - " \n", - "在 $Encoder$ 中,就如上述介绍的,$Mask$ 就是为了让那些在一个 $batch$ 中长度较短的序列的 $padding$ 部分不参与 $Attention$ 的计算。因此我们定义一个 $Batch$ 批处理对象,它包含用于训练的 $src$(翻译前)和 $trg$(翻译后)句子,以及构造其中的 $Mask$ 掩码。 \n", - " \n", - "**加了 $Mask$ 的 $Attention$ 原理如图(另附 $Multi\\text{-}Head\\ Attention$ ):** \n", - "> 注意:这里的 $Attention\\ Mask$ 是加在 $Scale$ 和 $Softmax$ 之间 \n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "def attention(query, key, value, mask=None, dropout=None):\n", - " # 将query矩阵的最后一个维度值作为d_k\n", - " d_k = query.size(-1)\n", - " # 将key的最后两个维度互换(转置),才能与query矩阵相乘,乘完了还要除以d_k开根号\n", - " scores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(d_k)\n", - " # 如果存在要进行mask的内容,则将那些为0的部分替换成一个很大的负数\n", - " if mask is not None:\n", - " scores = scores.masked_fill(mask==0, -1e9)\n", - " # 将mask后的attention矩阵按照最后一个维度进行softmax\n", - " p_attn = F.softmax(scores, dim=-1)\n", - " # 如果dropout参数设置为非空,则进行dropout操作\n", - " if dropout is not None:\n", - " p_attn = dropout(p_attn)\n", - " # 最后返回注意力矩阵跟value的乘积,以及注意力矩阵 ;[batch_size, h, seq_len, embedding_size//h]\n", - " return torch.matmul(p_attn, value), p_attn\n", - "\n", - "\n", - "class MultiHeadedAttention(nn.Module):\n", - " def __init__(self, h, d_model, dropout=0.1):\n", - " super(MultiHeadedAttention, self).__init__()\n", - " # 保证可以整除\n", - " assert d_model % h == 0\n", - " # 得到一个head的attention表示维度\n", - " self.d_k = d_model // h\n", - " # head数量\n", - " self.h = h\n", - " # 定义4个全连接函数,供后续作为WQ,WK,WV矩阵和最后h个多头注意力矩阵concat之后进行变换的矩阵\n", - " self.linears = clones(nn.Linear(d_model, d_model), 4)\n", - " self.attn = None\n", - " self.dropout = nn.Dropout(p=dropout)\n", - "\n", - " def forward(self, query, key, value, mask=None):\n", - " if mask is not None:\n", - " mask = mask.unsqueeze(1)\n", - " # query的第一个维度值为batch size\n", - " nbatches = query.size(0)\n", - " # 将embedding层乘以WQ,WK,WV矩阵(均为全连接)\n", - " # 并将结果拆成h块,然后将第二个和第三个维度值互换(具体过程见上述解析)\n", - " query, key, value = [l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2) \n", - " for l, x in zip(self.linears, (query, key, value))]\n", - " # 调用上述定义的attention函数计算得到h个注意力矩阵跟value的乘积,以 及注意力矩阵\n", - " x, self.attn = attention(query, key, value, mask=mask, dropout=self.dropout)\n", - " # 将h个多头注意力矩阵concat起来(注意要先把h变回到第三维的位置)\n", - " x = x.transpose(1, 2).contiguous().view(nbatches, -1, self.h * self.d_k)\n", - " # 使用self.linears中构造的最后一个全连接函数来存放变换后的矩阵进行返回\n", - " return self.linears[-1](x)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[ True, True, True, False]])\n", - "tensor([[1., 2., 3., -inf]])\n", - "tensor([[0.0900, 0.2447, 0.6652, 0.0000]])\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:10: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n", - " # Remove the CWD from sys.path while we load stuff.\n" - ] - } - ], - "source": [ - "### 理解mask机制,可忽略####\n", - "import torch.nn.functional as F\n", - "import numpy as np\n", - "a = torch.Tensor([1,2,3,0])\n", - "a_mask = (a != 0).unsqueeze(-2)\n", - "a = a.masked_fill(a_mask ==0, value=-np.inf)\n", - "\n", - "print(a_mask)\n", - "print(a)\n", - "b = F.softmax(a)\n", - "print(b)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "参数里面的 $h$ 和 $d_{model}$ 分别表示注意力头的个数,以及模型的隐层单元数。 \n", - " \n", - "另外在 $\\_\\_init\\_\\_$ 函数中,我们定义了 $self.linears = clones(nn.Linear(d_{model},\\; d_{model}),\\; 4),\\; clone(x,\\; N)$ 即为深拷贝N份,这里定义了4个全连接函数,实际上是3+1,其中的3个分别是Q、K和V的变换矩阵,最后一个是用于最后将 $h$ 个多头注意力矩阵concat之后进行变换的矩阵。 \n", - " \n", - "在 $forward$ 函数中,是首先将 $query$、$key$ 和 $value$ 进行相应的变换,然后需要经过 $attention$ 这个函数的计算,这个函数实际上就是论文中“Scaled Dot-Product Attention”这个模块的计算" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "class Batch:\n", - " \"Object for holding a batch of data with mask during training.\"\n", - " def __init__(self, src, trg=None, pad=0):\n", - " # 将输入与输出的单词id表示的数据规范成整数类型\n", - " src = torch.from_numpy(src).to(DEVICE).long()\n", - " trg = torch.from_numpy(trg).to(DEVICE).long()\n", - " self.src = src\n", - " # 对于当前输入的句子非空部分进行判断成bool序列\n", - " # 并在seq length前面增加一维,形成维度为 1×seq length 的矩阵\n", - " self.src_mask = (src != pad).unsqueeze(-2)\n", - " # 如果输出目标不为空,则需要对decoder要使用到的target句子进行mask\n", - " if trg is not None:\n", - " # decoder要用到的target输入部分\n", - " self.trg = trg[:, :-1]\n", - " # decoder训练时应预测输出的target结果\n", - " self.trg_y = trg[:, 1:]\n", - " # 将target输入部分进行attention mask\n", - " self.trg_mask = self.make_std_mask(self.trg, pad)\n", - " # 将应输出的target结果中实际的词数进行统计\n", - " self.ntokens = (self.trg_y != pad).data.sum()\n", - " \n", - " # Mask掩码操作\n", - " @staticmethod\n", - " def make_std_mask(tgt, pad):\n", - " \"Create a mask to hide padding and future words.\"\n", - " tgt_mask = (tgt != pad).unsqueeze(-2)\n", - " tgt_mask = tgt_mask & Variable(subsequent_mask(tgt.size(-1)).type_as(tgt_mask.data))\n", - " return tgt_mask" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4. Layer Normalization 和残差连接" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1). **LayerNorm**: \n", - " \n", - "$Layer Normalization$的作用是把神经网络中隐藏层归一为标准正态分布, 也就是 $i.i.d$(独立同分布), 以起到加快训练速度, 加速收敛的作用:\n", - "$$\\mu_{i}=\\frac{1}{m} \\sum^{m}_{i=1}x_{ij}$$ \n", - " \n", - "上式中以矩阵的行$(row)$为单位求均值; \n", - " \n", - "$$\\sigma^{2}_{j}=\\frac{1}{m} \\sum^{m}_{i=1}\n", - "(x_{ij}-\\mu_{j})^{2}$$ \n", - " \n", - "上式中以矩阵的行$(row)$为单位求方差; \n", - " \n", - "$$LayerNorm(x)=\\alpha \\odot \\frac{x_{ij}-\\mu_{i}}\n", - "{\\sqrt{\\sigma^{2}_{i}+\\epsilon}} + \\beta \\tag{eq.5}$$ \n", - " \n", - "然后用**每一行**的**每一个元素**减去**这行的均值**, 再除以**这行的标准差**, 从而得到归一化后的数值, $\\epsilon$是为了防止除$0$; \n", - "之后引入两个**可训练参数**$\\alpha, \\ \\beta$来弥补归一化的过程中损失掉的信息, 注意$\\odot$表示元素相乘而不是点积, 我们一般初始化$\\alpha$为全$1$, 而$\\beta$为全$0$. \n", - "\n", - "\n", - "\n", - "> 注:有关Batch Normalization和Layer Normalization的区别可参考如下文章——https://zhuanlan.zhihu.com/p/33173246\n", - "- 各种归一化: https://www.jianshu.com/p/05de1f989790 或者\n", - "https://mlexplained.com/2018/11/30/an-overview-of-normalization-methods-in-deep-learning/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- 可以增加训练速度,防止过拟合:如果没有归一化,数据分布都不同,网络需要更大的开销去学习新的分布,造成网络模型更加复杂,因此容易发生过拟合,网络收敛也比较慢。\n", - "- 可以避免激活函数进入非线性饱和区,从而造成梯度弥散问题" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2). **残差连接**: \n", - " \n", - "我们在上一步得到了经过注意力矩阵加权之后的$V$, 也就是$Attention(Q, \\ K, \\ V)$, 我们对它进行一下转置, 使其和$X_{embedding}$的维度一致, 也就是$[batch \\ size, \\ sequence \\ length, \\ embedding \\ dimension]$, 然后把他们加起来做残差连接, 直接进行元素相加, 因为他们的维度一致: \n", - " \n", - "$$X_{embedding} + Attention(Q, \\ K, \\ V)$$ \n", - " \n", - "在之后的运算里, 每经过一个模块的运算, 都要把运算之前的值和运算之后的值相加, 从而得到残差连接, 训练的时候可以使梯度直接走捷径反传到最初始层: \n", - " \n", - "$$X + SubLayer(X) \\tag{eq. 6}$$ \n", - " \n", - "> **注意:这里我们对$SubLayer(X)$一般会进行dropout后再与X连接,即 $X + Dropout(SubLayer(X))$**\n", - "> " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- 网络退化:在神经网络可以收敛的前提下,随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降\n", - "\n", - "Deep Residual Learning for Image Recognition http://arxiv.org/abs/1512.03385\n", - "\n", - "https://zhuanlan.zhihu.com/p/80226180\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/net.png\", width=600>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/net.png\", width=600>" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "class LayerNorm(nn.Module):\n", - " def __init__(self, features, eps=1e-6):\n", - " super(LayerNorm, self).__init__()\n", - " # 初始化α为全1, 而β为全0\n", - " self.a_2 = nn.Parameter(torch.ones(features))# 可训练参数 𝛼, 𝛽 ,因此会在model.parameter中\n", - " self.b_2 = nn.Parameter(torch.zeros(features))\n", - " # 平滑项\n", - " self.eps = eps\n", - "\n", - " def forward(self, x):\n", - " # 按最后一个维度计算均值和方差\n", - " mean = x.mean(-1, keepdim=True)\n", - " std = x.std(-1, keepdim=True)\n", - " # return self.a_2 * (x - mean) / (std + self.eps) + self.b_2\n", - " # 返回Layer Norm的结果\n", - " return self.a_2 * (x - mean) / torch.sqrt(std ** 2 + self.eps) + self.b_2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "以上是 $LayerNormalization$ 的实现,其实PyTorch里面已经集成好了nn.LayerNorm,这里实现出来是为了学习其中的原理。而实际中,为了代码简洁,可以直接使用PyTorch里面实现好的函数。" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "class SublayerConnection(nn.Module):\n", - " \"\"\"\n", - " SublayerConnection的作用就是把Multi-Head Attention和Feed Forward层连在一起\n", - " 只不过每一层输出之后都要先做Layer Norm再残差连接\n", - " \"\"\"\n", - " def __init__(self, size, dropout):\n", - " super(SublayerConnection, self).__init__()\n", - " self.norm = LayerNorm(size)\n", - " self.dropout = nn.Dropout(dropout)\n", - "\n", - " def forward(self, x, sublayer):\n", - " # 返回Layer Norm和残差连接后结果\n", - " return x + self.dropout(sublayer(self.norm(x)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 5. Transformer Encoder 整体结构" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "经过上面4个步骤, 我们已经基本了解到来$transformer$编码器的主要构成部分, 我们下面用公式把一个$transformer \\ block$的计算过程整理一下: \n", - " \n", - "1). **字向量与位置编码:** \n", - "$$X = EmbeddingLookup(X) + PositionalEncoding \\tag{eq.2}$$\n", - "$$X \\in \\mathbb{R}^{batch \\ size \\ * \\ seq. \\ len. \\ * \\ embed. \\ dim.} $$ \n", - " \n", - "2). **自注意力机制:** \n", - "$$Q = Linear(X) = XW_{Q}$$ \n", - "$$K = Linear(X) = XW_{K} \\tag{eq.3}$$\n", - "$$V = Linear(X) = XW_{V}$$\n", - "$$X_{attention} = SelfAttention(Q, \\ K, \\ V) \\tag{eq.4}$$ \n", - " \n", - "3). **残差连接与$Layer \\ Normalization$**\n", - "$$X_{attention} = LayerNorm(X_{attention}) \\tag{eq. 5}$$\n", - "$$X_{attention} = X + X_{attention} \\tag{eq. 6}$$ \n", - " \n", - "4). **$FeedForward$,其实就是两层线性映射并用激活函数(比如说$ReLU$)激活:** \n", - "$$X_{hidden} = Linear(Activate(Linear(X_{attention}))) \\tag{eq. 7}$$ \n", - " \n", - "5). **重复3).:**\n", - "$$X_{hidden} = LayerNorm(X_{hidden})$$\n", - "$$X_{hidden} = X_{attention} + X_{hidden}$$\n", - "$$X_{hidden} \\in \\mathbb{R}^{batch \\ size \\ * \\ seq. \\ len. \\ * \\ embed. \\ dim.} $$" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/encoder2.png\", width=750>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/encoder2.png\", width=750>" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "def clones(module, N):\n", - " \"\"\"\n", - " 克隆模型块,克隆的模型块参数不共享\n", - " \"\"\"\n", - " return nn.ModuleList([copy.deepcopy(module) for _ in range(N)])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$Feed Forward$(前馈网络)层其实就是两层线性映射并用激活函数激活" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "class PositionwiseFeedForward(nn.Module):\n", - " def __init__(self, d_model, d_ff, dropout=0.1):\n", - " super(PositionwiseFeedForward, self).__init__()\n", - " self.w_1 = nn.Linear(d_model, d_ff)\n", - " self.w_2 = nn.Linear(d_ff, d_model)\n", - " self.dropout = nn.Dropout(dropout)\n", - "\n", - " def forward(self, x):\n", - " return self.w_2(self.dropout(F.relu(self.w_1(x))))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$Encoder$ 由 $N=6$ 个相同的层组成。" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "class Encoder(nn.Module):\n", - " # layer = EncoderLayer\n", - " # N = 6\n", - " def __init__(self, layer, N):\n", - " super(Encoder, self).__init__()\n", - " # 复制N个encoder layer\n", - " self.layers = clones(layer, N)\n", - " # Layer Norm\n", - " self.norm = LayerNorm(layer.size)\n", - "\n", - " def forward(self, x, mask):\n", - " \"\"\"\n", - " 使用循环连续eecode N次(这里为6次)\n", - " 这里的Eecoderlayer会接收一个对于输入的attention mask处理\n", - " \"\"\"\n", - " for layer in self.layers:\n", - " x = layer(x, mask)\n", - " return self.norm(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "每层 $Encoder\\ Block$ 都有两个子层组成。第一个子层实现了“多头”的 $Self\\text{-}attention$,第二个子层则是一个简单的 $Position\\text{-}wise$ 的全连接前馈网络。" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "class EncoderLayer(nn.Module):\n", - " def __init__(self, size, self_attn, feed_forward, dropout):\n", - " super(EncoderLayer, self).__init__()\n", - " self.self_attn = self_attn\n", - " self.feed_forward = feed_forward\n", - " # SublayerConnection的作用就是把multi和ffn连在一起\n", - " # 只不过每一层输出之后都要先做Layer Norm再残差连接\n", - " self.sublayer = clones(SublayerConnection(size, dropout), 2)\n", - " # d_model\n", - " self.size = size\n", - "\n", - " def forward(self, x, mask):\n", - " # 将embedding层进行Multi head Attention\n", - " x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, mask))\n", - " # 注意到attn得到的结果x直接作为了下一层的输入\n", - " return self.sublayer[1](x, self.feed_forward)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 三. 解码器部分(Decoder)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "<img src=\"./imgs/decoder.jpg\", width=800>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "\n", - "<img src=\"./imgs/decoder.jpg\", width=800>" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "接着来看 $Decoder$ 部分(右半部分),它同样也是由 $N$ 层(在论文中,仍取 $N=6$ )堆叠起来。 \n", - "> 对于其中的每一层,除了与 $Encoder$ 中相同的 $self\\text{-}attention$ 及 $Feed Forward$ 两层之外,还在中间插入了一个传统的 $Encoder\\text{-}Decoder$ 框架中的 $context\\text{-}attention$ 层(上图中的$sub\\text{-}layer\\ 2$),即将 $Decoder$ 的输出作为 $query$ 去查询 $Encoder$ 的输出,同样用的是 $Multi\\text{-}Head\\ Attention$ ,使得在 $Decode$ 的时候能看到 $Encoder$ 的所有输出。 \n", - " \n", - "这里明确一下 **$Decoder$ 的输入输出和解码过程:**\n", - "\n", - "- 输入:$Encoder$ 的输出 & 对应 $i-1$ 位置 $Decoder$ 的输出。所以中间的 $Attention$ 不是 $Self\\text{-}Attention$ ,它的 $K$,$V$ 来自 $Encoder$ ,Q来自上一位置 $Decoder$ 的输出\n", - "- 输出:对应 $i$ 位置的输出词的概率分布\n", - "- 解码:这里要特别注意一下,编码可以并行计算,一次性全部encoding出来,但解码不是一次把所有序列解出来的,而是像rnn一样一个一个解出来的,因为要用上一个位置的输入当作 $Attention$ 的 $query$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "这里 ** $Encoder$ 和 $Decoder$ 的 $Attention$ 的区别如下图所示** \n" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/attention.png\", width=800>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/attention.png\", width=800>" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "class Decoder(nn.Module):\n", - " def __init__(self, layer, N):\n", - " super(Decoder, self).__init__()\n", - " # 复制N个decoder layer\n", - " self.layers = clones(layer, N)\n", - " # Layer Norm\n", - " self.norm = LayerNorm(layer.size)\n", - "\n", - " def forward(self, x, memory, src_mask, tgt_mask):\n", - " \"\"\"\n", - " 使用循环连续decode N次(这里为6次)\n", - " 这里的Decoderlayer会接收一个对于输入的attention mask处理\n", - " 和一个对输出的attention mask + subsequent mask处理\n", - " \"\"\"\n", - " for layer in self.layers:\n", - " x = layer(x, memory, src_mask, tgt_mask)\n", - " return self.norm(x)\n", - "\n", - "\n", - "class DecoderLayer(nn.Module):\n", - " def __init__(self, size, self_attn, src_attn, feed_forward, dropout):\n", - " super(DecoderLayer, self).__init__()\n", - " self.size = size\n", - " # Self-Attention\n", - " self.self_attn = self_attn\n", - " # 与Encoder传入的Context进行Attention\n", - " self.src_attn = src_attn\n", - " self.feed_forward = feed_forward\n", - " self.sublayer = clones(SublayerConnection(size, dropout), 3)\n", - "\n", - " def forward(self, x, memory, src_mask, tgt_mask):\n", - " # 用m来存放encoder的最终hidden表示结果\n", - " m = memory\n", - " # self-attention的q,k和v均为decoder hidden\n", - " x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask))\n", - " # context-attention的q为decoder hidden,而k和v为encoder hidden\n", - " x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))\n", - " return self.sublayer[2](x, self.feed_forward)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "明确了解码过程之后最上面的图就很好懂了,这里主要的不同就是新加的另外要说一下新加的attention多加了一个 $subsequent\\_mask$ ,因为训练时的output都是ground truth,这样可以确保预测第 $i$ 个位置时不会接触到未来的信息,具体解释如下。\n", - "\n", - "对于 $Encoder$ 中 $src$ 的 $mask$ 方式就比较简单,直接把 $pad$ 部分给 $mask$ 掉即可。 \n", - "但对于 $Decoder$ 中 $trg$ 的 $mask$ 计算略微复杂一些,不仅需要把 $pad$ 部分 $mask$ 掉,还需要进行一个 $subsequent\\_mask$ 的操作。 \n", - "即作为 $decoder$,在预测当前步的时候,是不能知道后面的内容的,即 $attention$ 需要加上 $mask$,将当前步之后的分数全部置为$-\\infty$,然后再计算 $softmax$,以防止发生数据泄露。这种 $Masked$ 的 $Attention$ 是考虑到输出 $Embedding$ 会偏移一个位置,确保了生成位置 $i$ 的预测时,仅依赖小于 $i$ 的位置处的已知输出,相当于把后面不该看到的信息屏蔽掉。 " - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "def subsequent_mask(size):\n", - " \"Mask out subsequent positions.\"\n", - " # 设定subsequent_mask矩阵的shape\n", - " attn_shape = (1, size, size)\n", - " # 生成一个右上角(不含主对角线)为全1,左下角(含主对角线)为全0的subsequent_mask矩阵\n", - " subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8')\n", - " # 返回一个右上角(不含主对角线)为全False,左下角(含主对角线)为全True的subsequent_mask矩阵\n", - " return torch.from_numpy(subsequent_mask) == 0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "我们可视化一下 $subsequent\\_mask$ 矩阵的形式,直观进行理解。 \n", - "这里的 $Attention mask$ 图显示了允许每个目标词(行)查看的位置(列)。在训练期间,当前解码位置的词不能 $Attend$ 到后续位置的词。 \n", - " \n", - "> 这里是给定一个序列长度size,生成一个下三角矩阵,在主对角线右上的都是 False,其示意图如下: \n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<img src=\"./imgs/subsequent_mask.png\", width=450> " - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%%html\n", - "<img src=\"./imgs/subsequent_mask.png\", width=450> " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "就是在decoder层的self-Attention中,由于生成 $s_i$ 时, $s_{i+1}$ 并没有产生,所以不能有 $s_i$ 和 $s_{i+1}$ 的关联系数,即只有下三角矩阵有系数,即下图中**`黄色部分`**。" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.image.AxesImage at 0x133773048>" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 360x360 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(5,5))\n", - "plt.imshow(subsequent_mask(20)[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 四. Transformer模型\n", - " \n", - "最后,我们把 $Encoder$ 和 $Decoder$ 组成 $Transformer$ 模型" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "class Transformer(nn.Module):\n", - " def __init__(self, encoder, decoder, src_embed, tgt_embed, generator):\n", - " super(Transformer, self).__init__()\n", - " self.encoder = encoder\n", - " self.decoder = decoder\n", - " self.src_embed = src_embed\n", - " self.tgt_embed = tgt_embed\n", - " self.generator = generator \n", - "\n", - " def encode(self, src, src_mask):\n", - " return self.encoder(self.src_embed(src), src_mask)\n", - "\n", - " def decode(self, memory, src_mask, tgt, tgt_mask):\n", - " return self.decoder(self.tgt_embed(tgt), memory, src_mask, tgt_mask)\n", - "\n", - " def forward(self, src, tgt, src_mask, tgt_mask):\n", - " # encoder的结果作为decoder的memory参数传入,进行decode\n", - " return self.decode(self.encode(src, src_mask), src_mask, tgt, tgt_mask)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "class Generator(nn.Module):\n", - " # vocab: tgt_vocab\n", - " def __init__(self, d_model, vocab):\n", - " super(Generator, self).__init__()\n", - " # decode后的结果,先进入一个全连接层变为词典大小的向量\n", - " self.proj = nn.Linear(d_model, vocab)\n", - "\n", - " def forward(self, x):\n", - " # 然后再进行log_softmax操作(在softmax结果上再做多一次log运算)\n", - " return F.log_softmax(self.proj(x), dim=-1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**定义设置超参并连接完整模型的函数**" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "def make_model(src_vocab, tgt_vocab, N=6, d_model=512, d_ff=2048, h = 8, dropout=0.1):\n", - " c = copy.deepcopy\n", - " # 实例化Attention对象\n", - " attn = MultiHeadedAttention(h, d_model).to(DEVICE)\n", - " # 实例化FeedForward对象\n", - " ff = PositionwiseFeedForward(d_model, d_ff, dropout).to(DEVICE)\n", - " # 实例化PositionalEncoding对象\n", - " position = PositionalEncoding(d_model, dropout).to(DEVICE)\n", - " # 实例化Transformer模型对象\n", - " model = Transformer(\n", - " Encoder(EncoderLayer(d_model, c(attn), c(ff), dropout).to(DEVICE), N).to(DEVICE),\n", - " Decoder(DecoderLayer(d_model, c(attn), c(attn), c(ff), dropout).to(DEVICE), N).to(DEVICE),\n", - " nn.Sequential(Embeddings(d_model, src_vocab).to(DEVICE), c(position)),\n", - " nn.Sequential(Embeddings(d_model, tgt_vocab).to(DEVICE), c(position)),\n", - " Generator(d_model, tgt_vocab)).to(DEVICE)\n", - " \n", - " # This was important from their code. \n", - " # Initialize parameters with Glorot / fan_avg.\n", - " for p in model.parameters():\n", - " if p.dim() > 1:\n", - " # 这里初始化采用的是nn.init.xavier_uniform\n", - " nn.init.xavier_uniform_(p)\n", - " return model.to(DEVICE)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 五. 模型训练" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**标签平滑**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "在训练期间,我们采用了值$\\epsilon_{ls}=0.1$的标签平滑(参见: https://arxiv.org/pdf/1512.00567.pdf ),其实还是从$Computer\\; Vision$上搬过来的,具体操作可以看下面的代码实现,**在这里不作为重点**。 \n", - " \n", - "这种做法提高了困惑度,因为模型变得更加不确定,但提高了准确性和BLEU分数。 \n", - ">我们使用 $KL\\; div\\; loss$(KL散度损失)实现标签平滑。 \n", - "对于输出的分布,从原始的 $one\\text{-}hot$ 分布转为在groundtruth上使用一个confidence值,而后其他的所有非groudtruth标签上采用 $\\frac{1 - confidence}{odim - 1}$ 作为概率值进行平滑。" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [], - "source": [ - "class LabelSmoothing(nn.Module):\n", - " \"\"\"标签平滑处理\n", - " 其实就是用以下公式对真实标签概率分布q_i进行改造,以克服one-hot的缺点:\n", - " qi=1-smoothing , (if i=y)\n", - " qi=smoothing / (self.size - 1) ,otherwise\n", - " \"\"\"\n", - " def __init__(self, size, padding_idx, smoothing=0.0):\n", - " super(LabelSmoothing, self).__init__()\n", - " self.criterion = nn.KLDivLoss(reduction='sum')\n", - " self.padding_idx = padding_idx\n", - " self.confidence = 1.0 - smoothing \n", - " self.smoothing = smoothing\n", - " self.size = size\n", - " self.true_dist = None\n", - " \n", - " def forward(self, x, target):\n", - " \"\"\"\n", - " 获取标签平滑分布后的true_dist\n", - " \n", - " x: predict出的N个样本,M个标签的概率,shape(N,M) \n", - " target: 表示true label index\n", - " \"\"\"\n", - " assert x.size(1) == self.size\n", - " true_dist = x.data.clone() \n", - " true_dist.fill_(self.smoothing / (self.size - 2)) # 默认填充 smoothing / (self.size - 1) 可以在例子中打印出来理解\n", - " #print(true_dist)\n", - " true_dist.scatter_(1, target.data.unsqueeze(1), self.confidence)# 在target位置,将self.confidence填充\n", - " #print(true_dist)\n", - " true_dist[:, self.padding_idx] = 0\n", - " mask = torch.nonzero(target.data == self.padding_idx)\n", - " if mask.dim() > 0:\n", - " true_dist.index_fill_(0, mask.squeeze(), 0.0)\n", - " self.true_dist = true_dist\n", - " return self.criterion(x, Variable(true_dist, requires_grad=False))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "这里的size是输出词表的大小,smoothing是用于分摊在非groundtruth上面的概率值。" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "在这里,我们可以看到标签平滑的示例。" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[0.1333, 0.1333, 0.1333, 0.1333, 0.1333],\n", - " [0.1333, 0.1333, 0.1333, 0.1333, 0.1333],\n", - " [0.1333, 0.1333, 0.1333, 0.1333, 0.1333]])\n", - "tensor([[0.1333, 0.1333, 0.6000, 0.1333, 0.1333],\n", - " [0.1333, 0.6000, 0.1333, 0.1333, 0.1333],\n", - " [0.6000, 0.1333, 0.1333, 0.1333, 0.1333]])\n", - "tensor([[0.0000, 0.1333, 0.6000, 0.1333, 0.1333],\n", - " [0.0000, 0.6000, 0.1333, 0.1333, 0.1333],\n", - " [0.0000, 0.0000, 0.0000, 0.0000, 0.0000]])\n" - ] - }, - { - "data": { - "text/plain": [ - "<matplotlib.image.AxesImage at 0x133f3a518>" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Label smoothing的例子\n", - "crit = LabelSmoothing(5, 0, 0.4) # 设定一个ϵ=0.4\n", - "\n", - "predict = torch.FloatTensor([[0, 0.2, 0.7, 0.1, 0],\n", - " [0, 0.2, 0.7, 0.1, 0], \n", - " [0, 0.2, 0.7, 0.1, 0]])\n", - "v = crit(Variable(predict.log()), \n", - " Variable(torch.LongTensor([2, 1, 0])))# 第二个target参数,设定正确标签的位置\n", - "\n", - "\n", - "# Show the target distributions expected by the system.\n", - "print(crit.true_dist)\n", - "plt.imshow(crit.true_dist)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "如果对给定的选择非常有信心,标签平滑实际上会开始惩罚模型。" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[<matplotlib.lines.Line2D at 0x12f405e10>]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "crit = LabelSmoothing(5, 0, 0.1)\n", - "def loss(x):\n", - " d = x + 3 * 1\n", - " predict = torch.FloatTensor([[0, x / d, 1 / d, 1 / d, 1 / d]])\n", - " #print(predict)\n", - " return crit(Variable(predict.log()), Variable(torch.LongTensor([1]))).item()\n", - "\n", - "plt.plot(np.arange(1, 100), [loss(x) for x in range(1, 100)])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**计算损失**" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "class SimpleLossCompute:\n", - " \"\"\"\n", - " 简单的计算损失和进行参数反向传播更新训练的函数\n", - " \"\"\"\n", - " def __init__(self, generator, criterion, opt=None):\n", - " self.generator = generator\n", - " self.criterion = criterion\n", - " self.opt = opt\n", - " \n", - " def __call__(self, x, y, norm):\n", - " x = self.generator(x)\n", - " loss = self.criterion(x.contiguous().view(-1, x.size(-1)), \n", - " y.contiguous().view(-1)) / norm\n", - " loss.backward()\n", - " if self.opt is not None:\n", - " self.opt.step()\n", - " self.opt.optimizer.zero_grad()\n", - " return loss.data.item() * norm.float()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**optimizer优化器**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "论文里面提到了他们用的优化器,是以$\\beta_1=0.9、\\beta_2=0.98$ 和 $\\epsilon = 10^{−9}$ 的 $Adam$ 为基础,而后使用一种warmup的学习率调整方式来进行调节。 \n", - "具体公式如下: \n", - " \n", - "$$ lrate = d^{−0.5}_{model}⋅min(step\\_num^{−0.5},\\; step\\_num⋅warmup\\_steps^{−1.5})$$ \n", - "\n", - "基本上就是用一个固定的 $warmup\\_steps$ **先进行学习率的线性增长(热身)**,而后到达 $warmup\\_steps$ 之后会随着 $step\\_num$ 的增长,以 $step\\_num$(步数)的反平方根成比例地**逐渐减小它**,他们用的 $warmup\\_steps = 4000$ ,这个可以针对不同的问题自己尝试。" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "class NoamOpt:\n", - " \"Optim wrapper that implements rate.\"\n", - " def __init__(self, model_size, factor, warmup, optimizer):\n", - " self.optimizer = optimizer\n", - " self._step = 0\n", - " self.warmup = warmup\n", - " self.factor = factor\n", - " self.model_size = model_size\n", - " self._rate = 0\n", - " \n", - " def step(self):\n", - " \"Update parameters and rate\"\n", - " self._step += 1\n", - " rate = self.rate()\n", - " for p in self.optimizer.param_groups:\n", - " p['lr'] = rate\n", - " self._rate = rate\n", - " self.optimizer.step()\n", - " \n", - " def rate(self, step = None):\n", - " \"Implement `lrate` above\"\n", - " if step is None:\n", - " step = self._step\n", - " return self.factor * (self.model_size ** (-0.5) * min(step ** (-0.5), step * self.warmup ** (-1.5)))\n", - " \n", - "def get_std_opt(model):\n", - " return NoamOpt(model.src_embed[0].d_model, 2, 4000,\n", - " torch.optim.Adam(model.parameters(), lr=0, betas=(0.9, 0.98), eps=1e-9))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "主要调节是在 $rate$ 这个函数中,其中\n", - "- $model\\_size$ 即为 $d_{model}$\n", - "- $warmup$ 即为 $warmup\\_steps$\n", - "- $factor$ 可以理解为初始的学习率" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "以下对该优化器在**不同模型大小($model\\_size$)**和**不同超参数($marmup$)值**的情况下的学习率($lrate$)曲线进行示例。 " - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<matplotlib.legend.Legend at 0x12f6926d8>" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Three settings of the lrate hyperparameters.\n", - "opts = [NoamOpt(512, 1, 4000, None), \n", - " NoamOpt(512, 1, 8000, None),\n", - " NoamOpt(256, 1, 4000, None)]\n", - "plt.plot(np.arange(1, 20000), [[opt.rate(i) for opt in opts] for i in range(1, 20000)])\n", - "plt.legend([\"512:4000\", \"512:8000\", \"256:4000\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**训练迭代**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "接下来,我们创建一个通用的训练和评分功能来跟踪损失。 我们传入一个上面定义的损失计算函数,它也处理参数更新。" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "def run_epoch(data, model, loss_compute, epoch):\n", - " start = time.time()\n", - " total_tokens = 0.\n", - " total_loss = 0.\n", - " tokens = 0.\n", - "\n", - " for i , batch in enumerate(data):\n", - " out = model(batch.src, batch.trg, batch.src_mask, batch.trg_mask)\n", - " loss = loss_compute(out, batch.trg_y, batch.ntokens)# 调用SimpleLossCompute\n", - "\n", - " total_loss += loss\n", - " total_tokens += batch.ntokens\n", - " tokens += batch.ntokens\n", - "\n", - " if i % 50 == 1:\n", - " elapsed = time.time() - start\n", - " print(\"Epoch %d Batch: %d Loss: %f Tokens per Sec: %fs\" % (epoch, i - 1, loss / batch.ntokens, (tokens.float() / elapsed / 1000.)))\n", - " start = time.time()\n", - " tokens = 0\n", - "\n", - " return total_loss / total_tokens\n", - "\n", - "\n", - "def train(data, model, criterion, optimizer):\n", - " \"\"\"\n", - " 训练并保存模型\n", - " \"\"\"\n", - " # 初始化模型在dev集上的最优Loss为一个较大值\n", - " best_dev_loss = 1e5\n", - " \n", - " for epoch in range(EPOCHS):\n", - " # 模型训练\n", - " model.train()\n", - " run_epoch(data.train_data, model, SimpleLossCompute(model.generator, criterion, optimizer), epoch)\n", - " model.eval()\n", - "\n", - " # 在dev集上进行loss评估\n", - " print('>>>>> Evaluate')\n", - " dev_loss = run_epoch(data.dev_data, model, SimpleLossCompute(model.generator, criterion, None), epoch)\n", - " print('<<<<< Evaluate loss: %f' % dev_loss)\n", - " # 如果当前epoch的模型在dev集上的loss优于之前记录的最优loss则保存当前模型,并更新最优loss值\n", - " if dev_loss < best_dev_loss:\n", - " torch.save(model.state_dict(), SAVE_FILE)\n", - " best_dev_loss = dev_loss\n", - " print('****** Save model done... ******')\n", - " print()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "src_vocab 5493\n", - "tgt_vocab 3194\n", - ">>>>>>> start train\n", - "Epoch 0 Batch: 0 Loss: 8.186574 Tokens per Sec: 0.343452s\n", - "Epoch 0 Batch: 50 Loss: 7.249681 Tokens per Sec: 0.568038s\n", - "Epoch 0 Batch: 100 Loss: 6.660586 Tokens per Sec: 0.539542s\n", - "Epoch 0 Batch: 150 Loss: 5.346657 Tokens per Sec: 0.551980s\n", - "Epoch 0 Batch: 200 Loss: 5.305323 Tokens per Sec: 0.544316s\n", - ">>>>> Evaluate\n", - "Epoch 0 Batch: 0 Loss: 4.867167 Tokens per Sec: 0.723604s\n", - "<<<<< Evaluate loss: 5.123752\n", - "****** Save model done... ******\n", - "\n", - "Epoch 1 Batch: 0 Loss: 5.119389 Tokens per Sec: 0.502394s\n", - "Epoch 1 Batch: 50 Loss: 5.005953 Tokens per Sec: 0.577994s\n", - "Epoch 1 Batch: 100 Loss: 4.992966 Tokens per Sec: 0.581453s\n", - "Epoch 1 Batch: 150 Loss: 4.047616 Tokens per Sec: 0.574549s\n", - "Epoch 1 Batch: 200 Loss: 4.548547 Tokens per Sec: 0.535543s\n", - ">>>>> Evaluate\n", - "Epoch 1 Batch: 0 Loss: 4.020230 Tokens per Sec: 0.553945s\n", - "<<<<< Evaluate loss: 4.365445\n", - "****** Save model done... ******\n", - "\n", - "Epoch 2 Batch: 0 Loss: 4.608341 Tokens per Sec: 0.550981s\n", - "Epoch 2 Batch: 50 Loss: 4.323602 Tokens per Sec: 0.570121s\n", - "Epoch 2 Batch: 100 Loss: 4.328726 Tokens per Sec: 0.563766s\n", - "Epoch 2 Batch: 150 Loss: 3.350990 Tokens per Sec: 0.528580s\n", - "Epoch 2 Batch: 200 Loss: 3.906872 Tokens per Sec: 0.574401s\n", - ">>>>> Evaluate\n", - "Epoch 2 Batch: 0 Loss: 3.351342 Tokens per Sec: 0.670332s\n", - "<<<<< Evaluate loss: 3.717736\n", - "****** Save model done... ******\n", - "\n", - "Epoch 3 Batch: 0 Loss: 4.045519 Tokens per Sec: 0.614966s\n", - "Epoch 3 Batch: 50 Loss: 3.639260 Tokens per Sec: 0.611718s\n", - "Epoch 3 Batch: 100 Loss: 3.766464 Tokens per Sec: 0.591960s\n", - "Epoch 3 Batch: 150 Loss: 2.721127 Tokens per Sec: 0.595119s\n", - "Epoch 3 Batch: 200 Loss: 3.307780 Tokens per Sec: 0.560185s\n", - ">>>>> Evaluate\n", - "Epoch 3 Batch: 0 Loss: 2.808630 Tokens per Sec: 0.599976s\n", - "<<<<< Evaluate loss: 3.177440\n", - "****** Save model done... ******\n", - "\n", - "Epoch 4 Batch: 0 Loss: 3.291773 Tokens per Sec: 0.591038s\n", - "Epoch 4 Batch: 50 Loss: 3.098440 Tokens per Sec: 0.567028s\n", - "Epoch 4 Batch: 100 Loss: 3.296104 Tokens per Sec: 0.558639s\n", - "Epoch 4 Batch: 150 Loss: 2.179993 Tokens per Sec: 0.567395s\n", - "Epoch 4 Batch: 200 Loss: 2.786399 Tokens per Sec: 0.545375s\n", - ">>>>> Evaluate\n", - "Epoch 4 Batch: 0 Loss: 2.348591 Tokens per Sec: 0.603132s\n", - "<<<<< Evaluate loss: 2.736712\n", - "****** Save model done... ******\n", - "\n", - "Epoch 5 Batch: 0 Loss: 2.955820 Tokens per Sec: 0.528262s\n", - "Epoch 5 Batch: 50 Loss: 2.637029 Tokens per Sec: 0.543970s\n", - "Epoch 5 Batch: 100 Loss: 2.848699 Tokens per Sec: 0.549012s\n", - "Epoch 5 Batch: 150 Loss: 1.842778 Tokens per Sec: 0.539896s\n", - "Epoch 5 Batch: 200 Loss: 2.418650 Tokens per Sec: 0.515963s\n", - ">>>>> Evaluate\n", - "Epoch 5 Batch: 0 Loss: 1.952506 Tokens per Sec: 0.593210s\n", - "<<<<< Evaluate loss: 2.385017\n", - "****** Save model done... ******\n", - "\n", - "Epoch 6 Batch: 0 Loss: 2.515652 Tokens per Sec: 0.503146s\n", - "Epoch 6 Batch: 50 Loss: 2.269305 Tokens per Sec: 0.524827s\n", - "Epoch 6 Batch: 100 Loss: 2.538815 Tokens per Sec: 0.535245s\n", - "Epoch 6 Batch: 150 Loss: 1.604502 Tokens per Sec: 0.544136s\n", - "Epoch 6 Batch: 200 Loss: 2.108554 Tokens per Sec: 0.502229s\n", - ">>>>> Evaluate\n", - "Epoch 6 Batch: 0 Loss: 1.762980 Tokens per Sec: 0.640698s\n", - "<<<<< Evaluate loss: 2.089270\n", - "****** Save model done... ******\n", - "\n", - "Epoch 7 Batch: 0 Loss: 2.195352 Tokens per Sec: 0.575534s\n", - "Epoch 7 Batch: 50 Loss: 2.001102 Tokens per Sec: 0.549312s\n", - "Epoch 7 Batch: 100 Loss: 2.338117 Tokens per Sec: 0.508240s\n", - "Epoch 7 Batch: 150 Loss: 1.373803 Tokens per Sec: 0.524539s\n", - "Epoch 7 Batch: 200 Loss: 1.874349 Tokens per Sec: 0.517971s\n", - ">>>>> Evaluate\n", - "Epoch 7 Batch: 0 Loss: 1.507982 Tokens per Sec: 0.640028s\n", - "<<<<< Evaluate loss: 1.866286\n", - "****** Save model done... ******\n", - "\n", - "Epoch 8 Batch: 0 Loss: 2.028495 Tokens per Sec: 0.564086s\n", - "Epoch 8 Batch: 50 Loss: 1.837332 Tokens per Sec: 0.565610s\n", - "Epoch 8 Batch: 100 Loss: 2.062461 Tokens per Sec: 0.556410s\n", - "Epoch 8 Batch: 150 Loss: 1.204374 Tokens per Sec: 0.506357s\n", - "Epoch 8 Batch: 200 Loss: 1.757147 Tokens per Sec: 0.551611s\n", - ">>>>> Evaluate\n", - "Epoch 8 Batch: 0 Loss: 1.345340 Tokens per Sec: 0.628107s\n", - "<<<<< Evaluate loss: 1.708855\n", - "****** Save model done... ******\n", - "\n", - "Epoch 9 Batch: 0 Loss: 1.751891 Tokens per Sec: 0.555931s\n", - "Epoch 9 Batch: 50 Loss: 1.631014 Tokens per Sec: 0.568454s\n", - "Epoch 9 Batch: 100 Loss: 1.970388 Tokens per Sec: 0.550006s\n", - "Epoch 9 Batch: 150 Loss: 1.063184 Tokens per Sec: 0.555602s\n", - "Epoch 9 Batch: 200 Loss: 1.525495 Tokens per Sec: 0.562885s\n", - ">>>>> Evaluate\n", - "Epoch 9 Batch: 0 Loss: 1.173944 Tokens per Sec: 0.639739s\n", - "<<<<< Evaluate loss: 1.506268\n", - "****** Save model done... ******\n", - "\n", - "Epoch 10 Batch: 0 Loss: 1.556676 Tokens per Sec: 0.550268s\n", - "Epoch 10 Batch: 50 Loss: 1.429044 Tokens per Sec: 0.580436s\n", - "Epoch 10 Batch: 100 Loss: 1.677786 Tokens per Sec: 0.575427s\n", - "Epoch 10 Batch: 150 Loss: 0.906900 Tokens per Sec: 0.562696s\n", - "Epoch 10 Batch: 200 Loss: 1.356215 Tokens per Sec: 0.572371s\n", - ">>>>> Evaluate\n", - "Epoch 10 Batch: 0 Loss: 1.033853 Tokens per Sec: 0.657104s\n", - "<<<<< Evaluate loss: 1.303166\n", - "****** Save model done... ******\n", - "\n", - "Epoch 11 Batch: 0 Loss: 1.290075 Tokens per Sec: 0.580474s\n", - "Epoch 11 Batch: 50 Loss: 1.197960 Tokens per Sec: 0.590299s\n", - "Epoch 11 Batch: 100 Loss: 1.513839 Tokens per Sec: 0.583017s\n", - "Epoch 11 Batch: 150 Loss: 0.785657 Tokens per Sec: 0.585501s\n", - "Epoch 11 Batch: 200 Loss: 1.184291 Tokens per Sec: 0.581097s\n", - ">>>>> Evaluate\n", - "Epoch 11 Batch: 0 Loss: 0.901885 Tokens per Sec: 0.679239s\n", - "<<<<< Evaluate loss: 1.134895\n", - "****** Save model done... ******\n", - "\n", - "Epoch 12 Batch: 0 Loss: 1.192283 Tokens per Sec: 0.575042s\n", - "Epoch 12 Batch: 50 Loss: 1.055723 Tokens per Sec: 0.596405s\n", - "Epoch 12 Batch: 100 Loss: 1.382256 Tokens per Sec: 0.590734s\n", - "Epoch 12 Batch: 150 Loss: 0.678652 Tokens per Sec: 0.593792s\n", - "Epoch 12 Batch: 200 Loss: 1.011385 Tokens per Sec: 0.584680s\n", - ">>>>> Evaluate\n", - "Epoch 12 Batch: 0 Loss: 0.735838 Tokens per Sec: 0.689374s\n", - "<<<<< Evaluate loss: 0.980917\n", - "****** Save model done... ******\n", - "\n", - "Epoch 13 Batch: 0 Loss: 1.004684 Tokens per Sec: 0.590484s\n", - "Epoch 13 Batch: 50 Loss: 0.978321 Tokens per Sec: 0.603840s\n", - "Epoch 13 Batch: 100 Loss: 1.207301 Tokens per Sec: 0.596763s\n", - "Epoch 13 Batch: 150 Loss: 0.599218 Tokens per Sec: 0.598010s\n", - "Epoch 13 Batch: 200 Loss: 0.863329 Tokens per Sec: 0.588611s\n", - ">>>>> Evaluate\n", - "Epoch 13 Batch: 0 Loss: 0.654533 Tokens per Sec: 0.688268s\n", - "<<<<< Evaluate loss: 0.838453\n", - "****** Save model done... ******\n", - "\n", - "Epoch 14 Batch: 0 Loss: 0.912283 Tokens per Sec: 0.580486s\n", - "Epoch 14 Batch: 50 Loss: 0.879677 Tokens per Sec: 0.610539s\n", - "Epoch 14 Batch: 100 Loss: 1.053457 Tokens per Sec: 0.545996s\n", - "Epoch 14 Batch: 150 Loss: 0.577714 Tokens per Sec: 0.557065s\n", - "Epoch 14 Batch: 200 Loss: 0.832975 Tokens per Sec: 0.530706s\n", - ">>>>> Evaluate\n", - "Epoch 14 Batch: 0 Loss: 0.534181 Tokens per Sec: 0.444459s\n", - "<<<<< Evaluate loss: 0.724027\n", - "****** Save model done... ******\n", - "\n", - "Epoch 15 Batch: 0 Loss: 0.781037 Tokens per Sec: 0.575146s\n", - "Epoch 15 Batch: 50 Loss: 0.720180 Tokens per Sec: 0.596513s\n", - "Epoch 15 Batch: 100 Loss: 1.045866 Tokens per Sec: 0.579166s\n", - "Epoch 15 Batch: 150 Loss: 0.472319 Tokens per Sec: 0.571984s\n", - "Epoch 15 Batch: 200 Loss: 0.721961 Tokens per Sec: 0.592022s\n", - ">>>>> Evaluate\n", - "Epoch 15 Batch: 0 Loss: 0.443732 Tokens per Sec: 0.691160s\n", - "<<<<< Evaluate loss: 0.619698\n", - "****** Save model done... ******\n", - "\n", - "Epoch 16 Batch: 0 Loss: 0.758115 Tokens per Sec: 0.583654s\n", - "Epoch 16 Batch: 50 Loss: 0.669776 Tokens per Sec: 0.569784s\n", - "Epoch 16 Batch: 100 Loss: 0.861694 Tokens per Sec: 0.550470s\n", - "Epoch 16 Batch: 150 Loss: 0.415039 Tokens per Sec: 0.570136s\n", - "Epoch 16 Batch: 200 Loss: 0.619775 Tokens per Sec: 0.521143s\n", - ">>>>> Evaluate\n", - "Epoch 16 Batch: 0 Loss: 0.404573 Tokens per Sec: 0.525881s\n", - "<<<<< Evaluate loss: 0.533678\n", - "****** Save model done... ******\n", - "\n", - "Epoch 17 Batch: 0 Loss: 0.661166 Tokens per Sec: 0.479603s\n", - "Epoch 17 Batch: 50 Loss: 0.594955 Tokens per Sec: 0.561641s\n", - "Epoch 17 Batch: 100 Loss: 0.753524 Tokens per Sec: 0.584988s\n", - "Epoch 17 Batch: 150 Loss: 0.375149 Tokens per Sec: 0.583510s\n", - "Epoch 17 Batch: 200 Loss: 0.501407 Tokens per Sec: 0.581525s\n", - ">>>>> Evaluate\n", - "Epoch 17 Batch: 0 Loss: 0.334926 Tokens per Sec: 0.630109s\n", - "<<<<< Evaluate loss: 0.466420\n", - "****** Save model done... ******\n", - "\n", - "Epoch 18 Batch: 0 Loss: 0.605021 Tokens per Sec: 0.542803s\n", - "Epoch 18 Batch: 50 Loss: 0.559485 Tokens per Sec: 0.439001s\n", - "Epoch 18 Batch: 100 Loss: 0.689478 Tokens per Sec: 0.489501s\n", - "Epoch 18 Batch: 150 Loss: 0.355951 Tokens per Sec: 0.526392s\n", - "Epoch 18 Batch: 200 Loss: 0.477096 Tokens per Sec: 0.549801s\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - ">>>>> Evaluate\n", - "Epoch 18 Batch: 0 Loss: 0.314808 Tokens per Sec: 0.603011s\n", - "<<<<< Evaluate loss: 0.406696\n", - "****** Save model done... ******\n", - "\n", - "Epoch 19 Batch: 0 Loss: 0.515153 Tokens per Sec: 0.547465s\n", - "Epoch 19 Batch: 50 Loss: 0.492664 Tokens per Sec: 0.471209s\n", - "Epoch 19 Batch: 100 Loss: 0.569018 Tokens per Sec: 0.511366s\n", - "Epoch 19 Batch: 150 Loss: 0.345435 Tokens per Sec: 0.483950s\n", - "Epoch 19 Batch: 200 Loss: 0.451842 Tokens per Sec: 0.507429s\n", - ">>>>> Evaluate\n", - "Epoch 19 Batch: 0 Loss: 0.232709 Tokens per Sec: 0.688693s\n", - "<<<<< Evaluate loss: 0.349022\n", - "****** Save model done... ******\n", - "\n", - "<<<<<<< finished train, cost 6349.7866 seconds\n" - ] - } - ], - "source": [ - "# 数据预处理\n", - "data = PrepareData(TRAIN_FILE, DEV_FILE)\n", - "src_vocab = len(data.en_word_dict)\n", - "tgt_vocab = len(data.cn_word_dict)\n", - "print(\"src_vocab %d\" % src_vocab)\n", - "print(\"tgt_vocab %d\" % tgt_vocab)\n", - "\n", - "# 初始化模型\n", - "model = make_model(\n", - " src_vocab, \n", - " tgt_vocab, \n", - " LAYERS, \n", - " D_MODEL, \n", - " D_FF,\n", - " H_NUM,\n", - " DROPOUT\n", - " )\n", - "\n", - "# 训练\n", - "print(\">>>>>>> start train\")\n", - "train_start = time.time()\n", - "criterion = LabelSmoothing(tgt_vocab, padding_idx = 0, smoothing= 0.0)\n", - "optimizer = NoamOpt(D_MODEL, 1, 2000, torch.optim.Adam(model.parameters(), lr=0, betas=(0.9,0.98), eps=1e-9))\n", - "\n", - "train(data, model, criterion, optimizer)\n", - "print(f\"<<<<<<< finished train, cost {time.time()-train_start:.4f} seconds\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 六. 模型预测" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "def greedy_decode(model, src, src_mask, max_len, start_symbol):\n", - " \"\"\"\n", - " 传入一个训练好的模型,对指定数据进行预测\n", - " \"\"\"\n", - " # 先用encoder进行encode\n", - " memory = model.encode(src, src_mask)\n", - " # 初始化预测内容为1×1的tensor,填入开始符('BOS')的id,并将type设置为输入数据类型(LongTensor)\n", - " ys = torch.ones(1, 1).fill_(start_symbol).type_as(src.data)\n", - " # 遍历输出的长度下标\n", - " for i in range(max_len-1):\n", - " # decode得到隐层表示\n", - " out = model.decode(memory, \n", - " src_mask, \n", - " Variable(ys), \n", - " Variable(subsequent_mask(ys.size(1)).type_as(src.data)))\n", - " # 将隐藏表示转为对词典各词的log_softmax概率分布表示\n", - " prob = model.generator(out[:, -1])\n", - " # 获取当前位置最大概率的预测词id\n", - " _, next_word = torch.max(prob, dim = 1)\n", - " next_word = next_word.data[0]\n", - " # 将当前位置预测的字符id与之前的预测内容拼接起来\n", - " ys = torch.cat([ys, \n", - " torch.ones(1, 1).type_as(src.data).fill_(next_word)], dim=1)\n", - " return ys\n", - "\n", - "\n", - "def evaluate(data, model):\n", - " \"\"\"\n", - " 在data上用训练好的模型进行预测,打印模型翻译结果\n", - " \"\"\"\n", - " # 梯度清零\n", - " with torch.no_grad():\n", - " # 在data的英文数据长度上遍历下标\n", - " for i in range(len(data.dev_en)):\n", - " # 打印待翻译的英文句子\n", - " en_sent = \" \".join([data.en_index_dict[w] for w in data.dev_en[i]])\n", - " print(\"\\n\" + en_sent)\n", - " # 打印对应的中文句子答案\n", - " cn_sent = \" \".join([data.cn_index_dict[w] for w in data.dev_cn[i]])\n", - " print(\"\".join(cn_sent))\n", - " \n", - " # 将当前以单词id表示的英文句子数据转为tensor,并放如DEVICE中\n", - " src = torch.from_numpy(np.array(data.dev_en[i])).long().to(DEVICE)\n", - " # 增加一维\n", - " src = src.unsqueeze(0)\n", - " # 设置attention mask\n", - " src_mask = (src != 0).unsqueeze(-2)\n", - " # 用训练好的模型进行decode预测\n", - " out = greedy_decode(model, src, src_mask, max_len=MAX_LENGTH, start_symbol=data.cn_word_dict[\"BOS\"])\n", - " # 初始化一个用于存放模型翻译结果句子单词的列表\n", - " translation = []\n", - " # 遍历翻译输出字符的下标(注意:开始符\"BOS\"的索引0不遍历)\n", - " for j in range(1, out.size(1)):\n", - " # 获取当前下标的输出字符\n", - " sym = data.cn_index_dict[out[0, j].item()]\n", - " # 如果输出字符不为'EOS'终止符,则添加到当前句子的翻译结果列表\n", - " if sym != 'EOS':\n", - " translation.append(sym)\n", - " # 否则终止遍历\n", - " else:\n", - " break\n", - " # 打印模型翻译输出的中文句子结果\n", - " print(\"translation: %s\" % \" \".join(translation))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - ">>>>>>> start evaluate\n", - "\n", - "BOS look around . EOS\n", - "BOS 四 处 看 看 。 EOS\n", - "translation: 四 处 看 看 。\n", - "\n", - "BOS hurry up . EOS\n", - "BOS 趕 快 ! EOS\n", - "translation: 快 點 起 床 。\n", - "\n", - "BOS keep trying . EOS\n", - "BOS 继 续 努 力 。 EOS\n", - "translation: 继 续 努 力 。\n", - "\n", - "BOS take it . EOS\n", - "BOS 拿 走 吧 。 EOS\n", - "translation: 拿 走 吧 。\n", - "\n", - "BOS birds fly . EOS\n", - "BOS 鳥 類 飛 行 。 EOS\n", - "translation: 鳥 類 飛 行 。\n", - "\n", - "BOS hurry up . EOS\n", - "BOS 快 点 ! EOS\n", - "translation: 快 點 起 床 。\n", - "\n", - "BOS look there . EOS\n", - "BOS 看 那 里 。 EOS\n", - "translation: 看 那 裡 。\n", - "\n", - "BOS how annoying ! EOS\n", - "BOS 真 烦 人 。 EOS\n", - "translation: 真 烦 人 。\n", - "\n", - "BOS get serious . EOS\n", - "BOS 认 真 点 。 EOS\n", - "translation: 认 真 点 。\n", - "\n", - "BOS once again . EOS\n", - "BOS 再 一 次 。 EOS\n", - "translation: 再 次 再 次 。\n", - "\n", - "BOS stay sharp . EOS\n", - "BOS 保 持 警 惕 。 EOS\n", - "translation: 保 持 警 惕 。\n", - "\n", - "BOS i won ! EOS\n", - "BOS 我 赢 了 。 EOS\n", - "translation: 我 赢 了 。\n", - "\n", - "BOS get away ! EOS\n", - "BOS 滾 ! EOS\n", - "translation: 滾 出 去 !\n", - "\n", - "BOS i resign . EOS\n", - "BOS 我 放 弃 。 EOS\n", - "translation: 我 放 弃 。\n", - "\n", - "BOS how strange ! EOS\n", - "BOS 真 奇 怪 。 EOS\n", - "translation: 真 奇 怪 。\n", - "\n", - "BOS tom UNK . EOS\n", - "BOS 汤 姆 脸 红 了 。 EOS\n", - "translation: 湯 姆 脸 红 了 。\n", - "\n", - "BOS who cares ? EOS\n", - "BOS 爱 谁 谁 。 EOS\n", - "translation: 爱 谁 谁 来 了 ?\n", - "\n", - "BOS sweet dreams ! EOS\n", - "BOS 祝 你 好 梦 。 EOS\n", - "translation: 祝 你 好 梦 。\n", - "\n", - "BOS step inside . EOS\n", - "BOS 进 来 。 EOS\n", - "translation: 进 来 。\n", - "\n", - "BOS go away ! EOS\n", - "BOS 滾 ! EOS\n", - "translation: 滾 出 去 !\n", - "\n", - "BOS anything else ? EOS\n", - "BOS 还 有 别 的 吗 ? EOS\n", - "translation: 还 有 别 人 吗 ?\n", - "\n", - "BOS i 'm sleepy . EOS\n", - "BOS 我 困 了 。 EOS\n", - "translation: 我 困 了 。\n", - "\n", - "BOS i ate UNK . EOS\n", - "BOS 我 吃 了 魚 子 醬 。 EOS\n", - "translation: 我 吃 了 魚 。\n", - "\n", - "BOS i like sports . EOS\n", - "BOS 我 喜 歡 運 動 。 EOS\n", - "translation: 我 喜 歡 運 動 。\n", - "\n", - "BOS she may come . EOS\n", - "BOS 她 可 以 來 。 EOS\n", - "translation: 她 可 能 會 來 。\n", - "\n", - "BOS everybody will die . EOS\n", - "BOS 人 固 有 一 死 。 EOS\n", - "translation: 人 固 有 一 死 。\n", - "\n", - "BOS answer the question . EOS\n", - "BOS 回 答 問 題 。 EOS\n", - "translation: 回 答 問 題 。\n", - "\n", - "BOS is that better ? EOS\n", - "BOS 那 更 好 吗 ? EOS\n", - "translation: 那 更 好 嗎 ?\n", - "\n", - "BOS i like you . EOS\n", - "BOS 我 喜 欢 你 。 EOS\n", - "translation: 我 喜 欢 你 。\n", - "\n", - "BOS let him in . EOS\n", - "BOS 让 他 进 来 。 EOS\n", - "translation: 让 他 进 来 。\n", - "\n", - "BOS tom is laughing . EOS\n", - "BOS 汤 姆 在 笑 。 EOS\n", - "translation: 汤 姆 在 笑 。\n", - "\n", - "BOS tom began talking . EOS\n", - "BOS 汤 姆 开 始 说 话 。 EOS\n", - "translation: 汤 姆 开 始 说 话 。\n", - "\n", - "BOS draw a circle . EOS\n", - "BOS 画 一 个 圈 。 EOS\n", - "translation: 画 一 个 圈 。\n", - "\n", - "BOS this is mine . EOS\n", - "BOS 这 是 我 的 。 EOS\n", - "translation: 这 是 我 的 。\n", - "\n", - "BOS she might come . EOS\n", - "BOS 她 也 許 會 來 。 EOS\n", - "translation: 她 也 許 會 來 。\n", - "\n", - "BOS i hate you . EOS\n", - "BOS 我 恨 你 。 EOS\n", - "translation: 我 恨 你 。\n", - "\n", - "BOS are you lost ? EOS\n", - "BOS 您 迷 路 了 吗 ? EOS\n", - "translation: 你 迷 路 了 吗 ?\n", - "\n", - "BOS i miss you . EOS\n", - "BOS 我 想 念 你 。 EOS\n", - "translation: 我 想 念 你 。\n", - "\n", - "BOS they 're children . EOS\n", - "BOS 她 们 是 孩 子 。 EOS\n", - "translation: 他 们 是 孩 子 。\n", - "\n", - "BOS i played tennis . EOS\n", - "BOS 我 打 網 球 了 。 EOS\n", - "translation: 我 打 網 球 。\n", - "\n", - "BOS he gave in . EOS\n", - "BOS 他 让 步 了 . EOS\n", - "translation: 他 在 .\n", - "\n", - "BOS shame on you ! EOS\n", - "BOS 你 真 丢 脸 ! EOS\n", - "translation: 你 真 丢 脸 !\n", - "\n", - "BOS read this book . EOS\n", - "BOS 看 这 本 书 。 EOS\n", - "translation: 念 这 本 书 。\n", - "\n", - "BOS he is american . EOS\n", - "BOS 他 是 美 国 人 。 EOS\n", - "translation: 他 是 美 国 人 。\n", - "\n", - "BOS is breakfast UNK ? EOS\n", - "BOS 包 括 早 饭 吗 ? EOS\n", - "translation: 包 括 早 饭 吗 ?\n", - "\n", - "BOS my shoulder hurts . EOS\n", - "BOS 我 肩 膀 痛 。 EOS\n", - "translation: 我 肩 膀 痛 。\n", - "\n", - "BOS everybody thinks so . EOS\n", - "BOS 大 家 都 是 这 样 想 的 。 EOS\n", - "translation: 大 家 都 是 这 样 想 的 。\n", - "\n", - "BOS the bell rang . EOS\n", - "BOS 铃 响 了 。 EOS\n", - "translation: 铃 响 了 。\n", - "\n", - "BOS it 's true . EOS\n", - "BOS 這 是 真 的 。 EOS\n", - "translation: 这 是 真 的 。\n", - "\n", - "BOS she fooled him . EOS\n", - "BOS 她 愚 弄 了 他 。 EOS\n", - "translation: 她 愚 弄 了 他 。\n", - "\n", - "BOS count me in . EOS\n", - "BOS 算 我 一 个 . EOS\n", - "translation: 算 我 一 个 .\n", - "\n", - "BOS she kept working . EOS\n", - "BOS 她 不 停 地 工 作 。 EOS\n", - "translation: 她 不 在 工 作 。\n", - "\n", - "BOS please forgive me . EOS\n", - "BOS 请 原 谅 我 。 EOS\n", - "translation: 請 原 諒 我 。\n", - "\n", - "BOS tom likes swimming . EOS\n", - "BOS 湯 姆 喜 歡 游 泳 。 EOS\n", - "translation: 湯 姆 喜 歡 游 泳 。\n", - "\n", - "BOS i am sick . EOS\n", - "BOS 我 生 病 了 。 EOS\n", - "translation: 我 生 病 了 。\n", - "\n", - "BOS here goes nothing . EOS\n", - "BOS 毫 無 希 望 , 白 費 心 思 。 EOS\n", - "translation: 毫 無 希 望 , 白 費 用 不 用 。\n", - "\n", - "BOS hello , tom . EOS\n", - "BOS 你 好 , 汤 姆 。 EOS\n", - "translation: 你 好 , 湯 姆 。\n", - "\n", - "BOS who drew it ? EOS\n", - "BOS 誰 畫 的 ? EOS\n", - "translation: 誰 畫 的 ?\n", - "\n", - "BOS i like running . EOS\n", - "BOS 我 喜 欢 跑 步 。 EOS\n", - "translation: 我 喜 欢 跑 步 。\n", - "\n", - "BOS i 'm married . EOS\n", - "BOS 我 结 婚 了 。 EOS\n", - "translation: 我 结 婚 了 。\n", - "\n", - "BOS someone is watching . EOS\n", - "BOS 有 人 在 监 视 。 EOS\n", - "translation: 有 人 在 监 视 。\n", - "\n", - "BOS he looks young . EOS\n", - "BOS 他 看 起 来 很 年 轻 。 EOS\n", - "translation: 他 看 起 來 很 年 轻 。\n", - "\n", - "BOS it 's night . EOS\n", - "BOS 是 晚 上 了 。 EOS\n", - "translation: 天 晚 上 了 。\n", - "\n", - "BOS we are boys . EOS\n", - "BOS 我 們 是 男 孩 。 EOS\n", - "translation: 我 們 是 男 孩 。\n", - "\n", - "BOS life is beautiful . EOS\n", - "BOS 生 活 是 美 丽 的 。 EOS\n", - "translation: 人 生 是 美 的 。\n", - "\n", - "BOS they trust tom . EOS\n", - "BOS 他 们 信 任 汤 姆 。 EOS\n", - "translation: 他 们 信 任 汤 姆 。\n", - "\n", - "BOS who is that ? EOS\n", - "BOS 那 是 谁 ? EOS\n", - "translation: 那 是 谁 ?\n", - "\n", - "BOS i almost drowned . EOS\n", - "BOS 我 差 點 被 淹 死 。 EOS\n", - "translation: 我 差 點 被 淹 死 了 。\n", - "\n", - "BOS i was wrong . EOS\n", - "BOS 我 搞 错 了 。 EOS\n", - "translation: 我 錯 了 。\n", - "\n", - "BOS i love you . EOS\n", - "BOS 我 爱 您 。 EOS\n", - "translation: 我 爱 你 。\n", - "\n", - "BOS please sit down . EOS\n", - "BOS 請 坐 下 。 EOS\n", - "translation: 請 坐 下 。\n", - "\n", - "BOS these are pens . EOS\n", - "BOS 這 些 是 筆 。 EOS\n", - "translation: 這 些 是 筆 。\n", - "\n", - "BOS are you mad ? EOS\n", - "BOS 您 生 气 了 吗 ? EOS\n", - "translation: 你 生 气 了 吗 ?\n", - "\n", - "BOS she UNK loudly . EOS\n", - "BOS 她 大 声 UNK UNK 。 EOS\n", - "translation: 她 大 声 大 声 。\n", - "\n", - "BOS are you ready ? EOS\n", - "BOS 你 准 备 好 了 吗 ? EOS\n", - "translation: 你 准 备 好 了 吗 ?\n", - "\n", - "BOS he won everything . EOS\n", - "BOS 他 赢 得 一 切 了 。 EOS\n", - "translation: 他 赢 得 一 切 了 。\n", - "\n", - "BOS you look UNK . EOS\n", - "BOS 你 看 起 来 很 紧 张 。 EOS\n", - "translation: 你 看 起 來 很 紧 张 。\n", - "\n", - "BOS why blame tom ? EOS\n", - "BOS 为 什 么 责 备 汤 姆 ? EOS\n", - "translation: 为 什 么 责 汤 姆 ?\n", - "\n", - "BOS please speak slowly . EOS\n", - "BOS 请 说 慢 一 点 。 EOS\n", - "translation: 請 講 慢 一 點 。\n", - "\n", - "BOS they love that . EOS\n", - "BOS 他 们 喜 欢 那 个 EOS\n", - "translation: 他 们 爱 那 个 人 。\n", - "\n", - "BOS it 's snowing . EOS\n", - "BOS 正 在 下 雪 。 EOS\n", - "translation: 正 在 下 雪 。\n", - "\n", - "BOS i borrow money . EOS\n", - "BOS 我 借 錢 。 EOS\n", - "translation: 我 借 錢 。\n", - "\n", - "BOS watch your step . EOS\n", - "BOS 小 心 脚 下 。 EOS\n", - "translation: 走 路 小 心 。\n", - "\n", - "BOS please speak slowly . EOS\n", - "BOS 请 说 慢 一 些 。 EOS\n", - "translation: 請 講 慢 一 點 。\n", - "\n", - "BOS what a pity ! EOS\n", - "BOS 太 可 惜 了 ! EOS\n", - "translation: 多 遗 憾 啊 !\n", - "\n", - "BOS tom sat down . EOS\n", - "BOS 汤 姆 坐 下 了 。 EOS\n", - "translation: 汤 姆 坐 下 了 。\n", - "\n", - "BOS words express thoughts . EOS\n", - "BOS 語 詞 表 達 思 想 。 EOS\n", - "translation: 語 詞 表 達 思 想 。\n", - "\n", - "BOS mail this letter . EOS\n", - "BOS 把 这 封 信 寄 了 。 EOS\n", - "translation: 把 这 封 信 寄 了 。\n", - "\n", - "BOS you will fail . EOS\n", - "BOS 你 會 失 敗 。 EOS\n", - "translation: 你 會 失 敗 。\n", - "\n", - "BOS please contact us . EOS\n", - "BOS 请 联 系 我 们 。 EOS\n", - "translation: 請 幫 我 們 。\n", - "\n", - "BOS UNK are sour . EOS\n", - "BOS UNK UNK 是 酸 的 。 EOS\n", - "translation: 是 酸 的 。\n", - "\n", - "BOS please keep this secret . EOS\n", - "BOS 請 保 守 這 個 秘 密 。 EOS\n", - "translation: 請 保 守 這 個 秘 密 。\n", - "\n", - "BOS do you like music ? EOS\n", - "BOS 你 爱 音 乐 吗 ? EOS\n", - "translation: 你 喜 歡 音 樂 嗎 ?\n", - "\n", - "BOS are you all ready ? EOS\n", - "BOS 你 們 都 準 備 好 了 嗎 ? EOS\n", - "translation: 你 們 好 嗎 ?\n", - "\n", - "BOS you 're really beautiful . EOS\n", - "BOS 你 真 的 很 漂 亮 。 EOS\n", - "translation: 你 真 的 是 漂 亮 的 。\n", - "\n", - "BOS i have a computer . EOS\n", - "BOS 我 有 一 台 电 脑 。 EOS\n", - "translation: 我 有 一 台 电 脑 。\n", - "\n", - "BOS that is your book . EOS\n", - "BOS 那 是 你 的 書 。 EOS\n", - "translation: 那 是 你 的 書 。\n", - "\n", - "BOS any UNK are welcome . EOS\n", - "BOS 欢 迎 作 任 何 评 论 。 EOS\n", - "translation: 欢 迎 。\n", - "\n", - "BOS we 're very different . EOS\n", - "BOS 我 们 很 不 一 样 。 EOS\n", - "translation: 我 们 很 不 一 样 。\n", - "\n", - "BOS i 'm so excited . EOS\n", - "BOS 我 很 激 动 。 EOS\n", - "translation: 我 很 兴 奋 。\n", - "\n", - "BOS you have nice skin . EOS\n", - "BOS 你 的 皮 膚 真 好 。 EOS\n", - "translation: 你 的 皮 膚 真 好 。\n", - "\n", - "BOS you 're UNK correct . EOS\n", - "BOS 你 部 分 正 确 。 EOS\n", - "translation: 你 是 正 確 的 。\n", - "\n", - "BOS everyone admired his courage . EOS\n", - "BOS 每 個 人 都 佩 服 他 的 勇 氣 。 EOS\n", - "translation: 每 個 人 都 佩 服 他 的 勇 氣 。\n", - "\n", - "BOS what time is it ? EOS\n", - "BOS 几 点 了 ? EOS\n", - "translation: 几 点 了 ?\n", - "\n", - "BOS i 'm free tonight . EOS\n", - "BOS 我 今 晚 有 空 。 EOS\n", - "translation: 我 今 晚 有 空 。\n", - "\n", - "BOS here is your book . EOS\n", - "BOS 這 是 你 的 書 。 EOS\n", - "translation: 這 裡 書 在 你 的 書 。\n", - "\n", - "BOS they are at lunch . EOS\n", - "BOS 他 们 在 吃 午 饭 。 EOS\n", - "translation: 他 們 在 吃 午 餐 。\n", - "\n", - "BOS this chair is UNK . EOS\n", - "BOS 這 把 椅 子 很 UNK 。 EOS\n", - "translation: 這 把 椅 子 很 椅 子 。\n", - "\n", - "BOS it 's pretty heavy . EOS\n", - "BOS 它 真 重 。 EOS\n", - "translation: 它 重 新 。\n", - "\n", - "BOS many attended his funeral . EOS\n", - "BOS 很 多 人 都 参 加 了 他 的 葬 礼 。 EOS\n", - "translation: 他 的 葬 禮 訂 已 經 給 他 。\n", - "\n", - "BOS training will be provided . EOS\n", - "BOS 会 有 训 练 。 EOS\n", - "translation: 会 有 训 练 。\n", - "\n", - "BOS someone is watching you . EOS\n", - "BOS 有 人 在 看 著 你 。 EOS\n", - "translation: 有 人 在 监 视 。\n", - "\n", - "BOS i slapped his face . EOS\n", - "BOS 我 摑 了 他 的 臉 。 EOS\n", - "translation: 我 摑 了 他 的 臉 。\n", - "\n", - "BOS i like UNK music . EOS\n", - "BOS 我 喜 歡 流 行 音 樂 。 EOS\n", - "translation: 我 喜 歡 器 樂 。\n", - "\n", - "BOS tom had no children . EOS\n", - "BOS T o m 沒 有 孩 子 。 EOS\n", - "translation: 湯 姆 沒 有 孩 子 。\n", - "\n", - "BOS please lock the door . EOS\n", - "BOS 請 把 門 鎖 上 。 EOS\n", - "translation: 請 把 門 鎖 上 。\n", - "\n", - "BOS tom has calmed down . EOS\n", - "BOS 汤 姆 冷 静 下 来 了 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 汤 姆 冷 静 下 来 了 。\n", - "\n", - "BOS please speak more loudly . EOS\n", - "BOS 請 說 大 聲 一 點 兒 。 EOS\n", - "translation: 請 說 大 聲 一 點 兒 。\n", - "\n", - "BOS keep next sunday free . EOS\n", - "BOS 把 下 周 日 空 出 来 。 EOS\n", - "translation: 请 下 周 日 要 下 一 行 。\n", - "\n", - "BOS i made a mistake . EOS\n", - "BOS 我 犯 了 一 個 錯 。 EOS\n", - "translation: 我 犯 了 一 個 錯 。\n", - "\n", - "BOS i like your room . EOS\n", - "BOS 我 喜 欢 你 的 房 间 。 EOS\n", - "translation: 我 喜 欢 你 的 房 间 。\n", - "\n", - "BOS he admitted his guilt . EOS\n", - "BOS 他 承 認 他 有 罪 。 EOS\n", - "translation: 他 承 认 了 他 有 罪 。\n", - "\n", - "BOS prices have dropped recently . EOS\n", - "BOS 最 近 物 價 已 經 下 降 。 EOS\n", - "translation: 最 近 物 價 已 經 下 降 。\n", - "\n", - "BOS i want a dog . EOS\n", - "BOS 我 想 要 一 隻 狗 。 EOS\n", - "translation: 我 要 一 隻 狗 。\n", - "\n", - "BOS i 'll do it . EOS\n", - "BOS 我 會 做 的 。 EOS\n", - "translation: 我 會 做 的 。\n", - "\n", - "BOS have a good christmas . EOS\n", - "BOS 祝 您 有 一 個 愉 快 的 聖 誕 節 。 EOS\n", - "translation: 祝 聖 誕 節 很 好 。\n", - "\n", - "BOS he speaks too fast . EOS\n", - "BOS 他 说 话 太 快 了 。 EOS\n", - "translation: 他 说 得 太 快 了 。\n", - "\n", - "BOS i was so homesick . EOS\n", - "BOS 我 很 想 家 。 EOS\n", - "translation: 我 很 想 家 。\n", - "\n", - "BOS i have many UNK . EOS\n", - "BOS 我 有 许 多 唱 片 。 EOS\n", - "translation: 我 有 很 多 次 。\n", - "\n", - "BOS you 're still green . EOS\n", - "BOS 你 还 年 轻 。 EOS\n", - "translation: 你 还 是 完 成 人 。\n", - "\n", - "BOS they moved ahead slowly . EOS\n", - "BOS 他 們 慢 慢 地 向 前 進 。 EOS\n", - "translation: 他 們 慢 地 向 前 進 。\n", - "\n", - "BOS i retired last year . EOS\n", - "BOS 我 去 年 退 休 了 。 EOS\n", - "translation: 我 去 年 退 休 了 。\n", - "\n", - "BOS i need your cooperation . EOS\n", - "BOS 我 需 要 你 们 的 合 作 。 EOS\n", - "translation: 我 需 要 你 们 的 合 作 。\n", - "\n", - "BOS that was n't funny . EOS\n", - "BOS 那 不 好 笑 。 EOS\n", - "translation: 那 不 好 笑 。\n", - "\n", - "BOS wait just a moment . EOS\n", - "BOS 就 等 一 會 兒 。 EOS\n", - "translation: 就 等 一 會 兒 。\n", - "\n", - "BOS he was made captain . EOS\n", - "BOS 他 被 選 為 隊 長 。 EOS\n", - "translation: 他 被 選 為 隊 長 。\n", - "\n", - "BOS may i leave now ? EOS\n", - "BOS 我 现 在 能 走 了 吗 ? EOS\n", - "translation: 我 现 在 可 以 离 开 吗 ?\n", - "\n", - "BOS i can swim well . EOS\n", - "BOS 我 游 泳 可 以 游 得 很 好 。 EOS\n", - "translation: 我 游 泳 可 以 游 得 很 好 。\n", - "\n", - "BOS i go to school . EOS\n", - "BOS 我 去 学 校 。 EOS\n", - "translation: 我 上 學 。\n", - "\n", - "BOS we 're all hungry . EOS\n", - "BOS 我 們 都 餓 了 。 EOS\n", - "translation: 我 们 都 餓 了 。\n", - "\n", - "BOS i like to run . EOS\n", - "BOS 我 喜 欢 跑 步 。 EOS\n", - "translation: 我 喜 欢 跑 步 。\n", - "\n", - "BOS i must go now . EOS\n", - "BOS 我 現 在 必 須 走 了 。 EOS\n", - "translation: 我 現 在 必 須 去 。\n", - "\n", - "BOS the tire leaks air . EOS\n", - "BOS UNK 胎 漏 气 了 。 EOS\n", - "translation: 胎 漏 气 了 。\n", - "\n", - "BOS where are you now ? EOS\n", - "BOS 你 现 在 在 哪 里 呢 ? EOS\n", - "translation: 你 现 在 在 在 在 哪 里 ?\n", - "\n", - "BOS life is very hard . EOS\n", - "BOS 人 生 良 苦 。 EOS\n", - "translation: 人 生 良 苦 。\n", - "\n", - "BOS i shave every morning . EOS\n", - "BOS 我 每 天 早 上 刮 鬍 子 。 EOS\n", - "translation: 我 每 天 早 上 刮 鬍 子 。\n", - "\n", - "BOS he never drinks alcohol . EOS\n", - "BOS 他 從 不 喝 酒 。 EOS\n", - "translation: 他 從 不 喝 酒 。\n", - "\n", - "BOS this is my property . EOS\n", - "BOS 這 是 我 的 財 產 。 EOS\n", - "translation: 這 是 我 的 財 產 。\n", - "\n", - "BOS he heard a shout . EOS\n", - "BOS 他 聽 到 了 叫 聲 。 EOS\n", - "translation: 他 聽 到 了 叫 聲 。\n", - "\n", - "BOS you may go anywhere . EOS\n", - "BOS 你 可 以 随 便 去 哪 儿 。 EOS\n", - "translation: 你 可 以 随 便 去 哪 裡 。\n", - "\n", - "BOS do n't bother me . EOS\n", - "BOS 别 来 烦 我 。 EOS\n", - "translation: 别 麻 烦 我 。\n", - "\n", - "BOS here 's your tea . EOS\n", - "BOS 这 是 你 的 茶 。 EOS\n", - "translation: 這 是 你 的 茶 。\n", - "\n", - "BOS i 'm absolutely UNK . EOS\n", - "BOS 我 真 是 欣 喜 若 狂 。 EOS\n", - "translation: 我 完 全 正 確 。\n", - "\n", - "BOS tom could be canadian . EOS\n", - "BOS 汤 姆 可 能 是 加 拿 大 人 。 EOS\n", - "translation: 汤 姆 可 能 是 加 拿 大 人 。\n", - "\n", - "BOS what happened that night ? EOS\n", - "BOS 这 个 晚 上 发 生 了 什 么 ? EOS\n", - "translation: 那 個 夜 生 什 麼 地 發 生 的 ?\n", - "\n", - "BOS prices are going up . EOS\n", - "BOS 物 价 上 涨 了 。 EOS\n", - "translation: 價 格 取 決 於 下 雨 。\n", - "\n", - "BOS i took a shower . EOS\n", - "BOS 我 洗 了 澡 。 EOS\n", - "translation: 我 洗 了 澡 。\n", - "\n", - "BOS how is your wife ? EOS\n", - "BOS 你 太 太 怎 么 样 ? EOS\n", - "translation: 你 太 是 怎 麼 樣 的 ?\n", - "\n", - "BOS please spell your name . EOS\n", - "BOS 请 拼 一 下 您 的 名 字 。 EOS\n", - "translation: 请 拼 一 下 您 的 名 字 。\n", - "\n", - "BOS have you eaten lunch ? EOS\n", - "BOS 你 吃 過 午 飯 了 嗎 ? EOS\n", - "translation: 你 吃 過 午 飯 了 嗎 ?\n", - "\n", - "BOS it 's our pleasure . EOS\n", - "BOS 这 是 我 们 的 UNK 幸 。 EOS\n", - "translation: 这 是 我 们 的 腿 。\n", - "\n", - "BOS i ca n't remember . EOS\n", - "BOS 我 想 不 起 來 。 EOS\n", - "translation: 我 不 記 得 了 。\n", - "\n", - "BOS he traveled on business . EOS\n", - "BOS 他 旅 行 洽 商 。 EOS\n", - "translation: 他 旅 行 洽 商 。\n", - "\n", - "BOS is his UNK regular ? EOS\n", - "BOS 他 的 UNK 搏 正 常 嗎 ? EOS\n", - "translation: 他 的 搏 正 常 很 期 嗎 ?\n", - "\n", - "BOS he 's very UNK . EOS\n", - "BOS 他 说 话 很 直 接 。 EOS\n", - "translation: 他 非 常 親 。\n", - "\n", - "BOS my gums are UNK . EOS\n", - "BOS 我 的 牙 齦 流 血 。 EOS\n", - "translation: 我 的 牙 齦 流 血 。\n", - "\n", - "BOS she works very hard . EOS\n", - "BOS 她 很 努 力 工 作 。 EOS\n", - "translation: 她 很 努 力 工 作 。\n", - "\n", - "BOS i have to win . EOS\n", - "BOS 我 必 须 赢 。 EOS\n", - "translation: 我 必 須 打 算 赢 。\n", - "\n", - "BOS this turkey tastes good . EOS\n", - "BOS 这 只 火 鸡 味 道 很 好 。 EOS\n", - "translation: 这 只 火 鸡 味 道 很 好 喝 。\n", - "\n", - "BOS my parents are divorced . EOS\n", - "BOS 我 父 母 离 婚 了 。 EOS\n", - "translation: 我 父 母 离 婚 了 。\n", - "\n", - "BOS everything will be ok . EOS\n", - "BOS 一 切 都 会 好 的 。 EOS\n", - "translation: 一 切 都 会 好 的 。\n", - "\n", - "BOS three UNK is UNK . EOS\n", - "BOS 三 的 立 方 是 二 十 七 。 EOS\n", - "translation: 三 十 三 片 。\n", - "\n", - "BOS i do n't care . EOS\n", - "BOS 我 无 所 谓 。 EOS\n", - "translation: 我 不 在 乎 关 注 。\n", - "\n", - "BOS turn back , please . EOS\n", - "BOS 请 回 来 。 EOS\n", - "translation: 請 回 答 。\n", - "\n", - "BOS do you like china ? EOS\n", - "BOS 你 喜 歡 中 國 嗎 ? EOS\n", - "translation: 你 喜 歡 中 國 嗎 ?\n", - "\n", - "BOS he was very old . EOS\n", - "BOS 他 很 老 。 EOS\n", - "translation: 他 很 老 。\n", - "\n", - "BOS those are my pants . EOS\n", - "BOS 那 些 是 我 的 褲 子 。 EOS\n", - "translation: 那 些 是 我 的 褲 子 。\n", - "\n", - "BOS earth is a planet . EOS\n", - "BOS 地 球 是 一 個 行 星 。 EOS\n", - "translation: 地 球 是 一 個 行 星 。\n", - "\n", - "BOS leave my car alone . EOS\n", - "BOS 離 我 的 車 遠 一 點 。 EOS\n", - "translation: 让 我 静 一 静 机 。\n", - "\n", - "BOS let 's eat sushi . EOS\n", - "BOS 讓 我 們 吃 壽 司 吧 。 EOS\n", - "translation: 讓 我 們 吃 壽 司 吧 。\n", - "\n", - "BOS you 're so bad . EOS\n", - "BOS 你 真 壞 。 EOS\n", - "translation: 你 真 壞 。\n", - "\n", - "BOS give me the book . EOS\n", - "BOS 給 我 這 本 書 。 EOS\n", - "translation: 给 我 这 本 书 。\n", - "\n", - "BOS i love my life . EOS\n", - "BOS 我 爱 我 的 生 活 。 EOS\n", - "translation: 我 爱 我 的 生 活 。\n", - "\n", - "BOS we 're still UNK . EOS\n", - "BOS 我 们 还 是 UNK 弱 不 UNK 。 EOS\n", - "translation: 我 们 还 是 活 着 。\n", - "\n", - "BOS tom can run fast . EOS\n", - "BOS T o m 可 以 跑 得 很 快 。 EOS\n", - "translation: 汤 姆 可 能 跑 得 快 。\n", - "\n", - "BOS you look happy today . EOS\n", - "BOS 你 今 天 看 起 來 很 高 興 。 EOS\n", - "translation: 你 今 天 看 起 來 很 高 興 。\n", - "\n", - "BOS you look very good . EOS\n", - "BOS 你 看 上 去 很 好 。 EOS\n", - "translation: 你 看 起 來 很 好 。\n", - "\n", - "BOS i said shut up ! EOS\n", - "BOS 我 说 过 了 , 闭 嘴 ! EOS\n", - "translation: 我 说 过 了 , 闭 嘴 !\n", - "\n", - "BOS this is a book . EOS\n", - "BOS 这 是 一 本 书 。 EOS\n", - "translation: 這 是 一 本 書 。\n", - "\n", - "BOS i feel like crying . EOS\n", - "BOS 我 想 哭 。 EOS\n", - "translation: 我 想 哭 。\n", - "\n", - "BOS the man finally confessed . EOS\n", - "BOS 那 个 男 人 最 终 供 认 了 他 的 罪 行 。 EOS\n", - "translation: 那 個 男 人 最 终 供 議 了 他 的 罪 行 。\n", - "\n", - "BOS we are having dinner . EOS\n", - "BOS 我 們 在 吃 晚 餐 。 EOS\n", - "translation: 我 們 在 吃 晚 餐 。\n", - "\n", - "BOS do n't be UNK . EOS\n", - "BOS 別 被 嚇 壞 了 。 EOS\n", - "translation: 不 要 被 嚇 壞 了 。\n", - "\n", - "BOS who is your teacher ? EOS\n", - "BOS 谁 是 你 老 师 ? EOS\n", - "translation: 你 老 師 是 誰 ?\n", - "\n", - "BOS whose fault is it ? EOS\n", - "BOS 是 誰 的 錯 呢 ? EOS\n", - "translation: 这 是 谁 的 ?\n", - "\n", - "BOS be careful with it . EOS\n", - "BOS 当 心 它 。 EOS\n", - "translation: 小 心 脚 下 。\n", - "\n", - "BOS i ca n't say . EOS\n", - "BOS 我 不 能 说 。 EOS\n", - "translation: 我 不 能 说 。\n", - "\n", - "BOS is it really possible ? EOS\n", - "BOS 真 的 是 可 能 的 嗎 ? EOS\n", - "translation: 可 能 确 的 吗 ?\n", - "\n", - "BOS whose shirt is this ? EOS\n", - "BOS 這 是 誰 的 襯 衫 。 EOS\n", - "translation: 这 是 谁 的 ?\n", - "\n", - "BOS mastering english is difficult . EOS\n", - "BOS 精 通 英 語 是 困 難 的 。 EOS\n", - "translation: 精 通 英 語 是 困 難 的 。\n", - "\n", - "BOS i should 've UNK . EOS\n", - "BOS 我 本 应 UNK 拒 。 EOS\n", - "translation: 我 應 該 有 。\n", - "\n", - "BOS give me your location . EOS\n", - "BOS 给 我 你 的 位 置 。 EOS\n", - "translation: 给 我 你 的 位 置 。\n", - "\n", - "BOS we started at six . EOS\n", - "BOS 我 們 六 點 開 始 。 EOS\n", - "translation: 我 們 六 點 開 始 了 。\n", - "\n", - "BOS which is your book ? EOS\n", - "BOS 哪 本 書 是 你 們 的 ? EOS\n", - "translation: 哪 本 書 是 您 的 ?\n", - "\n", - "BOS where are your things ? EOS\n", - "BOS 你 們 的 東 西 在 哪 裡 ? EOS\n", - "translation: 你 們 的 東 西 在 哪 裡 ?\n", - "\n", - "BOS have you eaten dinner ? EOS\n", - "BOS 你 吃 晚 飯 了 嗎 ? EOS\n", - "translation: 你 吃 晚 飯 了 嗎 ?\n", - "\n", - "BOS i sort of understand . EOS\n", - "BOS 我 大 概 懂 了 。 EOS\n", - "translation: 我 大 概 懂 了 。\n", - "\n", - "BOS tom is working hard . EOS\n", - "BOS 汤 姆 在 努 力 工 作 。 EOS\n", - "translation: 汤 姆 在 努 力 工 作 。\n", - "\n", - "BOS you might meet him . EOS\n", - "BOS 你 可 能 會 見 到 他 。 EOS\n", - "translation: 你 可 能 會 見 到 他 。\n", - "\n", - "BOS i should stop UNK . EOS\n", - "BOS 我 做 事 该 果 断 。 EOS\n", - "translation: 我 不 该 再 喝 了 。\n", - "\n", - "BOS he went by bicycle . EOS\n", - "BOS 他 骑 自 行 车 去 的 。 EOS\n", - "translation: 他 騎 腳 踏 車 去 。\n", - "\n", - "BOS where is the bank ? EOS\n", - "BOS 银 行 在 哪 里 ? EOS\n", - "translation: 银 行 在 哪 里 ?\n", - "\n", - "BOS what a beautiful flower ! EOS\n", - "BOS 多 漂 亮 的 花 啊 ! EOS\n", - "translation: 多 漂 亮 的 花 啊 !\n", - "\n", - "BOS i 've gained weight . EOS\n", - "BOS 我 增 加 了 體 重 。 EOS\n", - "translation: 我 增 加 了 體 重 。\n", - "\n", - "BOS the contract was signed . EOS\n", - "BOS UNK 約 簽 訂 了 。 EOS\n", - "translation: 約 簽 訂 了 。\n", - "\n", - "BOS i 'm very happy . EOS\n", - "BOS 我 很 快 樂 。 EOS\n", - "translation: 我 很 快 樂 。\n", - "\n", - "BOS just take it slowly . EOS\n", - "BOS 慢 慢 来 。 EOS\n", - "translation: 慢 地 铁 慢 一 点 。\n", - "\n", - "BOS put the book there . EOS\n", - "BOS 把 書 放 在 那 裡 。 EOS\n", - "translation: 把 書 放 在 那 裡 。\n", - "\n", - "BOS he should thank you . EOS\n", - "BOS 他 應 該 感 謝 您 。 EOS\n", - "translation: 他 應 該 感 謝 你 。\n", - "\n", - "BOS everybody wanted to eat . EOS\n", - "BOS 每 个 人 都 想 吃 。 EOS\n", - "translation: 大 家 都 想 吃 。\n", - "\n", - "BOS my throat feels dry . EOS\n", - "BOS 我 喉 UNK 很 干 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 喉 很 干 。\n", - "\n", - "BOS i agree with him . EOS\n", - "BOS 我 同 意 他 。 EOS\n", - "translation: 我 同 意 他 。\n", - "\n", - "BOS this shirt needs UNK . EOS\n", - "BOS 这 衬 衫 需 要 熨 。 EOS\n", - "translation: 这 衬 衫 需 要 熨 。\n", - "\n", - "BOS i 've got time . EOS\n", - "BOS 我 有 时 间 。 EOS\n", - "translation: 我 有 時 間 到 了 。\n", - "\n", - "BOS could you sign here ? EOS\n", - "BOS 你 能 在 这 里 签 名 吗 ? EOS\n", - "translation: 你 能 在 这 里 签 名 吗 ?\n", - "\n", - "BOS i 'm so fat . EOS\n", - "BOS 我 好 胖 哦 。 EOS\n", - "translation: 我 好 胖 哦 。\n", - "\n", - "BOS tom is very talented . EOS\n", - "BOS 汤 姆 多 才 多 艺 。 EOS\n", - "translation: 湯 姆 有 很 多 才 华 的 東 西 。\n", - "\n", - "BOS i miss my children . EOS\n", - "BOS 我 想 念 我 的 孩 子 。 EOS\n", - "translation: 我 想 念 我 的 孩 子 。\n", - "\n", - "BOS do you know me ? EOS\n", - "BOS 你 认 识 我 吗 ? EOS\n", - "translation: 你 认 识 我 吗 ?\n", - "\n", - "BOS it is too late . EOS\n", - "BOS 太 晚 了 。 EOS\n", - "translation: 太 晚 了 。\n", - "\n", - "BOS do you study english ? EOS\n", - "BOS 你 学 英 语 吗 ? EOS\n", - "translation: 你 學 英 語 嗎 ?\n", - "\n", - "BOS he comes from england . EOS\n", - "BOS 他 来 自 英 格 兰 。 EOS\n", - "translation: 他 來 自 英 國 。\n", - "\n", - "BOS he studied very hard . EOS\n", - "BOS 他 学 习 非 常 努 力 。 EOS\n", - "translation: 他 学 习 非 常 努 力 。\n", - "\n", - "BOS it 's very UNK . EOS\n", - "BOS 它 真 是 不 舒 服 。 EOS\n", - "translation: 它 很 可 怕 。\n", - "\n", - "BOS which book is yours ? EOS\n", - "BOS 哪 本 是 你 們 的 書 ? EOS\n", - "translation: 哪 本 書 是 您 的 ?\n", - "\n", - "BOS which book is yours ? EOS\n", - "BOS 哪 本 書 是 你 們 的 ? EOS\n", - "translation: 哪 本 書 是 您 的 ?\n", - "\n", - "BOS UNK the bell twice . EOS\n", - "BOS 按 两 下 铃 。 EOS\n", - "translation: 按 两 下 铃 。\n", - "\n", - "BOS marriage UNK some people . EOS\n", - "BOS 有 些 人 害 怕 婚 姻 。 EOS\n", - "translation: 有 些 人 害 怕 婚 姻 。\n", - "\n", - "BOS this is my dictionary . EOS\n", - "BOS 这 是 我 的 字 典 。 EOS\n", - "translation: 這 是 我 的 字 典 。\n", - "\n", - "BOS i know my UNK . EOS\n", - "BOS 我 知 道 我 的 限 度 。 EOS\n", - "translation: 我 知 道 我 的 限 度 。\n", - "\n", - "BOS she 's my daughter . EOS\n", - "BOS 她 是 我 女 儿 。 EOS\n", - "translation: 她 是 我 女 兒 。\n", - "\n", - "BOS did you bring them ? EOS\n", - "BOS 你 把 它 们 带 来 了 么 ? EOS\n", - "translation: 你 帶 來 了 嗎 ?\n", - "\n", - "BOS most americans like hamburgers . EOS\n", - "BOS 大 多 數 的 美 國 人 喜 歡 漢 堡 。 EOS\n", - "translation: 大 多 數 的 美 國 人 喜 歡 漢 堡 。\n", - "\n", - "BOS we 'd better talk . EOS\n", - "BOS 我 们 谈 谈 比 较 好 。 EOS\n", - "translation: 我 们 谈 谈 谈 谈 谈 谈 谈 比 较 好 。\n", - "\n", - "BOS i like UNK music . EOS\n", - "BOS 我 喜 歡 器 樂 。 EOS\n", - "translation: 我 喜 歡 器 樂 。\n", - "\n", - "BOS the lake was frozen . EOS\n", - "BOS 湖 冻 冰 了 。 EOS\n", - "translation: 湖 冻 冰 了 。\n", - "\n", - "BOS she especially likes music . EOS\n", - "BOS 她 特 別 喜 愛 音 樂 。 EOS\n", - "translation: 她 特 別 喜 愛 音 樂 。\n", - "\n", - "BOS the car broke down . EOS\n", - "BOS 汽 车 发 生 故 障 了 。 EOS\n", - "translation: 汽 車 發 燒 了 。\n", - "\n", - "BOS health is above wealth . EOS\n", - "BOS 健 康 比 财 富 重 要 。 EOS\n", - "translation: 健 康 勝 於 財 富 。\n", - "\n", - "BOS my album is here . EOS\n", - "BOS 我 的 相 簿 在 這 裡 。 EOS\n", - "translation: 我 的 相 簿 在 這 裡 。\n", - "\n", - "BOS christmas is december UNK . EOS\n", - "BOS 聖 誕 節 是 1 2 月 2 5 日 。 EOS\n", - "translation: 聖 誕 節 是 1 2 5 月 2 5 日 。\n", - "\n", - "BOS how should i know ? EOS\n", - "BOS 我 怎 麼 知 道 ? EOS\n", - "translation: 我 怎 麼 知 道 ?\n", - "\n", - "BOS do n't quit english . EOS\n", - "BOS 不 要 放 棄 英 語 。 EOS\n", - "translation: 不 要 放 棄 英 語 。\n", - "\n", - "BOS we did it ourselves . EOS\n", - "BOS 我 们 自 己 做 的 。 EOS\n", - "translation: 我 们 自 骗 自 了 。\n", - "\n", - "BOS tom started the engine . EOS\n", - "BOS 湯 姆 發 動 了 引 擎 。 EOS\n", - "translation: 湯 姆 發 動 了 引 擎 。\n", - "\n", - "BOS i like short hair . EOS\n", - "BOS 我 喜 欢 短 发 。 EOS\n", - "translation: 我 喜 歡 短 发 。\n", - "\n", - "BOS be nice to others . EOS\n", - "BOS 对 他 人 要 友 善 。 EOS\n", - "translation: 对 其 他 人 一 起 , 別 人 。\n", - "\n", - "BOS i bought that car . EOS\n", - "BOS 我 買 了 那 輛 車 。 EOS\n", - "translation: 我 買 了 那 輛 車 。\n", - "\n", - "BOS that 's quite UNK . EOS\n", - "BOS 这 毫 无 意 义 。 EOS\n", - "translation: 那 真 是 事 情 。\n", - "\n", - "BOS i am in trouble . EOS\n", - "BOS 我 有 麻 煩 了 。 EOS\n", - "translation: 我 遇 到 困 難 了 。\n", - "\n", - "BOS i won the lottery . EOS\n", - "BOS 我 中 奖 了 。 EOS\n", - "translation: 我 中 奖 了 。\n", - "\n", - "BOS there 's no sugar . EOS\n", - "BOS 没 有 糖 。 EOS\n", - "translation: 没 有 糖 。\n", - "\n", - "BOS i believe in you . EOS\n", - "BOS 我 相 信 你 。 EOS\n", - "translation: 我 相 信 你 。\n", - "\n", - "BOS have you finished it ? EOS\n", - "BOS 你 做 完 了 嗎 ? EOS\n", - "translation: 你 做 完 了 嗎 ?\n", - "\n", - "BOS tom joined the discussion . EOS\n", - "BOS 汤 姆 参 加 了 讨 论 。 EOS\n", - "translation: 汤 姆 参 加 了 讨 论 。\n", - "\n", - "BOS your cake is delicious . EOS\n", - "BOS 你 的 蛋 糕 很 美 味 。 EOS\n", - "translation: 您 的 蛋 糕 很 美 味 。\n", - "\n", - "BOS your english is improving . EOS\n", - "BOS 你 的 英 語 正 在 進 步 。 EOS\n", - "translation: 你 的 英 語 正 在 進 步 。\n", - "\n", - "BOS she is very clever . EOS\n", - "BOS 她 很 聰 明 。 EOS\n", - "translation: 她 很 聰 明 。\n", - "\n", - "BOS she answered in tears . EOS\n", - "BOS 她 很 傷 心 地 回 答 。 EOS\n", - "translation: 她 很 傷 心 地 回 答 。\n", - "\n", - "BOS please do n't ask . EOS\n", - "BOS 請 不 要 問 。 EOS\n", - "translation: 請 不 要 問 。\n", - "\n", - "BOS turn on the tv . EOS\n", - "BOS 开 电 视 。 EOS\n", - "translation: 关 闭 电 视 机\n", - "\n", - "BOS he is very angry . EOS\n", - "BOS 他 非 常 生 气 。 EOS\n", - "translation: 他 非 常 生 气 。\n", - "\n", - "BOS which one is easier ? EOS\n", - "BOS 哪 一 個 最 簡 單 ? EOS\n", - "translation: 哪 一 個 最 簡 單 ?\n", - "\n", - "BOS i do n't remember . EOS\n", - "BOS 我 不 記 得 了 。 EOS\n", - "translation: 我 不 記 得 了 。\n", - "\n", - "BOS he is very handsome . EOS\n", - "BOS 他 很 英 俊 。 EOS\n", - "translation: 他 很 英 俊 。\n", - "\n", - "BOS why do you ask ? EOS\n", - "BOS 你 問 這 個 幹 什 麼 ? EOS\n", - "translation: 你 為 什 麼 問 ?\n", - "\n", - "BOS i know her address . EOS\n", - "BOS 我 知 道 她 的 地 址 。 EOS\n", - "translation: 我 知 道 她 的 地 址 。\n", - "\n", - "BOS english is third period . EOS\n", - "BOS 英 語 是 第 三 節 。 EOS\n", - "translation: 英 語 是 第 三 節 。\n", - "\n", - "BOS is n't he italian ? EOS\n", - "BOS 他 不 是 意 大 利 人 吗 ? EOS\n", - "translation: 他 不 是 意 大 利 人 嗎 ?\n", - "\n", - "BOS how do you feel ? EOS\n", - "BOS 你 感 觉 如 何 ? EOS\n", - "translation: 你 感 覺 如 何 ?\n", - "\n", - "BOS i have two cats . EOS\n", - "BOS 我 有 两 只 猫 。 EOS\n", - "translation: 我 有 两 只 猫 。\n", - "\n", - "BOS your suggestion seems reasonable . EOS\n", - "BOS 你 的 建 議 似 乎 是 合 理 的 。 EOS\n", - "translation: 你 的 建 議 似 乎 是 合 理 的 。\n", - "\n", - "BOS we know our UNK . EOS\n", - "BOS 我 们 知 道 我 们 的 权 利 。 EOS\n", - "translation: 我 們 知 道 我 們 的 意 見 。\n", - "\n", - "BOS do you like it ? EOS\n", - "BOS 你 喜 欢 吗 ? EOS\n", - "translation: 你 喜 欢 吗 ?\n", - "\n", - "BOS how could things get worse ? EOS\n", - "BOS 事 情 怎 麼 變 糟 的 ? EOS\n", - "translation: 事 情 怎 麼 變 糟 的 ?\n", - "\n", - "BOS tom UNK kept to himself . EOS\n", - "BOS 汤 姆 大 多 一 个 人 独 处 。 EOS\n", - "translation: 汤 姆 大 一 个 人 独 处 。\n", - "\n", - "BOS when does the game begin ? EOS\n", - "BOS 游 戏 几 点 开 始 ? EOS\n", - "translation: 游 戏 几 点 开 始 ?\n", - "\n", - "BOS i do n't understand german . EOS\n", - "BOS 我 不 懂 德 语 。 EOS\n", - "translation: 我 不 懂 德 语 。\n", - "\n", - "BOS he UNK for his father . EOS\n", - "BOS 子 承 父 业 。 EOS\n", - "translation: 他 和 他 爸 爸 爸 爸 爸 爸 爸 爸 。\n", - "\n", - "BOS she hit the ball hard . EOS\n", - "BOS 她 用 力 地 拍 了 球 。 EOS\n", - "translation: 她 用 功 地 拍 了 球 。\n", - "\n", - "BOS all my homework is done . EOS\n", - "BOS 我 做 完 了 所 有 的 回 家 作 業 。 EOS\n", - "translation: 我 的 作 業 都 完 成 功 。\n", - "\n", - "BOS my uncle never writes letters . EOS\n", - "BOS 我 的 叔 叔 從 來 不 寫 信 。 EOS\n", - "translation: 我 的 叔 叔 從 來 不 寫 信 。\n", - "\n", - "BOS i gave you a book . EOS\n", - "BOS 我 给 了 你 一 本 书 。 EOS\n", - "translation: 我 給 了 你 一 本 書 書 。\n", - "\n", - "BOS i only spent three dollars . EOS\n", - "BOS 我 只 花 了 三 美 元 。 EOS\n", - "translation: 我 只 花 了 三 美 元 。\n", - "\n", - "BOS that 's what tom requested . EOS\n", - "BOS 那 就 是 汤 姆 想 要 的 。 EOS\n", - "translation: 那 就 是 汤 姆 想 要 的 。\n", - "\n", - "BOS it makes me feel sad . EOS\n", - "BOS 这 让 我 感 到 沮 丧 。 EOS\n", - "translation: 这 让 我 感 到 沮 丧 。\n", - "\n", - "BOS this car handles very easily . EOS\n", - "BOS 这 车 容 易 开 。 EOS\n", - "translation: 这 车 容 易 开 。\n", - "\n", - "BOS i 've never UNK tom . EOS\n", - "BOS 我 从 没 低 估 汤 姆 。 EOS\n", - "translation: 我 从 没 低 估 汤 姆 。\n", - "\n", - "BOS i threw away my shoes . EOS\n", - "BOS 我 把 自 己 的 鞋 子 扔 掉 了 。 EOS\n", - "translation: 我 把 自 己 的 鞋 子 扔 掉 了 。\n", - "\n", - "BOS i did n't see him . EOS\n", - "BOS 我 没 见 到 他 。 EOS\n", - "translation: 我 看 不 見 他 。\n", - "\n", - "BOS what are you staring at ? EOS\n", - "BOS 你 在 看 什 麼 ? EOS\n", - "translation: 你 在 看 什 麼 ?\n", - "\n", - "BOS the meat has gone bad . EOS\n", - "BOS 這 肉 已 經 壞 了 。 EOS\n", - "translation: 這 肉 已 經 壞 了 。\n", - "\n", - "BOS he passed the entrance examination . EOS\n", - "BOS 他 通 過 了 入 學 考 試 。 EOS\n", - "translation: 他 通 過 了 入 學 考 試 。\n", - "\n", - "BOS i must help my mother . EOS\n", - "BOS 我 必 須 幫 忙 我 母 親 。 EOS\n", - "translation: 我 必 須 幫 忙 我 母 親 。\n", - "\n", - "BOS what 's your home address ? EOS\n", - "BOS 你 家 的 地 址 是 什 麼 ? EOS\n", - "translation: 你 家 的 地 址 是 什 麼 ?\n", - "\n", - "BOS they UNK ten enemy ships . EOS\n", - "BOS 他 们 使 1 0 艘 敌 船 沉 了 EOS\n", - "translation: 他 們 的 敵 人 在 冰 箱 。\n", - "\n", - "BOS everything went according to plan . EOS\n", - "BOS 一 切 按 計 劃 進 行 。 EOS\n", - "translation: 一 切 按 計 劃 進 行 。\n", - "\n", - "BOS is one thousand yen enough ? EOS\n", - "BOS 1 0 0 0 日 元 够 不 够 ? EOS\n", - "translation: 1 0 0 0 0 日 元 够 ?\n", - "\n", - "BOS he barely passed the examination . EOS\n", - "BOS 他 勉 強 地 通 過 了 考 試 。 EOS\n", - "translation: 他 勉 強 地 通 過 了 考 試 。\n", - "\n", - "BOS do n't waste your time . EOS\n", - "BOS 别 浪 费 时 间 。 EOS\n", - "translation: 别 浪 费 时 间 。\n", - "\n", - "BOS the united states borders canada . EOS\n", - "BOS 美 国 与 加 拿 大 相 邻 。 EOS\n", - "translation: 美 国 与 加 拿 大 相 邻 。\n", - "\n", - "BOS i would like fruit juice . EOS\n", - "BOS 我 想 要 果 汁 。 EOS\n", - "translation: 我 想 要 果 汁 。\n", - "\n", - "BOS he 's accustomed to traveling . EOS\n", - "BOS 他 習 慣 了 旅 行 。 EOS\n", - "translation: 他 習 慣 旅 行 。\n", - "\n", - "BOS i started thinking about tom . EOS\n", - "BOS 我 开 始 想 起 汤 姆 。 EOS\n", - "translation: 我 回 答 湯 姆 。\n", - "\n", - "BOS please be quiet , everybody . EOS\n", - "BOS 请 大 家 都 保 持 安 静 。 EOS\n", - "translation: 請 講 大 家 , 每 個 人 都 保 持 安 靜 。\n", - "\n", - "BOS let 's go by bus . EOS\n", - "BOS 讓 我 們 坐 公 共 汽 車 去 。 EOS\n", - "translation: 我 們 乘 公 共 汽 車 去 。\n", - "\n", - "BOS what 's that bird called ? EOS\n", - "BOS 那 隻 鳥 叫 什 麼 名 字 ? EOS\n", - "translation: 那 隻 鳥 叫 什 麼 名 字 ?\n", - "\n", - "BOS would you like to come ? EOS\n", - "BOS 你 愿 意 来 吗 ? EOS\n", - "translation: 你 想 來 嗎 ?\n", - "\n", - "BOS we want to hear it . EOS\n", - "BOS 我 们 想 听 听 。 EOS\n", - "translation: 我 們 想 聽 聽 說 話 。\n", - "\n", - "BOS tears UNK down my UNK . EOS\n", - "BOS 泪 水 沿 着 我 的 面 UNK 流 了 下 来 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 泪 水 沿 下 了 我 的 下 来 。\n", - "\n", - "BOS he suddenly became very happy . EOS\n", - "BOS 他 突 然 變 得 非 常 開 心 。 EOS\n", - "translation: 他 突 然 變 得 非 常 開 心 。\n", - "\n", - "BOS i am sixteen years old . EOS\n", - "BOS 我 1 6 岁 了 。 EOS\n", - "translation: 我 1 岁 了 。\n", - "\n", - "BOS spring is my favorite season . EOS\n", - "BOS 春 天 是 我 最 喜 爱 的 季 节 。 EOS\n", - "translation: 春 天 是 我 最 喜 爱 的 季 节 。\n", - "\n", - "BOS i 'm looking for you . EOS\n", - "BOS 我 在 找 你 。 EOS\n", - "translation: 我 在 找 你 。\n", - "\n", - "BOS can i rest a bit ? EOS\n", - "BOS 我 能 休 息 一 会 儿 吗 ? EOS\n", - "translation: 我 会 休 息 一 会 儿 吗 ?\n", - "\n", - "BOS may i eat this orange ? EOS\n", - "BOS 我 可 以 吃 這 個 柳 橙 嗎 ? EOS\n", - "translation: 我 可 以 吃 這 個 柳 橙 嗎 ?\n", - "\n", - "BOS i 'm able to speak . EOS\n", - "BOS 我 能 说 。 EOS\n", - "translation: 我 會 說 話 。\n", - "\n", - "BOS our school begins at eight-thirty . EOS\n", - "BOS 我 們 學 校 在 八 點 半 開 始 上 課 。 EOS\n", - "translation: 我 們 學 校 在 八 點 半 開 始 上 課 。\n", - "\n", - "BOS there 's nothing to forgive . EOS\n", - "BOS 没 什 么 可 原 谅 的 。 EOS\n", - "translation: 没 什 么 可 原 谅 的 。\n", - "\n", - "BOS he saw her and UNK . EOS\n", - "BOS 他 看 到 她 就 臉 紅 了 。 EOS\n", - "translation: 他 看 到 她 , 並 且 她 也 和 她 一 起 來 。\n", - "\n", - "BOS tom came home early yesterday . EOS\n", - "BOS 湯 姆 昨 天 提 早 回 來 了 。 EOS\n", - "translation: 湯 姆 昨 天 來 就 開 了 。\n", - "\n", - "BOS i 'm a free man . EOS\n", - "BOS 我 是 一 個 自 由 的 人 。 EOS\n", - "translation: 我 是 個 有 空 人 。\n", - "\n", - "BOS tom has been quite UNK . EOS\n", - "BOS 汤 姆 很 合 作 。 EOS\n", - "translation: 汤 姆 完 全 明 白 。\n", - "\n", - "BOS he has n't come yet . EOS\n", - "BOS 他 還 沒 來 。 EOS\n", - "translation: 他 還 沒 來 。\n", - "\n", - "BOS i 'm a new student . EOS\n", - "BOS 我 是 个 新 生 。 EOS\n", - "translation: 我 是 个 新 生 。\n", - "\n", - "BOS she plays tennis every sunday . EOS\n", - "BOS 她 每 個 星 期 天 打 網 球 。 EOS\n", - "translation: 她 每 個 星 期 天 打 網 球 。\n", - "\n", - "BOS he played baseball after school . EOS\n", - "BOS 他 放 學 後 打 棒 球 。 EOS\n", - "translation: 他 放 學 後 打 棒 球 。\n", - "\n", - "BOS always be true to yourself . EOS\n", - "BOS 永 遠 要 對 自 己 誠 實 。 EOS\n", - "translation: 總 是 對 自 己 誠 實 。\n", - "\n", - "BOS i did n't mean it . EOS\n", - "BOS 我 不 是 这 个 意 思 。 EOS\n", - "translation: 我 不 是 这 个 意 思 。\n", - "\n", - "BOS my team is always losing . EOS\n", - "BOS 我 们 队 总 是 输 。 EOS\n", - "translation: 我 的 队 總 是 输 。\n", - "\n", - "BOS do n't miss the bus . EOS\n", - "BOS 不 要 错 过 公 车 。 EOS\n", - "translation: 不 要 错 过 公 车 。\n", - "\n", - "BOS it 's up to you . EOS\n", - "BOS 由 你 來 決 定 。 EOS\n", - "translation: 由 你 來 決 定 。\n", - "\n", - "BOS i will go on ahead . EOS\n", - "BOS 我 會 繼 續 前 進 。 EOS\n", - "translation: 我 會 在 前 面 前 前 前 到 達 門 。\n", - "\n", - "BOS he left without saying goodbye . EOS\n", - "BOS 他 不 辭 而 別 。 EOS\n", - "translation: 他 沒 說 話 離 開 。\n", - "\n", - "BOS he disappeared without a trace . EOS\n", - "BOS 他 消 失 了 , 不 留 一 丝 踪 迹 。 EOS\n", - "translation: 他 消 失 了 , 不 留 一 丝 踪 迹 。\n", - "\n", - "BOS tom went down the hill . EOS\n", - "BOS 汤 姆 走 下 山 坡 。 EOS\n", - "translation: 湯 姆 上 山 坡 上 去 山 。\n", - "\n", - "BOS i am on the right . EOS\n", - "BOS 我 在 右 邊 。 EOS\n", - "translation: 我 在 右 邊 。\n", - "\n", - "BOS did you play tennis yesterday ? EOS\n", - "BOS 你 昨 天 打 网 球 了 吗 ? EOS\n", - "translation: 你 昨 天 打 網 球 了 嗎 ?\n", - "\n", - "BOS where are those UNK now ? EOS\n", - "BOS 那 些 海 报 现 在 都 到 哪 里 去 了 ? EOS\n", - "translation: 那 些 海 报 现 在 住 在 哪 里 ?\n", - "\n", - "BOS what 's your favorite UNK ? EOS\n", - "BOS 你 最 喜 欢 的 饮 料 是 什 么 ? EOS\n", - "translation: 你 最 喜 歡 哪 一 隊 的 ?\n", - "\n", - "BOS UNK drinking is a UNK . EOS\n", - "BOS 未 满 年 龄 饮 酒 是 罪 行 。 EOS\n", - "translation: 未 婚 动 是 由 六 點 鐘 。\n", - "\n", - "BOS few students knew his name . EOS\n", - "BOS 很 少 学 生 知 道 他 的 名 字 。 EOS\n", - "translation: 几 乎 知 道 他 的 學 生 。\n", - "\n", - "BOS are you free tomorrow evening ? EOS\n", - "BOS 你 明 晚 有 空 嗎 ? EOS\n", - "translation: 你 明 天 晚 上 有 空 嗎 ?\n", - "\n", - "BOS i ca n't meet you . EOS\n", - "BOS 遇 不 到 你 。 EOS\n", - "translation: 我 不 能 見 到 你 。\n", - "\n", - "BOS she UNK a motorcycle well . EOS\n", - "BOS 她 骑 摩 托 车 的 技 术 不 错 ! EOS\n", - "translation: 她 骑 摩 托 车 的 技 术 不 错 !\n", - "\n", - "BOS you must answer these questions . EOS\n", - "BOS 你 必 須 回 答 這 些 問 題 。 EOS\n", - "translation: 你 必 須 回 答 這 些 問 題 。\n", - "\n", - "BOS how high can you jump ? EOS\n", - "BOS 您 能 跳 多 高 ? EOS\n", - "translation: 你 能 跳 多 高 ?\n", - "\n", - "BOS he is my youngest brother . EOS\n", - "BOS 他 是 我 最 年 轻 的 兄 弟 。 EOS\n", - "translation: 他 是 我 最 年 轻 的 兄 弟 。\n", - "\n", - "BOS most boys like computer games . EOS\n", - "BOS 大 多 数 男 生 喜 欢 电 脑 游 戏 。 EOS\n", - "translation: 大 部 分 的 男 孩 喜 歡 电 脑 游 戏 。\n", - "\n", - "BOS can i have a bite ? EOS\n", - "BOS 我 可 以 吃 一 口 嗎 ? EOS\n", - "translation: 我 可 以 吃 一 口 嗎 ?\n", - "\n", - "BOS this is not very UNK . EOS\n", - "BOS 這 不 是 很 流 行 。 EOS\n", - "translation: 这 不 是 很 意 思 。\n", - "\n", - "BOS there is a fork missing . EOS\n", - "BOS 少 一 把 叉 子 。 EOS\n", - "translation: 少 一 把 叉 子 。\n", - "\n", - "BOS i love my yellow sweater . EOS\n", - "BOS 我 很 喜 欢 我 的 黄 色 套 衫 。 EOS\n", - "translation: 我 愛 查 一 下 我 的 錯 誤 。\n", - "\n", - "BOS we UNK tea from india . EOS\n", - "BOS 我 們 從 印 度 進 口 茶 葉 。 EOS\n", - "translation: 我 們 從 印 度 進 口 茶 葉 。\n", - "\n", - "BOS he seldom goes to church . EOS\n", - "BOS 他 很 少 去 教 堂 。 EOS\n", - "translation: 他 很 少 去 上 教 堂 。\n", - "\n", - "BOS it seemed to be cheap . EOS\n", - "BOS 似 乎 很 便 宜 。 EOS\n", - "translation: 似 乎 很 便 宜 。\n", - "\n", - "BOS tom can keep a secret . EOS\n", - "BOS 汤 姆 会 保 密 。 EOS\n", - "translation: 汤 姆 可 以 保 密 保 密 。\n", - "\n", - "BOS tennis is my favorite sport . EOS\n", - "BOS 网 球 是 我 最 喜 欢 的 运 动 。 EOS\n", - "translation: 网 球 是 我 最 喜 欢 的 运 动 。\n", - "\n", - "BOS when is your bed time ? EOS\n", - "BOS 你 什 么 时 候 睡 觉 ? EOS\n", - "translation: 你 何 時 正 在 床 上 的 時 間 ?\n", - "\n", - "BOS give me something to do . EOS\n", - "BOS 给 我 点 事 做 。 EOS\n", - "translation: 给 我 点 事 做 。\n", - "\n", - "BOS nobody gave us a chance . EOS\n", - "BOS 没 人 给 我 们 机 会 。 EOS\n", - "translation: 没 有 人 给 我 们 机 会 。\n", - "\n", - "BOS i am six feet tall . EOS\n", - "BOS 我 六 英 尺 高 。 EOS\n", - "translation: 我 六 點 鐘 很 高 。\n", - "\n", - "BOS where can you get tickets ? EOS\n", - "BOS 在 哪 里 可 以 买 到 车 票 ? EOS\n", - "translation: 你 可 以 在 哪 裡 可 以 有 票 付 款 ?\n", - "\n", - "BOS these pants fit me well . EOS\n", - "BOS 我 穿 這 條 褲 子 很 合 身 。 EOS\n", - "translation: 这 些 裤 子 我 穿 起 来 很 合 身 。\n", - "\n", - "BOS he showed me her picture . EOS\n", - "BOS 他 給 我 看 了 她 的 照 片 。 EOS\n", - "translation: 他 給 我 看 了 她 的 照 片 。\n", - "\n", - "BOS are you afraid of UNK ? EOS\n", - "BOS 你 怕 虫 子 吗 ? EOS\n", - "translation: 你 怕 嗎 ?\n", - "\n", - "BOS how about taking a rest ? EOS\n", - "BOS 休 息 一 下 怎 麼 樣 ? EOS\n", - "translation: 休 息 一 下 怎 麼 樣 ?\n", - "\n", - "BOS i need a UNK dictionary . EOS\n", - "BOS 我 需 要 一 本 日 英 字 典 。 EOS\n", - "translation: 我 需 要 一 本 字 典 。\n", - "\n", - "BOS he 's a bit UNK . EOS\n", - "BOS 他 有 点 活 泼 。 EOS\n", - "translation: 他 有 点 活 泼 。\n", - "\n", - "BOS he 's bound to forget . EOS\n", - "BOS 他 准 会 忘 。 EOS\n", - "translation: 他 准 会 忘 。\n", - "\n", - "BOS the well has run dry . EOS\n", - "BOS 這 口 井 乾 涸 了 。 EOS\n", - "translation: 這 口 井 乾 涸 了 。\n", - "\n", - "BOS remember to mail this letter . EOS\n", - "BOS 記 得 要 去 寄 這 封 信 。 EOS\n", - "translation: 記 得 把 這 封 信 放 在 寄 這 封 信 。\n", - "\n", - "BOS many friends saw him off . EOS\n", - "BOS 許 多 朋 友 為 他 送 行 。 EOS\n", - "translation: 許 多 朋 友 在 他 送 行 。\n", - "\n", - "BOS actions speak louder than words . EOS\n", - "BOS 行 動 比 語 言 更 響 亮 。 EOS\n", - "translation: 坐 而 言 不 如 起 而 行 。\n", - "\n", - "BOS what country are you from ? EOS\n", - "BOS 你 是 从 哪 个 国 家 来 的 ? EOS\n", - "translation: 你 是 从 哪 个 国 家 来 的 ?\n", - "\n", - "BOS use it or lose it . EOS\n", - "BOS 使 用 它 或 失 去 它 。 EOS\n", - "translation: 使 用 它 或 失 去 它 。\n", - "\n", - "BOS i like to play basketball . EOS\n", - "BOS 我 喜 歡 打 籃 球 。 EOS\n", - "translation: 我 喜 歡 打 籃 球 。\n", - "\n", - "BOS she gave him a watch . EOS\n", - "BOS 她 给 了 他 一 块 表 。 EOS\n", - "translation: 她 給 了 他 一 支 錶 。\n", - "\n", - "BOS why did n't she come ? EOS\n", - "BOS 她 为 什 么 没 来 ? EOS\n", - "translation: 她 为 什 么 不 来 ?\n", - "\n", - "BOS give us a ride downtown . EOS\n", - "BOS 載 我 們 到 市 區 。 EOS\n", - "translation: 載 我 們 到 市 區 。\n", - "\n", - "BOS this is all i know . EOS\n", - "BOS 這 是 我 所 知 道 的 。 EOS\n", - "translation: 这 是 我 所 知 道 的 。\n", - "\n", - "BOS can we save the planet ? EOS\n", - "BOS 我 们 能 拯 救 这 颗 星 球 吗 ? EOS\n", - "translation: 我 們 可 以 保 密 這 個 行 星 嗎 ?\n", - "\n", - "BOS you swim better than me . EOS\n", - "BOS 你 游 泳 游 得 比 我 好 。 EOS\n", - "translation: 你 游 泳 游 得 比 我 好 。\n", - "\n", - "BOS she is a good UNK . EOS\n", - "BOS 她 是 一 個 很 好 的 舞 者 。 EOS\n", - "translation: 她 是 个 好 人 。\n", - "\n", - "BOS he walked past the house . EOS\n", - "BOS 他 走 過 這 棟 房 子 。 EOS\n", - "translation: 他 走 過 這 棟 房 子 。\n", - "\n", - "BOS he will reach hakodate tonight . EOS\n", - "BOS 他 今 晚 將 抵 達 函 館 。 EOS\n", - "translation: 他 今 晚 將 抵 達 函 館 。\n", - "\n", - "BOS this work does n't pay . EOS\n", - "BOS 这 个 工 作 没 有 酬 劳 。 EOS\n", - "translation: 這 個 工 作 不 付 錢 。\n", - "\n", - "BOS UNK UNK is worth visiting . EOS\n", - "BOS 吉 UNK 坡 值 得 一 遊 。 EOS\n", - "translation: 吉 斯 值 得 一 遊 。\n", - "\n", - "BOS please put on your shoes . EOS\n", - "BOS 請 穿 上 你 的 鞋 子 。 EOS\n", - "translation: 請 穿 上 你 的 鞋 子 。\n", - "\n", - "BOS go back to your seat . EOS\n", - "BOS 回 到 你 的 座 位 。 EOS\n", - "translation: 回 到 你 的 座 位 。\n", - "\n", - "BOS bring your student UNK card . EOS\n", - "BOS 帶 上 你 的 學 生 卡 。 EOS\n", - "translation: 帶 上 你 的 學 生 卡 。\n", - "\n", - "BOS hope is not a UNK . EOS\n", - "BOS 希 望 不 是 一 种 策 略 。 EOS\n", - "translation: 希 望 不 是 一 种 策 略 。\n", - "\n", - "BOS he stuck to his promise . EOS\n", - "BOS 他 信 守 了 承 诺 . EOS\n", - "translation: 他 信 守 以 承 诺 .\n", - "\n", - "BOS this book is really interesting . EOS\n", - "BOS 這 本 書 真 的 很 有 趣 。 EOS\n", - "translation: 這 本 書 真 的 有 趣 。\n", - "\n", - "BOS switzerland is a beautiful country . EOS\n", - "BOS 瑞 士 是 一 個 美 麗 的 國 家 。 EOS\n", - "translation: 瑞 士 是 一 个 美 丽 的 国 家 。\n", - "\n", - "BOS this must be my book . EOS\n", - "BOS 这 肯 定 是 我 的 书 。 EOS\n", - "translation: 这 是 我 的 书 。\n", - "\n", - "BOS i live in this area . EOS\n", - "BOS 我 住 在 这 区 。 EOS\n", - "translation: 我 住 在 這 地 方 。\n", - "\n", - "BOS you 're in my way . EOS\n", - "BOS 你 擋 住 了 我 的 路 。 EOS\n", - "translation: 你 擋 住 了 我 的 路 。\n", - "\n", - "BOS i saw him playing baseball . EOS\n", - "BOS 我 看 到 他 在 打 棒 球 。 EOS\n", - "translation: 我 看 見 他 打 棒 球 。\n", - "\n", - "BOS he can swim very fast . EOS\n", - "BOS 他 能 游 得 很 快 。 EOS\n", - "translation: 他 會 游 速 度 過 非 常 快 。\n", - "\n", - "BOS please go to the bank . EOS\n", - "BOS 請 去 銀 行 。 EOS\n", - "translation: 請 去 銀 行 。\n", - "\n", - "BOS you are not a coward . EOS\n", - "BOS 你 不 是 个 懦 夫 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 你 不 是 个 懦 夫 。\n", - "\n", - "BOS wash your hands before eating . EOS\n", - "BOS 進 食 前 先 洗 手 。 EOS\n", - "translation: 在 你 的 手 下 到 時 候 洗 手 。\n", - "\n", - "BOS we 'll always be friends . EOS\n", - "BOS 我 们 永 远 都 会 是 朋 友 。 EOS\n", - "translation: 我 們 總 是 朋 友 。\n", - "\n", - "BOS speaking in english is fun . EOS\n", - "BOS 說 英 語 很 有 趣 。 EOS\n", - "translation: 說 英 語 很 有 趣 。\n", - "\n", - "BOS i can see the light . EOS\n", - "BOS 我 能 看 到 光 線 。 EOS\n", - "translation: 我 可 以 看 上 錯 。\n", - "\n", - "BOS he often eats breakfast there . EOS\n", - "BOS 他 常 常 在 那 裡 吃 早 餐 。 EOS\n", - "translation: 他 常 在 那 裡 吃 早 餐 。\n", - "\n", - "BOS they did n't like you . EOS\n", - "BOS 他 们 不 喜 欢 你 。 EOS\n", - "translation: 他 们 不 喜 欢 你 。\n", - "\n", - "BOS how deep is the hole ? EOS\n", - "BOS 這 個 洞 多 深 ? EOS\n", - "translation: 這 個 洞 多 深 ?\n", - "\n", - "BOS she is watering the flowers . EOS\n", - "BOS 她 正 在 澆 花 。 EOS\n", - "translation: 她 正 在 澆 花 。\n", - "\n", - "BOS i 'll drive to UNK . EOS\n", - "BOS 我 會 開 車 到 底 特 律 。 EOS\n", - "translation: 我 會 開 車 。\n", - "\n", - "BOS guess what he told me . EOS\n", - "BOS 猜 猜 看 他 告 訴 了 我 什 麼 。 EOS\n", - "translation: 猜 猜 告 訴 我 他 問 題 。\n", - "\n", - "BOS he 'll wait for you . EOS\n", - "BOS 他 會 等 你 。 EOS\n", - "translation: 他 會 等 你 。\n", - "\n", - "BOS my UNK is very UNK . EOS\n", - "BOS 我 的 頭 皮 非 常 UNK 。 EOS\n", - "translation: 我 的 相 機 非 常 非 常 。\n", - "\n", - "BOS she spoke through an interpreter . EOS\n", - "BOS 她 透 過 傳 譯 員 發 言 。 EOS\n", - "translation: 她 透 過 傳 譯 員 發 言 。\n", - "\n", - "BOS i speak english every day . EOS\n", - "BOS 我 每 天 都 说 英 语 。 EOS\n", - "translation: 我 每 天 都 说 英 语 。\n", - "\n", - "BOS compare your UNK with his . EOS\n", - "BOS 比 較 你 和 他 的 翻 譯 。 EOS\n", - "translation: 比 較 你 和 他 的 翻 譯 。\n", - "\n", - "BOS tom or somebody said that . EOS\n", - "BOS 汤 姆 或 某 人 说 了 那 事 。 EOS\n", - "translation: 汤 姆 或 某 人 说 了 那 事 。\n", - "\n", - "BOS my cats will love this . EOS\n", - "BOS 我 的 猫 会 爱 上 这 个 。 EOS\n", - "translation: 我 的 猫 会 爱 上 这 个 。\n", - "\n", - "BOS i heard tom was captured . EOS\n", - "BOS 我 听 说 汤 姆 被 捕 了 。 EOS\n", - "translation: 我 听 说 汤 姆 被 捕 了 。\n", - "\n", - "BOS that was n't my intention . EOS\n", - "BOS 这 不 是 我 的 初 UNK 。 EOS\n", - "translation: 那 不 是 我 的 初 。\n", - "\n", - "BOS i miss her so much . EOS\n", - "BOS 我 那 么 想 念 她 。 EOS\n", - "translation: 我 很 想 念 她 。\n", - "\n", - "BOS he UNK with my opinion . EOS\n", - "BOS 他 同 意 我 的 意 見 。 EOS\n", - "translation: 他 同 意 我 的 意 見 。\n", - "\n", - "BOS this whisky is too strong . EOS\n", - "BOS 这 种 威 士 忌 太 烈 了 。 EOS\n", - "translation: 这 种 威 士 忌 太 烈 了 。\n", - "\n", - "BOS it depends on the context . EOS\n", - "BOS 这 得 看 情 况 。 EOS\n", - "translation: 这 要 看 情 况 。\n", - "\n", - "BOS he studied for ten years . EOS\n", - "BOS 他 研 究 了 十 年 。 EOS\n", - "translation: 他 研 究 了 十 年 。\n", - "\n", - "BOS she died of stomach cancer . EOS\n", - "BOS 她 死 于 胃 癌 。 EOS\n", - "translation: 她 死 于 胃 癌 。\n", - "\n", - "BOS who told you the story ? EOS\n", - "BOS 誰 告 訴 你 這 個 故 事 ? EOS\n", - "translation: 誰 告 訴 你 這 個 故 事 ?\n", - "\n", - "BOS this man is not UNK . EOS\n", - "BOS 这 个 人 靠 不 住 的 。 EOS\n", - "translation: 这 个 男 人 不 是 这 个 男 人 。\n", - "\n", - "BOS he has three older sisters . EOS\n", - "BOS 他 有 三 个 姐 姐 。 EOS\n", - "translation: 他 有 三 个 姐 姐 。\n", - "\n", - "BOS i can come at three . EOS\n", - "BOS 我 三 點 鐘 可 以 來 。 EOS\n", - "translation: 我 三 點 鐘 可 以 來 。\n", - "\n", - "BOS tom is drinking apple juice . EOS\n", - "BOS T o m 正 在 喝 蘋 果 汁 。 EOS\n", - "translation: 湯 姆 正 在 喝 蘋 果 汁 。\n", - "\n", - "BOS his brother studies very hard . EOS\n", - "BOS 他 的 哥 哥 很 用 功 讀 書 。 EOS\n", - "translation: 他 哥 哥 很 用 功 讀 書 。\n", - "\n", - "BOS i really like my UNK . EOS\n", - "BOS 我 确 实 喜 欢 我 的 同 事 。 EOS\n", - "translation: 我 非 常 喜 欢 我 的 狗 。\n", - "\n", - "BOS we knew it all along . EOS\n", - "BOS 我 们 一 开 始 就 知 道 。 EOS\n", - "translation: 我 们 所 知 道 的 一 切 。\n", - "\n", - "BOS that 's an original idea . EOS\n", - "BOS 那 是 原 创 的 想 法 。 EOS\n", - "translation: 那 是 原 创 的 想 法 。\n", - "\n", - "BOS he got off the bus . EOS\n", - "BOS 他 下 了 公 車 。 EOS\n", - "translation: 他 下 了 公 車 。\n", - "\n", - "BOS i 'll reconsider the matter . EOS\n", - "BOS 我 會 重 新 考 慮 此 事 。 EOS\n", - "translation: 我 會 重 考 慮 此 事 。\n", - "\n", - "BOS his book is very interesting . EOS\n", - "BOS 他 的 書 非 常 有 趣 。 EOS\n", - "translation: 他 的 書 非 常 有 趣 。\n", - "\n", - "BOS UNK is carried by mosquitoes . EOS\n", - "BOS UNK 疾 是 由 蚊 子 傳 染 的 。 EOS\n", - "translation: 疾 是 由 蚊 子 傳 染 的 。\n", - "\n", - "BOS bring me a dry towel . EOS\n", - "BOS 給 我 一 條 乾 毛 巾 。 EOS\n", - "translation: 給 我 一 條 乾 毛 巾 。\n", - "\n", - "BOS i would like your picture . EOS\n", - "BOS 我 想 要 你 的 照 片 。 EOS\n", - "translation: 我 要 你 的 照 片 。\n", - "\n", - "BOS it belongs to my brother . EOS\n", - "BOS 它 屬 於 我 兄 弟 。 EOS\n", - "translation: 它 屬 於 我 兄 弟 。\n", - "\n", - "BOS how 's the weather there ? EOS\n", - "BOS 那 里 的 气 候 怎 么 样 ? EOS\n", - "translation: 那 裡 的 天 氣 怎 麼 樣 ?\n", - "\n", - "BOS he has his own room . EOS\n", - "BOS 他 有 自 己 的 房 间 。 EOS\n", - "translation: 他 有 自 己 的 房 间 。\n", - "\n", - "BOS open your eyes , please . EOS\n", - "BOS 请 睁 开 眼 睛 。 EOS\n", - "translation: 請 你 的 眼 睛 。\n", - "\n", - "BOS the risk is too great . EOS\n", - "BOS 风 险 太 大 。 EOS\n", - "translation: 风 险 太 大 。\n", - "\n", - "BOS i 'll miss your cooking . EOS\n", - "BOS 我 會 想 念 你 的 廚 藝 。 EOS\n", - "translation: 我 會 盡 力 地 利 用 你 的 廚 藝 。\n", - "\n", - "BOS can i try this on ? EOS\n", - "BOS 我 能 试 一 下 吗 ? EOS\n", - "translation: 我 可 以 試 試 試 穿 這 個 嗎 ?\n", - "\n", - "BOS people need to stop UNK . EOS\n", - "BOS 人 们 需 要 止 住 仇 恨 。 EOS\n", - "translation: 人 们 需 要 止 住 仇 恨 。\n", - "\n", - "BOS popcorn is my favorite snack . EOS\n", - "BOS 爆 米 花 是 我 最 喜 欢 的 零 食 。 EOS\n", - "translation: 爆 米 花 是 我 最 喜 欢 的 零 食 。\n", - "\n", - "BOS this job does n't pay . EOS\n", - "BOS 这 份 工 作 不 付 钱 的 。 EOS\n", - "translation: 這 份 工 作 不 付 錢 。\n", - "\n", - "BOS he cut the envelope open . EOS\n", - "BOS 他 裁 開 了 那 個 信 封 。 EOS\n", - "translation: 他 裁 開 了 那 個 信 封 。\n", - "\n", - "BOS where are those people from ? EOS\n", - "BOS 那 些 人 从 哪 来 的 ? EOS\n", - "translation: 那 些 人 从 哪 来 的 ?\n", - "\n", - "BOS this makes me so angry . EOS\n", - "BOS 這 讓 我 非 常 憤 怒 。 EOS\n", - "translation: 這 讓 我 很 生 氣 。\n", - "\n", - "BOS do n't pull my leg ! EOS\n", - "BOS 不 要 拉 我 的 腿 ! EOS\n", - "translation: 不 要 拉 我 的 腿 !\n", - "\n", - "BOS i was n't busy yesterday . EOS\n", - "BOS 我 昨 天 不 忙 。 EOS\n", - "translation: 我 昨 天 不 忙 。\n", - "\n", - "BOS people should get more involved . EOS\n", - "BOS 人 们 需 要 更 多 的 交 流 。 EOS\n", - "translation: 人 們 應 該 要 更 多 的 。\n", - "\n", - "BOS tell me which you want . EOS\n", - "BOS 告 訴 我 你 想 要 哪 個 。 EOS\n", - "translation: 告 訴 我 要 哪 個 。\n", - "\n", - "BOS watch my camera for me . EOS\n", - "BOS 幫 我 看 著 我 的 相 機 。 EOS\n", - "translation: 我 的 照 相 机 給 我 。\n", - "\n", - "BOS his UNK are very long . EOS\n", - "BOS 他 的 講 座 很 長 。 EOS\n", - "translation: 他 的 长 相 当 非 常 長 。\n", - "\n", - "BOS you should UNK that fact . EOS\n", - "BOS 你 應 該 重 視 那 個 事 實 。 EOS\n", - "translation: 你 應 該 重 視 那 個 事 實 。\n", - "\n", - "BOS i am engaged to her . EOS\n", - "BOS 我 跟 她 訂 婚 了 。 EOS\n", - "translation: 我 和 她 訂 婚 了 。\n", - "\n", - "BOS i 'm afraid of spiders . EOS\n", - "BOS 我 怕 蜘 蛛 。 EOS\n", - "translation: 我 怕 蜘 蛛 。\n", - "\n", - "BOS he brought back several UNK . EOS\n", - "BOS 他 帶 回 了 一 些 紀 念 品 。 EOS\n", - "translation: 他 帶 回 了 最 大 的 回 答 。\n", - "\n", - "BOS the boy UNK the dark . EOS\n", - "BOS 这 个 男 孩 害 怕 黑 夜 。 EOS\n", - "translation: 這 個 男 孩 在 黑 暗 中 黑 暗 中 。\n", - "\n", - "BOS the company abandoned that project . EOS\n", - "BOS 公 司 放 弃 了 那 个 项 目 。 EOS\n", - "translation: 公 司 放 弃 了 那 个 项 目 。\n", - "\n", - "BOS he may have been ill . EOS\n", - "BOS 他 可 能 病 了 。 EOS\n", - "translation: 他 可 能 病 了 。\n", - "\n", - "BOS she becomes drowsy after dinner . EOS\n", - "BOS 晚 飯 後 她 變 得 昏 昏 欲 睡 。 EOS\n", - "translation: 晚 飯 後 她 變 得 昏 欲 睡 。\n", - "\n", - "BOS she is mad at me . EOS\n", - "BOS 她 跟 我 生 气 了 。 EOS\n", - "translation: 她 跟 我 起 床 。\n", - "\n", - "BOS no pain , no gain . EOS\n", - "BOS 一 分 UNK UNK , 一 分 收 UNK 。 EOS\n", - "translation: 一 分 钟 , 一 分 收 入 。\n", - "\n", - "BOS we must UNK energy demand . EOS\n", - "BOS 我 们 必 须 降 低 能 源 需 求 。 EOS\n", - "translation: 我 们 必 须 降 低 能 源 需 求 。\n", - "\n", - "BOS they made me really angry . EOS\n", - "BOS 他 们 让 我 很 生 气 。 EOS\n", - "translation: 他 們 讓 我 當 生 氣 。\n", - "\n", - "BOS do n't underestimate my power . EOS\n", - "BOS 不 要 小 看 我 的 力 量 。 EOS\n", - "translation: 不 要 低 估 我 的 力 量 。\n", - "\n", - "BOS tom 's coach likes him . EOS\n", - "BOS 汤 姆 的 教 练 喜 欢 他 。 EOS\n", - "translation: 汤 姆 的 教 练 喜 欢 他 。\n", - "\n", - "BOS she was wearing long boots . EOS\n", - "BOS 她 穿 着 长 靴 。 EOS\n", - "translation: 她 穿 着 靴 子 上 的 长 漫 长 。\n", - "\n", - "BOS how much will it cost ? EOS\n", - "BOS 这 要 多 少 钱 ? EOS\n", - "translation: 它 將 花 多 少 錢 ?\n", - "\n", - "BOS the box is almost empty . EOS\n", - "BOS 盒 子 几 乎 是 空 的 。 EOS\n", - "translation: 盒 子 几 乎 是 空 的 。\n", - "\n", - "BOS please UNK the cards carefully . EOS\n", - "BOS 请 仔 细 洗 牌 。 EOS\n", - "translation: 請 仔 细 地 打 牌 。\n", - "\n", - "BOS i do n't like school . EOS\n", - "BOS 我 不 喜 欢 学 校 。 EOS\n", - "translation: 我 不 喜 欢 学 校 。\n", - "\n", - "BOS he married a pretty girl . EOS\n", - "BOS 他 娶 了 一 個 漂 亮 的 女 孩 。 EOS\n", - "translation: 他 娶 了 一 個 漂 亮 的 女 孩 。\n", - "\n", - "BOS that 's my favorite chair . EOS\n", - "BOS 那 是 我 最 喜 歡 的 椅 子 。 EOS\n", - "translation: 那 是 我 最 喜 歡 的 椅 子 。\n", - "\n", - "BOS he fought against racial discrimination . EOS\n", - "BOS 他 反 對 種 族 歧 視 。 EOS\n", - "translation: 他 反 對 種 族 歧 视 。\n", - "\n", - "BOS we went to the UNK . EOS\n", - "BOS 我 们 去 看 了 比 赛 。 EOS\n", - "translation: 我 們 去 了 。\n", - "\n", - "BOS we ordered too much food . EOS\n", - "BOS 我 們 點 太 多 食 物 了 。 EOS\n", - "translation: 我 们 點 太 多 食 物 。\n", - "\n", - "BOS i do n't want you . EOS\n", - "BOS 我 不 想 要 你 。 EOS\n", - "translation: 我 不 想 要 你 。\n", - "\n", - "BOS we really appreciate their effort . EOS\n", - "BOS 我 们 真 的 感 激 他 们 的 努 力 。 EOS\n", - "translation: 我 们 真 的 感 激 他 们 的 努 力 。\n", - "\n", - "BOS i 'm thinking about you . EOS\n", - "BOS 我 突 然 想 到 你 。 EOS\n", - "translation: 我 突 然 想 見 你 。\n", - "\n", - "BOS stay out of my room . EOS\n", - "BOS 别 进 我 的 房 间 。 EOS\n", - "translation: 别 进 我 的 房 间 。\n", - "\n", - "BOS he was listening to music . EOS\n", - "BOS 他 正 在 聽 音 樂 。 EOS\n", - "translation: 他 在 聽 音 樂 。\n", - "\n", - "BOS let me have a look . EOS\n", - "BOS 讓 我 看 看 。 EOS\n", - "translation: 讓 我 看 。\n", - "\n", - "BOS he took off his glasses . EOS\n", - "BOS 他 摘 下 了 眼 鏡 。 EOS\n", - "translation: 他 摘 下 了 眼 鏡 。\n", - "\n", - "BOS tom is very much alone . EOS\n", - "BOS 汤 姆 非 常 孤 单 。 EOS\n", - "translation: 汤 姆 非 常 孤 单 。\n", - "\n", - "BOS tom is a good person . EOS\n", - "BOS 湯 姆 是 個 好 人 。 EOS\n", - "translation: 湯 姆 是 個 好 人 。\n", - "\n", - "BOS it 's already nine o'clock . EOS\n", - "BOS 已 经 9 点 了 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 已 经 9 点 了 。\n", - "\n", - "BOS i 've quit drinking beer . EOS\n", - "BOS 我 已 經 不 喝 啤 酒 了 。 EOS\n", - "translation: 我 戒 酒 了 。\n", - "\n", - "BOS my mother boiled ten eggs . EOS\n", - "BOS 妈 妈 煮 了 十 只 蛋 。 EOS\n", - "translation: 妈 妈 妈 妈 煮 了 十 只 蛋 。\n", - "\n", - "BOS do you know this song ? EOS\n", - "BOS 你 知 道 這 首 歌 嗎 ? EOS\n", - "translation: 你 知 道 這 首 歌 嗎 ?\n", - "\n", - "BOS being rich is n't enough . EOS\n", - "BOS 有 钱 还 不 够 。 EOS\n", - "translation: 有 足 够 的 , 还 不 够 。\n", - "\n", - "BOS please tell me about it . EOS\n", - "BOS 请 告 诉 我 它 的 事 情 。 EOS\n", - "translation: 請 告 訴 我 這 件 事 。\n", - "\n", - "BOS he is fluent in french . EOS\n", - "BOS 他 说 法 语 说 得 很 流 利 。 EOS\n", - "translation: 他 说 法 语 很 流 利 。\n", - "\n", - "BOS that 's what i like . EOS\n", - "BOS 我 就 喜 欢 它 。 EOS\n", - "translation: 那 就 是 我 喜 欢 的 。\n", - "\n", - "BOS he is an UNK person . EOS\n", - "BOS 他 是 个 UNK UNK 逼 人 的 的 人 。 EOS\n", - "translation: 他 是 一 個 人 。\n", - "\n", - "BOS my attitude towards him changed . EOS\n", - "BOS 我 对 他 的 态 度 变 了 。 EOS\n", - "translation: 我 对 他 的 态 度 变 了 。\n", - "\n", - "BOS she 's not a child . EOS\n", - "BOS 她 不 是 小 孩 。 EOS\n", - "translation: 她 不 是 小 孩 子 。\n", - "\n", - "BOS she is everything to him . EOS\n", - "BOS 她 是 他 的 一 切 。 EOS\n", - "translation: 她 是 他 所 有 的 人 都 。\n", - "\n", - "BOS i heard the door close . EOS\n", - "BOS 我 听 到 门 关 了 。 EOS\n", - "translation: 我 听 到 门 关 着 。\n", - "\n", - "BOS the topic is worth discussing . EOS\n", - "BOS 這 是 值 得 探 討 的 話 題 。 EOS\n", - "translation: 這 是 值 得 討 論 的 主 題 。\n", - "\n", - "BOS he has a large family . EOS\n", - "BOS 他 有 一 個 大 家 庭 。 EOS\n", - "translation: 他 有 一 個 大 家 庭 。\n", - "\n", - "BOS my brother became an engineer . EOS\n", - "BOS 我 哥 哥 成 了 一 名 工 程 師 。 EOS\n", - "translation: 我 哥 哥 成 了 一 名 工 程 師 。\n", - "\n", - "BOS who else UNK this room ? EOS\n", - "BOS 还 有 谁 用 这 个 房 间 ? EOS\n", - "translation: 這 個 房 間 是 誰 的 ?\n", - "\n", - "BOS you should have studied harder . EOS\n", - "BOS 你 本 應 該 更 努 力 學 習 的 。 EOS\n", - "translation: 你 應 該 更 努 力 學 習 。\n", - "\n", - "BOS school will start next monday . EOS\n", - "BOS 下 周 一 开 学 。 EOS\n", - "translation: 下 周 一 开 学 。\n", - "\n", - "BOS he took out his passport . EOS\n", - "BOS 他 拿 出 了 他 的 護 照 。 EOS\n", - "translation: 他 帶 著 他 的 護 照 。\n", - "\n", - "BOS she is still a girl . EOS\n", - "BOS 她 还 是 个 小 孩 儿 。 EOS\n", - "translation: 她 还 是 被 女 孩 。\n", - "\n", - "BOS what are you looking at ? EOS\n", - "BOS 你 在 看 什 麼 ? EOS\n", - "translation: 你 在 看 什 麼 ?\n", - "\n", - "BOS life in japan is expensive . EOS\n", - "BOS 在 日 本 生 活 消 费 很 高 。 EOS\n", - "translation: 生 活 中 很 昂 貴 。\n", - "\n", - "BOS you are in my way . EOS\n", - "BOS 你 擋 住 了 我 的 路 。 EOS\n", - "translation: 你 擋 住 了 我 的 路 。\n", - "\n", - "BOS you drink too much coffee . EOS\n", - "BOS 你 咖 啡 喝 得 太 多 了 。 EOS\n", - "translation: 你 喝 太 多 了 咖 啡 。\n", - "\n", - "BOS he is leaving chicago tomorrow . EOS\n", - "BOS 他 明 天 將 離 開 芝 加 哥 。 EOS\n", - "translation: 他 明 天 將 離 開 芝 加 哥 。\n", - "\n", - "BOS why are you busy today ? EOS\n", - "BOS 你 今 天 为 什 么 忙 ? EOS\n", - "translation: 你 今 天 為 什 麼 忙 ?\n", - "\n", - "BOS a UNK taught him spanish . EOS\n", - "BOS 一 個 墨 西 哥 人 教 了 他 西 班 牙 文 。 EOS\n", - "translation: 一 位 他 教 於 西 班 牙 西 西 班 牙 西 班 牙 西 班 牙 西 班 牙 西 班 牙 语 显 了 。\n", - "\n", - "BOS english is useful in commerce . EOS\n", - "BOS 英 語 在 商 業 中 很 有 用 。 EOS\n", - "translation: 英 語 在 商 業 中 很 有 用 。\n", - "\n", - "BOS mary likes milk very much . EOS\n", - "BOS 瑪 麗 很 喜 歡 牛 奶 。 EOS\n", - "translation: 玛 丽 非 常 喜 欢 的 牛 奶 。\n", - "\n", - "BOS do n't stare at others . EOS\n", - "BOS 别 盯 着 别 人 看 。 EOS\n", - "translation: 不 要 看 不 起 別 人 。\n", - "\n", - "BOS we like to play soccer . EOS\n", - "BOS 我 們 喜 歡 踢 足 球 。 EOS\n", - "translation: 我 們 喜 歡 踢 足 球 。\n", - "\n", - "BOS thank you for your attention . EOS\n", - "BOS 谢 谢 您 的 关 注 。 EOS\n", - "translation: 谢 谢 你 的 關 心 。\n", - "\n", - "BOS let him play your guitar . EOS\n", - "BOS 讓 他 彈 你 的 吉 他 。 EOS\n", - "translation: 讓 他 彈 你 的 吉 他 。\n", - "\n", - "BOS she UNK her older brother . EOS\n", - "BOS 她 爱 慕 她 哥 哥 。 EOS\n", - "translation: 她 爱 慕 她 哥 哥 。\n", - "\n", - "BOS that film 's really interesting . EOS\n", - "BOS 那 部 电 影 很 有 意 思 。 EOS\n", - "translation: 那 部 电 影 很 有 意 思 。\n", - "\n", - "BOS my room is very small . EOS\n", - "BOS 我 的 房 間 很 小 。 EOS\n", - "translation: 我 的 房 間 很 小 。\n", - "\n", - "BOS i want to visit korea . EOS\n", - "BOS 我 想 访 问 韩 国 。 EOS\n", - "translation: 我 想 访 问 韩 国 。\n", - "\n", - "BOS i met an old woman . EOS\n", - "BOS 我 遇 见 了 一 位 老 妇 人 。 EOS\n", - "translation: 我 遇 见 一 个 老 妇 人 。\n", - "\n", - "BOS i 'm good at skiing . EOS\n", - "BOS 我 擅 長 滑 雪 。 EOS\n", - "translation: 我 在 冬 天 很 好 看 。\n", - "\n", - "BOS we should call the doctor . EOS\n", - "BOS 我 們 應 該 去 請 醫 生 。 EOS\n", - "translation: 我 們 應 該 去 請 醫 生 來 。\n", - "\n", - "BOS tom played with his dog . EOS\n", - "BOS 汤 姆 和 他 的 狗 玩 。 EOS\n", - "translation: 湯 姆 和 他 的 狗 玩 。\n", - "\n", - "BOS say it in another way . EOS\n", - "BOS 换 种 方 式 说 。 EOS\n", - "translation: 在 外 面 說 話 再 說 。\n", - "\n", - "BOS i just need a break . EOS\n", - "BOS 我 只 想 休 息 一 下 EOS\n", - "translation: 我 只 是 需 要 休 息 一 下\n", - "\n", - "BOS it 's okay to go . EOS\n", - "BOS 你 可 以 走 了 。 EOS\n", - "translation: 你 可 以 繼 續 地 走 。\n", - "\n", - "BOS should i cancel the call ? EOS\n", - "BOS 我 该 取 消 通 话 吗 ? EOS\n", - "translation: 我 该 取 消 通 话 吗 ?\n", - "\n", - "BOS i am not a student . EOS\n", - "BOS 我 不 是 學 生 。 EOS\n", - "translation: 我 不 是 學 生 。\n", - "\n", - "BOS i 'll join you later . EOS\n", - "BOS 我 一 會 兒 就 來 。 EOS\n", - "translation: 我 晚 会 加 入 你 。\n", - "\n", - "BOS tom never turned up again . EOS\n", - "BOS 湯 姆 沒 有 再 出 現 。 EOS\n", - "translation: 汤 姆 从 来 不 再 开 始 。\n", - "\n", - "BOS be careful not to fall . EOS\n", - "BOS 小 心 别 摔 倒 了 。 EOS\n", - "translation: 小 心 别 摔 倒 了 。\n", - "\n", - "BOS does she have a piano ? EOS\n", - "BOS 她 有 鋼 琴 嗎 ? EOS\n", - "translation: 她 有 鋼 琴 嗎 彈 嗎 ?\n", - "\n", - "BOS i ate breakfast at eight . EOS\n", - "BOS 我 八 點 鐘 吃 了 早 餐 。 EOS\n", - "translation: 我 八 點 鐘 吃 了 早 餐 。\n", - "\n", - "BOS i love UNK fruit juice . EOS\n", - "BOS 我 愛 百 香 果 汁 。 EOS\n", - "translation: 我 愛 蘋 果 汁 。\n", - "\n", - "BOS he has a big family . EOS\n", - "BOS 他 有 个 大 家 庭 。 EOS\n", - "translation: 他 有 一 個 大 家 庭 。\n", - "\n", - "BOS today is my UNK birthday . EOS\n", - "BOS 今 天 是 我 十 六 歲 的 生 日 。 EOS\n", - "translation: 今 天 是 我 生 日 。\n", - "\n", - "BOS tom hid under the table . EOS\n", - "BOS T o m 躲 在 桌 子 底 下 。 EOS\n", - "translation: T o m 躲 在 桌 子 底 下 。\n", - "\n", - "BOS mathematics is difficult for me . EOS\n", - "BOS 數 學 對 我 來 說 很 難 。 EOS\n", - "translation: 數 學 對 我 來 說 是 很 難 對 我 。\n", - "\n", - "BOS i met your father yesterday . EOS\n", - "BOS 昨 天 我 見 到 了 你 父 親 。 EOS\n", - "translation: 昨 天 我 見 到 了 你 父 親 。\n", - "\n", - "BOS you should have come earlier . EOS\n", - "BOS 你 本 应 该 来 得 更 早 的 。 EOS\n", - "translation: 你 應 該 要 早 點 來 。\n", - "\n", - "BOS how much did you UNK ? EOS\n", - "BOS 你 出 价 多 少 ? EOS\n", - "translation: 你 有 多 少 錢 ?\n", - "\n", - "BOS mary is pregnant with twins . EOS\n", - "BOS 玛 丽 怀 了 双 胞 胎 。 EOS\n", - "translation: 玛 丽 怀 了 双 胞 胎 。\n", - "\n", - "BOS give me something to eat . EOS\n", - "BOS 給 我 點 東 西 吃 。 EOS\n", - "translation: 給 我 東 西 吃 。\n", - "\n", - "BOS now it 's your serve . EOS\n", - "BOS 現 在 該 你 發 球 。 EOS\n", - "translation: 現 在 該 你 這 個 計 劃 了 。\n", - "\n", - "BOS she is a quiet woman . EOS\n", - "BOS 她 是 一 個 安 靜 的 女 人 。 EOS\n", - "translation: 她 是 個 安 靜 的 女 人 。\n", - "\n", - "BOS i 'm feeling blue today . EOS\n", - "BOS 我 今 天 的 心 情 不 好 。 EOS\n", - "translation: 我 今 天 感 覺 好 像 是 的 事 情 。\n", - "\n", - "BOS london was UNK several times . EOS\n", - "BOS 倫 敦 被 UNK 炸 過 許 多 次 。 EOS\n", - "translation: 倫 敦 被 許 多 次 三 次 。\n", - "\n", - "BOS i think it 's ok . EOS\n", - "BOS 我 想 沒 關 係 。 EOS\n", - "translation: 我 想 沒 關 係 。\n", - "\n", - "BOS you should n't wait here . EOS\n", - "BOS 你 不 應 該 在 這 裡 等 。 EOS\n", - "translation: 你 不 應 該 在 這 裡 等 。\n", - "\n", - "BOS you do n't deserve it . EOS\n", - "BOS 你 不 配 。 EOS\n", - "translation: 你 不 配 。\n", - "\n", - "BOS call me at the office . EOS\n", - "BOS 打 電 話 到 我 辦 公 室 來 。 EOS\n", - "translation: 联 系 我 在 办 公 室 。\n", - "\n", - "BOS i ate a UNK lunch . EOS\n", - "BOS 我 匆 忙 的 吃 了 午 餐 。 EOS\n", - "translation: 我 吃 了 午 飯 。\n", - "\n", - "BOS she ignored all my warnings . EOS\n", - "BOS 她 忽 視 了 我 所 有 的 警 告 。 EOS\n", - "translation: 她 忽 視 了 我 所 有 的 警 告 。\n", - "\n", - "BOS i 've already tried that . EOS\n", - "BOS 我 已 经 试 过 那 个 了 。 EOS\n", - "translation: 我 已 經 試 過 了 。\n", - "\n", - "BOS he bought her a sweater . EOS\n", - "BOS 他 買 了 一 件 毛 衣 給 她 。 EOS\n", - "translation: 他 買 了 一 件 毛 衣 給 她 。\n", - "\n", - "BOS i missed the last train . EOS\n", - "BOS 我 錯 過 了 最 後 一 班 火 車 。 EOS\n", - "translation: 我 錯 過 了 最 後 一 班 火 車 。\n", - "\n", - "BOS do n't begin without me . EOS\n", - "BOS 我 不 在 就 别 开 始 。 EOS\n", - "translation: 不 要 開 始 打 開 我 。\n", - "\n", - "BOS the end UNK the means . EOS\n", - "BOS 為 了 正 當 目 的 可 以 不 擇 手 段 。 EOS\n", - "translation: 结 婚 了 自 己 的 便 是 正 友 善 。\n", - "\n", - "BOS he is full of energy . EOS\n", - "BOS 他 充 满 活 力 。 EOS\n", - "translation: 他 充 满 活 力 。\n", - "\n", - "BOS it grew larger and larger . EOS\n", - "BOS 它 变 得 越 来 越 大 。 EOS\n", - "translation: 它 变 得 越 來 越 來 越 大 。\n", - "\n", - "BOS kyoto and boston are sister cities . EOS\n", - "BOS 京 都 和 波 士 顿 是 姐 妹 城 市 。 EOS\n", - "translation: 京 都 和 波 士 顿 是 姐 妹 城 市 。\n", - "\n", - "BOS i passed by her house yesterday . EOS\n", - "BOS 我 昨 天 經 過 她 家 。 EOS\n", - "translation: 昨 天 我 通 過 她 家 。\n", - "\n", - "BOS more than twenty boys went there . EOS\n", - "BOS 超 過 二 十 個 男 孩 去 了 那 裡 。 EOS\n", - "translation: 超 過 二 十 個 男 孩 來 了 。\n", - "\n", - "BOS how long did you live there ? EOS\n", - "BOS 你 住 在 那 裡 多 久 了 ? EOS\n", - "translation: 你 住 在 那 裡 多 久 了 ?\n", - "\n", - "BOS i do n't like her face . EOS\n", - "BOS 我 不 喜 歡 她 的 臉 。 EOS\n", - "translation: 我 不 喜 歡 她 的 臉 。\n", - "\n", - "BOS she plays the piano very well . EOS\n", - "BOS 她 鋼 琴 彈 得 很 好 。 EOS\n", - "translation: 她 鋼 琴 彈 得 很 好 。\n", - "\n", - "BOS would you lend me some money ? EOS\n", - "BOS 你 可 以 借 我 一 些 錢 嗎 ? EOS\n", - "translation: 你 可 以 借 我 一 些 錢 嗎 ?\n", - "\n", - "BOS please serve him his meal first . EOS\n", - "BOS 請 先 為 他 上 菜 。 EOS\n", - "translation: 請 先 派 對 他 到 他 的 吃 飯 。\n", - "\n", - "BOS it 's too late to apologize . EOS\n", - "BOS 现 在 道 歉 也 迟 了 。 EOS\n", - "translation: 它 對 待 不 起 來 。\n", - "\n", - "BOS have you been to london before ? EOS\n", - "BOS 你 以 前 去 過 倫 敦 嗎 ? EOS\n", - "translation: 你 曾 在 倫 敦 嗎 ?\n", - "\n", - "BOS he does n't speak our language . EOS\n", - "BOS 他 不 會 說 我 們 的 語 言 。 EOS\n", - "translation: 他 不 會 說 我 們 的 語 言 。\n", - "\n", - "BOS turn right at the next corner . EOS\n", - "BOS 在 下 一 個 轉 角 右 轉 。 EOS\n", - "translation: 在 下 一 個 轉 角 右 轉 。\n", - "\n", - "BOS she works as a UNK UNK . EOS\n", - "BOS 她 是 按 摩 师 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 她 和 一 起 工 作 。\n", - "\n", - "BOS we expect a lot from him . EOS\n", - "BOS 我 們 對 他 期 望 很 多 。 EOS\n", - "translation: 我 們 對 他 期 望 很 熟 。\n", - "\n", - "BOS she greeted me with a smile . EOS\n", - "BOS 她 用 一 个 微 笑 迎 接 了 我 。 EOS\n", - "translation: 她 面 帶 微 笑 向 我 打 招 呼 。\n", - "\n", - "BOS do n't make fun of people . EOS\n", - "BOS 不 要 取 笑 人 。 EOS\n", - "translation: 不 要 取 笑 人 。\n", - "\n", - "BOS what 's your favorite UNK food ? EOS\n", - "BOS 你 最 喜 歡 的 家 常 菜 是 什 麼 ? EOS\n", - "translation: 你 最 喜 歡 哪 一 隊 的 食 物 ?\n", - "\n", - "BOS his life after UNK was unhappy . EOS\n", - "BOS 他 退 休 後 的 生 活 不 快 樂 。 EOS\n", - "translation: 他 的 生 活 很 快 樂 。\n", - "\n", - "BOS the plane made a perfect landing . EOS\n", - "BOS 這 架 飛 機 完 美 的 著 陸 了 。 EOS\n", - "translation: 這 架 飛 機 完 美 的 著 陸 了 。\n", - "\n", - "BOS it all depends on the weather . EOS\n", - "BOS 一 切 都 取 決 於 天 氣 。 EOS\n", - "translation: 這 是 所 有 的 天 氣 情 況 。\n", - "\n", - "BOS my heart was filled with happiness . EOS\n", - "BOS 我 心 里 充 满 着 快 乐 。 EOS\n", - "translation: 我 的 心 情 和 野 微 笑 。\n", - "\n", - "BOS she laid the work on him . EOS\n", - "BOS 她 派 他 去 工 作 了 。 EOS\n", - "translation: 她 派 他 去 工 作 。\n", - "\n", - "BOS they were listening to the radio . EOS\n", - "BOS 他 們 在 聽 收 音 機 。 EOS\n", - "translation: 他 們 在 聽 收 音 機 。\n", - "\n", - "BOS six divided by two is three . EOS\n", - "BOS 六 除 以 二 得 三 。 EOS\n", - "translation: 六 除 以 二 得 三 。\n", - "\n", - "BOS why did you show me this ? EOS\n", - "BOS 你 为 什 么 让 我 看 这 个 ? EOS\n", - "translation: 你 为 什 么 让 我 看 你 ?\n", - "\n", - "BOS it 's as cold as ice . EOS\n", - "BOS 它 冷 得 像 冰 一 樣 。 EOS\n", - "translation: 那 是 冷 的 冰 塊 。\n", - "\n", - "BOS his house is somewhere about here . EOS\n", - "BOS 他 家 在 这 儿 某 处 。 EOS\n", - "translation: 他 家 在 这 里 某 处 。\n", - "\n", - "BOS do you have any smaller UNK ? EOS\n", - "BOS 你 有 任 何 比 較 小 的 尺 寸 嗎 ? EOS\n", - "translation: 你 有 任 何 比 較 小 的 尺 寸 嗎 ?\n", - "\n", - "BOS a burglar broke into his house . EOS\n", - "BOS 一 個 竊 賊 闖 進 了 他 的 房 子 。 EOS\n", - "translation: 一 個 竊 賊 闖 進 了 他 的 房 子 。\n", - "\n", - "BOS my sister became a college student . EOS\n", - "BOS 我 妹 妹 成 為 了 一 個 大 學 生 。 EOS\n", - "translation: 我 妹 妹 成 為 了 一 個 學 生 。\n", - "\n", - "BOS you should know that 's impossible . EOS\n", - "BOS 你 应 该 知 道 这 是 不 可 能 的 。 EOS\n", - "translation: 你 應 該 知 道 這 可 能 的 。\n", - "\n", - "BOS i forgot it in the garage . EOS\n", - "BOS 我 把 它 忘 在 车 库 里 了 。 EOS\n", - "translation: 我 把 它 忘 在 車 库 里 了 。\n", - "\n", - "BOS i have already finished the job . EOS\n", - "BOS 我 已 經 完 成 了 這 項 工 作 。 EOS\n", - "translation: 我 已 經 完 成 了 這 份 工 作 。\n", - "\n", - "BOS do you have something to say ? EOS\n", - "BOS 您 有 什 么 事 要 说 吗 ? EOS\n", - "translation: 你 有 東 西 說 嗎 ?\n", - "\n", - "BOS i do n't want any excuses . EOS\n", - "BOS 我 不 想 听 解 释 。 EOS\n", - "translation: 我 不 想 收 取 賄 賂 。\n", - "\n", - "BOS let 's take a ten-minute break . EOS\n", - "BOS 讓 我 們 休 息 1 0 分 鐘 。 EOS\n", - "translation: 讓 我 們 休 息 一 會 兒 。\n", - "\n", - "BOS so you give up , right ? EOS\n", - "BOS 所 以 你 放 弃 了 , 是 吗 ? EOS\n", - "translation: 你 可 以 放 弃 了 , 对 此 吗 ?\n", - "\n", - "BOS i hear they 're pretty good . EOS\n", - "BOS 我 听 说 他 们 挺 好 。 EOS\n", - "translation: 他 们 听 起 来 很 好 。\n", - "\n", - "BOS do n't walk alone after dark . EOS\n", - "BOS 不 要 一 個 人 在 黑 暗 中 走 。 EOS\n", - "translation: 不 要 一 個 人 在 黑 暗 中 走 。\n", - "\n", - "BOS he ate all of the apple . EOS\n", - "BOS 他 吃 了 所 有 的 蘋 果 。 EOS\n", - "translation: 他 吃 了 所 有 的 蘋 果 。\n", - "\n", - "BOS i 'm planning to study tonight . EOS\n", - "BOS 我 打 算 今 天 晚 上 讀 書 。 EOS\n", - "translation: 我 打 算 今 晚 上 讀 書 。\n", - "\n", - "BOS there was UNK any money left . EOS\n", - "BOS 几 乎 没 剩 下 钱 。 EOS\n", - "translation: 交 车 停 了 钱 。\n", - "\n", - "BOS he has been to many places . EOS\n", - "BOS 他 去 过 很 多 地 方 。 EOS\n", - "translation: 他 去 過 歐 洲 。\n", - "\n", - "BOS nobody had ever heard of it . EOS\n", - "BOS 以 前 從 來 沒 有 人 聽 說 過 。 EOS\n", - "translation: 没 有 人 听 到 它 说 过 。\n", - "\n", - "BOS is there a doctor on board ? EOS\n", - "BOS 船 上 有 醫 生 嗎 ? EOS\n", - "translation: 船 上 有 醫 生 嗎 ?\n", - "\n", - "BOS there is no place like home . EOS\n", - "BOS 金 窩 銀 窩 不 如 自 己 的 狗 窩 。 EOS\n", - "translation: 沒 有 家 喜 歡 獨 家 。\n", - "\n", - "BOS we enjoyed listening to the music . EOS\n", - "BOS 我 們 喜 歡 聽 音 樂 。 EOS\n", - "translation: 我 們 喜 歡 聽 音 樂 。\n", - "\n", - "BOS she was buried in her hometown . EOS\n", - "BOS 她 被 安 葬 在 她 的 家 鄉 。 EOS\n", - "translation: 她 被 安 葬 在 她 的 家 鄉 。\n", - "\n", - "BOS he is a student at harvard . EOS\n", - "BOS 他 是 一 個 哈 佛 的 學 生 。 EOS\n", - "translation: 他 是 一 個 哈 佛 的 學 生 。\n", - "\n", - "BOS this is a present for you . EOS\n", - "BOS 這 是 給 你 的 禮 物 。 EOS\n", - "translation: 这 是 你 见 的 。\n", - "\n", - "BOS what language is spoken in egypt ? EOS\n", - "BOS 在 埃 及 说 什 么 语 言 ? EOS\n", - "translation: 在 埃 及 说 什 么 语 言 ?\n", - "\n", - "BOS she will be seventeen next year . EOS\n", - "BOS 她 明 年 將 滿 十 七 歲 。 EOS\n", - "translation: 她 明 年 將 滿 十 七 歲 。\n", - "\n", - "BOS you do n't understand the UNK . EOS\n", - "BOS 你 不 明 白 程 序 。 EOS\n", - "translation: 你 不 懂 這 個 意 思 。\n", - "\n", - "BOS she gets good UNK in english . EOS\n", - "BOS 她 取 得 了 優 異 的 英 語 成 績 。 EOS\n", - "translation: 她 用 英 語 成 為 了 好 的 成 績 。\n", - "\n", - "BOS she UNK him with the work . EOS\n", - "BOS 她 強 迫 他 做 這 個 工 作 。 EOS\n", - "translation: 她 把 他 工 作 留 在 工 作 。\n", - "\n", - "BOS how about going to the movies ? EOS\n", - "BOS 去 看 電 影 怎 樣 ? EOS\n", - "translation: 今 晚 要 的 電 影 怎 樣 ?\n", - "\n", - "BOS i 'll miss you so much . EOS\n", - "BOS 我 會 非 常 想 念 你 。 EOS\n", - "translation: 我 會 非 常 想 念 你 。\n", - "\n", - "BOS get up early in the morning . EOS\n", - "BOS 早 上 要 早 起 。 EOS\n", - "translation: 早 上 要 早 起 。\n", - "\n", - "BOS he speaks both english and french . EOS\n", - "BOS 他 會 講 英 語 和 法 語 。 EOS\n", - "translation: 他 會 講 英 語 和 法 語 。\n", - "\n", - "BOS i asked each boy three questions . EOS\n", - "BOS 我 問 了 每 個 男 孩 三 個 問 題 。 EOS\n", - "translation: 我 問 了 每 個 男 孩 三 個 問 題 。\n", - "\n", - "BOS what do you want it for ? EOS\n", - "BOS 你 要 它 干 什 么 ? EOS\n", - "translation: 你 想 做 什 麼 ?\n", - "\n", - "BOS i just want you to come . EOS\n", - "BOS 我 只 是 想 要 你 来 。 EOS\n", - "translation: 我 只 是 想 要 你 。\n", - "\n", - "BOS he decided to become a pilot . EOS\n", - "BOS 他 決 定 成 為 一 名 飛 行 員 。 EOS\n", - "translation: 他 決 定 成 為 一 名 飛 行 員 。\n", - "\n", - "BOS she can speak english very well . EOS\n", - "BOS 她 的 英 語 說 的 很 好 。 EOS\n", - "translation: 她 會 講 英 語 很 好 。\n", - "\n", - "BOS you have a way with women . EOS\n", - "BOS 你 对 女 人 有 一 套 。 EOS\n", - "translation: 你 有 一 個 女 人 同 一 向 女 兒 。\n", - "\n", - "BOS could you show me this bag ? EOS\n", - "BOS 你 能 給 我 看 看 這 個 包 嗎 ? EOS\n", - "translation: 你 可 以 幫 我 看 我 這 個 袋 子 嗎 ?\n", - "\n", - "BOS it 's none of your concern . EOS\n", - "BOS 这 不 关 你 的 事 。 EOS\n", - "translation: 這 不 關 你 的 事 。\n", - "\n", - "BOS would you carry my luggage upstairs ? EOS\n", - "BOS 你 可 以 把 我 的 行 李 拿 到 樓 上 嗎 ? EOS\n", - "translation: 你 可 以 把 我 的 行 李 拿 到 樓 上 嗎 ?\n", - "\n", - "BOS this homework is difficult for me . EOS\n", - "BOS 這 個 家 庭 作 業 對 我 來 說 很 困 難 。 EOS\n", - "translation: 这 是 我 份 难 的 作 家 。\n", - "\n", - "BOS are you a high school student ? EOS\n", - "BOS 你 是 高 中 生 嗎 ? EOS\n", - "translation: 你 是 個 高 中 生 嗎 ?\n", - "\n", - "BOS i had an accident at work . EOS\n", - "BOS 我 出 了 工 伤 。 EOS\n", - "translation: 我 在 工 作 中 有 一 個 意 外 。\n", - "\n", - "BOS i also heard a similar story . EOS\n", - "BOS 我 也 听 过 一 个 类 似 的 故 事 。 EOS\n", - "translation: 我 也 听 过 一 个 类 似 的 故 事 。\n", - "\n", - "BOS i do n't understand any french . EOS\n", - "BOS 我 一 点 法 语 都 不 懂 。 EOS\n", - "translation: 我 不 懂 法 語 。\n", - "\n", - "BOS i am going to play tennis . EOS\n", - "BOS 我 要 去 打 網 球 。 EOS\n", - "translation: 我 打 網 球 。\n", - "\n", - "BOS she loves tom , not me . EOS\n", - "BOS 她 爱 汤 姆 , 而 不 是 我 。 EOS\n", - "translation: 她 愛 湯 姆 , 我 不 愛 。\n", - "\n", - "BOS it was just as i thought . EOS\n", - "BOS 这 正 如 我 想 的 一 样 。 EOS\n", - "translation: 这 是 我 想 的 一 个 。\n", - "\n", - "BOS my uncle lives in an apartment . EOS\n", - "BOS 我 叔 叔 住 在 公 寓 裡 。 EOS\n", - "translation: 我 叔 住 在 公 寓 裡 。\n", - "\n", - "BOS are there any UNK for me ? EOS\n", - "BOS 有 任 何 給 我 的 訊 息 嗎 ? EOS\n", - "translation: 我 有 任 何 的 訊 息 嗎 ?\n", - "\n", - "BOS he is driving at top speed . EOS\n", - "BOS 他 全 速 驾 驶 着 。 EOS\n", - "translation: 他 全 速 驾 驶 着 。\n", - "\n", - "BOS the history class starts at nine . EOS\n", - "BOS 历 史 课 九 点 开 始 。 EOS\n", - "translation: 历 史 课 九 点 开 始 。\n", - "\n", - "BOS you did n't need to hurry . EOS\n", - "BOS 你 不 需 要 著 急 。 EOS\n", - "translation: 你 不 必 著 急 。\n", - "\n", - "BOS she went to shanghai by train . EOS\n", - "BOS 她 是 坐 火 車 去 上 海 的 。 EOS\n", - "translation: 她 是 北 海 道 的 一 班 火 車 。\n", - "\n", - "BOS your bicycle is similar to mine . EOS\n", - "BOS 你 的 腳 踏 車 和 我 的 很 相 似 。 EOS\n", - "translation: 你 的 腳 踏 車 和 我 的 很 相 似 。\n", - "\n", - "BOS these flowers you see are roses . EOS\n", - "BOS 你 看 到 的 這 些 花 是 玫 瑰 。 EOS\n", - "translation: 你 看 到 的 那 些 花 是 玫 瑰 。\n", - "\n", - "BOS i will explain it to her . EOS\n", - "BOS 我 会 跟 她 解 释 的 。 EOS\n", - "translation: 我 会 向 她 解 释 的 。\n", - "\n", - "BOS we want you to marry tom . EOS\n", - "BOS 我 们 希 望 你 和 汤 姆 能 结 婚 。 EOS\n", - "translation: 我 们 希 望 你 和 汤 姆 结 婚 。\n", - "\n", - "BOS let 's call the dog UNK . EOS\n", - "BOS 讓 我 們 叫 這 隻 狗 S k i UNK UNK e r 。 EOS\n", - "translation: 讓 我 們 打 開 這 隻 狗 。\n", - "\n", - "BOS we still do n't know why . EOS\n", - "BOS 我 們 仍 然 不 知 道 為 什 麼 。 EOS\n", - "translation: 我 们 还 不 知 道 为 什 么 。\n", - "\n", - "BOS i want you to grow up . EOS\n", - "BOS 我 希 望 你 能 长 大 。 EOS\n", - "translation: 我 希 望 你 長 大 。\n", - "\n", - "BOS what are you UNK them for ? EOS\n", - "BOS 您 为 什 么 UNK UNK 他 们 ? EOS\n", - "translation: 你 為 什 麼 懲 罰 他 們 ?\n", - "\n", - "BOS tom has known mary since UNK . EOS\n", - "BOS 汤 姆 从 小 就 认 识 玛 丽 了 。 EOS\n", - "translation: 汤 姆 从 小 就 认 识 玛 丽 了 。\n", - "\n", - "BOS there was an earthquake this morning . EOS\n", - "BOS 今 天 早 上 發 生 了 地 震 。 EOS\n", - "translation: 今 天 早 上 發 生 了 地 震 。\n", - "\n", - "BOS it is ten minutes before eleven . EOS\n", - "BOS 還 有 十 分 鐘 就 十 一 點 。 EOS\n", - "translation: 十 分 鐘 之 前 完 成 。\n", - "\n", - "BOS i spent my vacation in hakone . EOS\n", - "BOS 我 在 箱 根 渡 假 。 EOS\n", - "translation: 我 在 箱 根 渡 假 。\n", - "\n", - "BOS she was hit by a car . EOS\n", - "BOS 她 被 車 撞 了 。 EOS\n", - "translation: 她 被 車 撞 到 了 。\n", - "\n", - "BOS she is not afraid of anything . EOS\n", - "BOS 她 不 害 怕 任 何 東 西 。 EOS\n", - "translation: 她 什 麼 都 不 怕 。\n", - "\n", - "BOS we traveled to mexico by plane . EOS\n", - "BOS 我 們 搭 飛 機 去 墨 西 哥 旅 行 。 EOS\n", - "translation: 我 們 坐 在 這 家 的 玻 璃 杯 。\n", - "\n", - "BOS i will wait until she comes . EOS\n", - "BOS 我 会 等 到 她 来 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 會 等 她 來 。\n", - "\n", - "BOS he is playing in his room . EOS\n", - "BOS 他 在 自 己 房 里 玩 。 EOS\n", - "translation: 他 在 自 己 的 房 間 裡 玩 。\n", - "\n", - "BOS he is often absent from school . EOS\n", - "BOS 他 经 常 UNK 课 。 EOS\n", - "translation: 他 常 常 在 學 校 。\n", - "\n", - "BOS i 'll attend the next meeting . EOS\n", - "BOS 我 会 参 加 下 次 的 会 议 。 EOS\n", - "translation: 我 會 參 加 下 次 會 議 。\n", - "\n", - "BOS visitors to switzerland admire the UNK . EOS\n", - "BOS 遊 客 到 瑞 士 欣 賞 阿 爾 UNK 斯 山 。 EOS\n", - "translation: 遊 客 到 瑞 士 欣 賞 阿 爾 斯 山 。\n", - "\n", - "BOS what do you want for breakfast ? EOS\n", - "BOS 你 早 餐 想 要 吃 什 麼 ? EOS\n", - "translation: 你 早 餐 想 要 什 麼 ?\n", - "\n", - "BOS you might have heard of it . EOS\n", - "BOS 你 可 能 听 说 过 。 EOS\n", - "translation: 你 可 能 听 说 到 它 。\n", - "\n", - "BOS it UNK with a loud noise . EOS\n", - "BOS 它 發 出 巨 響 爆 炸 了 。 EOS\n", - "translation: 用 噪 聲 地 微 笑 了 。\n", - "\n", - "BOS i was a little bit nervous . EOS\n", - "BOS 我 有 点 紧 张 。 EOS\n", - "translation: 我 有 點 兒 子 。\n", - "\n", - "BOS please come as soon as possible . EOS\n", - "BOS 请 尽 快 过 来 。 EOS\n", - "translation: 請 盡 快 來 。\n", - "\n", - "BOS mary is studying in her room . EOS\n", - "BOS 瑪 麗 在 她 的 房 間 裡 讀 書 。 EOS\n", - "translation: 玛 丽 在 她 的 房 間 裡 讀 書 。\n", - "\n", - "BOS the tigers escaped from the zoo . EOS\n", - "BOS 老 虎 從 動 物 園 中 逃 出 來 了 。 EOS\n", - "translation: 老 虎 從 動 物 園 中 逃 出 來 了 。\n", - "\n", - "BOS stop talking and listen to me . EOS\n", - "BOS 別 說 話 , 聽 我 說 。 EOS\n", - "translation: 不 要 说 我 听 。\n", - "\n", - "BOS tom filled out the application form . EOS\n", - "BOS 湯 姆 填 寫 了 申 請 表 。 EOS\n", - "translation: 汤 姆 在 麦 克 力 地 工 作 。\n", - "\n", - "BOS they made us work all day . EOS\n", - "BOS 他 們 讓 我 們 工 作 了 一 整 天 。 EOS\n", - "translation: 他 們 讓 我 們 工 作 了 一 整 天 。\n", - "\n", - "BOS please let me take your picture . EOS\n", - "BOS 請 讓 我 為 你 拍 照 。 EOS\n", - "translation: 請 讓 我 照 顧 你 的 照 片 。\n", - "\n", - "BOS they grow strawberries in their greenhouse . EOS\n", - "BOS 他 們 在 他 們 的 溫 室 裡 種 植 草 莓 。 EOS\n", - "translation: 他 們 在 他 們 的 溫 室 裡 種 植 草 莓 。\n", - "\n", - "BOS i ca n't thank you enough . EOS\n", - "BOS 我 無 法 表 達 我 對 你 的 感 謝 。 EOS\n", - "translation: 我 無 法 讓 你 我 無 法 理 。\n", - "\n", - "BOS wait here till i come back . EOS\n", - "BOS 在 這 兒 等 著 , 直 到 我 回 來 。 EOS\n", - "translation: 在 这 儿 等 到 我 回 来 。\n", - "\n", - "BOS she made cookies for the children . EOS\n", - "BOS 她 给 孩 子 们 做 了 曲 奇 。 EOS\n", - "translation: 她 為 孩 子 們 做 了 餅 乾 。\n", - "\n", - "BOS i ran a race with him . EOS\n", - "BOS 我 和 他 比 賽 跑 步 。 EOS\n", - "translation: 我 和 他 比 賽 跑 步 。\n", - "\n", - "BOS tom is the one i saw . EOS\n", - "BOS 我 看 见 的 是 汤 姆 。 EOS\n", - "translation: 我 看 见 汤 姆 是 一 个 人 。\n", - "\n", - "BOS we all felt sorry for tom . EOS\n", - "BOS 我 們 都 為 T o m 感 到 遺 憾 。 EOS\n", - "translation: 我 们 全 感 觉 汤 姆 感 觉 轻 。\n", - "\n", - "BOS someone locked me in the room . EOS\n", - "BOS 有 人 把 我 鎖 在 這 房 間 裡 。 EOS\n", - "translation: 有 人 在 房 間 裡 鎖 上 了 我 。\n", - "\n", - "BOS are you free on friday afternoon ? EOS\n", - "BOS 你 星 期 五 下 午 有 空 嗎 ? EOS\n", - "translation: 你 今 天 下 午 有 空 嗎 ?\n", - "\n", - "BOS which road goes to city hall ? EOS\n", - "BOS 哪 條 路 通 往 市 政 廳 ? EOS\n", - "translation: 哪 條 路 通 往 市 政 廳 ?\n", - "\n", - "BOS tom certainly is good at baseball . EOS\n", - "BOS 汤 姆 打 棒 球 打 的 非 常 好 。 EOS\n", - "translation: 湯 姆 當 小 時 當 棒 球 。\n", - "\n", - "BOS i borrowed money from my father . EOS\n", - "BOS 我 向 我 父 親 借 錢 。 EOS\n", - "translation: 我 向 我 父 親 借 錢 。\n", - "\n", - "BOS do n't talk in the classroom . EOS\n", - "BOS 別 在 教 室 裡 說 話 。 EOS\n", - "translation: 不 要 把 教 室 里 加 边 。\n", - "\n", - "BOS our baseball team is very strong . EOS\n", - "BOS 我 們 的 棒 球 隊 很 強 。 EOS\n", - "translation: 我 們 的 棒 球 隊 很 強 。\n", - "\n", - "BOS UNK , you 'll never know . EOS\n", - "BOS 不 管 怎 樣 , 你 永 遠 不 會 知 道 。 EOS\n", - "translation: 不 管 怎 麼 知 道 , 你 永 遠 不 會 知 道 。\n", - "\n", - "BOS let 's meet here again tomorrow . EOS\n", - "BOS 讓 我 們 明 天 再 在 這 裡 見 面 吧 。 EOS\n", - "translation: 讓 我 們 明 天 再 在 這 裡 見 面 吧 。\n", - "\n", - "BOS i was very tired last night . EOS\n", - "BOS 我 昨 晚 很 累 了 。 EOS\n", - "translation: 我 昨 晚 很 累 。\n", - "\n", - "BOS how many people can do that ? EOS\n", - "BOS 有 多 少 人 能 做 ? EOS\n", - "translation: 有 多 少 人 能 做 ?\n", - "\n", - "BOS he did not eat anything yesterday . EOS\n", - "BOS 他 昨 天 沒 有 吃 任 何 東 西 。 EOS\n", - "translation: 他 昨 天 沒 有 吃 任 何 東 西 。\n", - "\n", - "BOS i explained the UNK to him . EOS\n", - "BOS 我 向 他 解 釋 了 這 個 過 程 。 EOS\n", - "translation: 我 向 他 解 釋 了 這 個 。\n", - "\n", - "BOS let 's begin with this problem . EOS\n", - "BOS 从 这 个 问 题 开 始 吧 。 EOS\n", - "translation: 让 我 们 开 始 吧 。\n", - "\n", - "BOS this dictionary is my sister 's . EOS\n", - "BOS 這 本 字 典 是 我 妹 妹 的 。 EOS\n", - "translation: 这 本 字 典 是 我 妹 妹 妹 。\n", - "\n", - "BOS tom has a very friendly smile . EOS\n", - "BOS 汤 姆 有 很 友 好 的 微 笑 。 EOS\n", - "translation: 汤 姆 有 很 友 好 的 微 笑 。\n", - "\n", - "BOS she hung the picture UNK down . EOS\n", - "BOS 她 把 画 挂 反 了 。 EOS\n", - "translation: 她 把 画 挂 反 了 。\n", - "\n", - "BOS how much did the glasses cost ? EOS\n", - "BOS 這 副 眼 鏡 多 少 錢 ? EOS\n", - "translation: 這 副 眼 鏡 多 少 錢 ?\n", - "\n", - "BOS it 's for you to decide . EOS\n", - "BOS 這 由 你 來 決 定 。 EOS\n", - "translation: 由 你 來 決 定 。\n", - "\n", - "BOS the moon was full last night . EOS\n", - "BOS 昨 晚 月 亮 满 了 。 EOS\n", - "translation: 昨 晚 月 亮 满 了 。\n", - "\n", - "BOS i love my work very much . EOS\n", - "BOS 我 非 常 喜 欢 我 的 工 作 。 EOS\n", - "translation: 我 非 常 喜 欢 我 的 工 作 。\n", - "\n", - "BOS one of my bags is missing . EOS\n", - "BOS 我 的 一 個 包 包 不 見 了 。 EOS\n", - "translation: 我 的 一 個 包 包 包 不 見 了 。\n", - "\n", - "BOS i have no intention of resigning . EOS\n", - "BOS 我 無 意 辭 職 。 EOS\n", - "translation: 我 不 太 難 取 消 意 思 。\n", - "\n", - "BOS tom always UNK out of tune . EOS\n", - "BOS 汤 姆 唱 歌 总 跑 调 。 EOS\n", - "translation: 湯 姆 總 是 在 彈 首 歌 。\n", - "\n", - "BOS my father 's hobby is fishing . EOS\n", - "BOS 我 父 親 的 嗜 好 是 釣 魚 。 EOS\n", - "translation: 我 父 親 的 嗜 好 是 釣 魚 。\n", - "\n", - "BOS you 'd better not wait here . EOS\n", - "BOS 你 最 好 不 要 在 這 裡 等 。 EOS\n", - "translation: 你 最 好 不 要 在 這 裡 等 。\n", - "\n", - "BOS i ordered some books from london . EOS\n", - "BOS 我 從 倫 敦 訂 購 了 一 些 書 。 EOS\n", - "translation: 我 從 倫 敦 訂 購 了 一 些 書 。\n", - "\n", - "BOS i usually have a light breakfast . EOS\n", - "BOS 我 早 餐 通 常 吃 得 很 清 淡 。 EOS\n", - "translation: 我 早 餐 通 常 吃 得 很 清 淡 。\n", - "\n", - "BOS some of the money was stolen . EOS\n", - "BOS 一 部 分 钱 被 偷 了 。 EOS\n", - "translation: 一 些 錢 被 偷 了 。\n", - "\n", - "BOS i saw him after ten years . EOS\n", - "BOS 十 年 之 後 我 看 到 了 他 。 EOS\n", - "translation: 十 年 之 後 我 看 到 了 他 。\n", - "\n", - "BOS how long will this rope hold ? EOS\n", - "BOS 這 條 繩 子 能 UNK 多 久 ? EOS\n", - "translation: 這 條 繩 子 會 兒 長 大 ?\n", - "\n", - "BOS bee UNK can be very painful . EOS\n", - "BOS 蜜 蜂 UNK 人 可 以 是 非 常 痛 苦 的 。 EOS\n", - "translation: 蜜 蜂 襲 擊 可 以 是 非 常 痛 苦 的 。\n", - "\n", - "BOS i wish to go to hawaii . EOS\n", - "BOS 我 希 望 去 夏 威 夷 。 EOS\n", - "translation: 我 希 望 去 夏 威 夷 。\n", - "\n", - "BOS he is rather hard to please . EOS\n", - "BOS 取 悅 他 很 難 。 EOS\n", - "translation: 他 努 力 地 工 作 。\n", - "\n", - "BOS i ca n't live without you . EOS\n", - "BOS 沒 有 你 我 活 不 下 去 。 EOS\n", - "translation: 不 管 你 活 到 。\n", - "\n", - "BOS send for a doctor at once . EOS\n", - "BOS 立 即 送 醫 。 EOS\n", - "translation: 派 人 立 刻 派 人 去 請 醫 生 來 。\n", - "\n", - "BOS is there enough food for everyone ? EOS\n", - "BOS 有 足 夠 的 食 物 給 大 家 嗎 ? EOS\n", - "translation: 有 足 够 的 食 物 吗 ?\n", - "\n", - "BOS she refused to accept the money . EOS\n", - "BOS 她 拒 絕 接 受 這 筆 錢 。 EOS\n", - "translation: 她 拒 絕 接 受 這 筆 錢 。\n", - "\n", - "BOS something 's wrong with my camera . EOS\n", - "BOS 我 的 相 機 壞 了 。 EOS\n", - "translation: 我 的 相 機 壞 了 。\n", - "\n", - "BOS everyone said that i was wrong . EOS\n", - "BOS 大 家 都 說 我 是 錯 的 。 EOS\n", - "translation: 大 家 都 說 我 是 錯 誤 。\n", - "\n", - "BOS i do n't like you anymore . EOS\n", - "BOS 我 再 也 不 喜 欢 你 了 。 EOS\n", - "translation: 我 再 也 不 喜 欢 你 了 。\n", - "\n", - "BOS that fish lives in fresh water . EOS\n", - "BOS 那 魚 UNK 息 在 淡 水 域 中 。 EOS\n", - "translation: 那 魚 住 在 淡 水 域 水 域 中 。\n", - "\n", - "BOS you are not at all wrong . EOS\n", - "BOS 你 并 不 完 全 错 误 。 EOS\n", - "translation: 你 并 不 是 所 有 錯 誤 的 。\n", - "\n", - "BOS please knock before you come in . EOS\n", - "BOS 进 来 之 前 请 敲 门 。 EOS\n", - "translation: 进 来 之 前 请 敲 门 。\n", - "\n", - "BOS may i ask a few questions ? EOS\n", - "BOS 我 能 问 一 些 问 题 吗 ? EOS\n", - "translation: 我 可 以 問 一 些 問 題 嗎 ?\n", - "\n", - "BOS you are wanted on the phone . EOS\n", - "BOS 有 你 的 電 話 。 EOS\n", - "translation: 你 要 這 支 手 機 。\n", - "\n", - "BOS please have someone else do it . EOS\n", - "BOS 請 讓 別 人 去 做 。 EOS\n", - "translation: 請 你 要 做 一 件 事 情 。\n", - "\n", - "BOS were your mother and father home ? EOS\n", - "BOS 你 父 母 親 在 家 嗎 ? EOS\n", - "translation: 你 爸 爸 在 家 嗎 ?\n", - "\n", - "BOS i 'll leave that to you . EOS\n", - "BOS 我 會 留 給 你 。 EOS\n", - "translation: 我 會 留 給 你 。\n", - "\n", - "BOS you should n't have gone there . EOS\n", - "BOS 你 不 應 該 去 那 裡 的 。 EOS\n", - "translation: 你 不 應 該 去 那 裡 的 。\n", - "\n", - "BOS we saw tom talking to mary . EOS\n", - "BOS 我 们 看 见 汤 姆 跟 玛 丽 说 话 。 EOS\n", - "translation: 我 们 看 见 汤 姆 跟 玛 丽 说 话 。\n", - "\n", - "BOS tom slept with his shoes on . EOS\n", - "BOS 汤 姆 穿 着 鞋 睡 了 。 EOS\n", - "translation: 汤 姆 穿 着 鞋 睡 了 。\n", - "\n", - "BOS i must catch the first train . EOS\n", - "BOS 我 必 须 赶 上 头 班 火 车 。 EOS\n", - "translation: 我 必 須 先 赶 上 一 班 火 車 。\n", - "\n", - "BOS the party ended at ten o'clock . EOS\n", - "BOS 派 對 在 十 點 鐘 結 束 。 EOS\n", - "translation: 派 对 在 十 點 鐘 結 婚 。\n", - "\n", - "BOS i am amazed at your audacity . EOS\n", - "BOS 我 对 你 的 厚 颜 无 耻 感 到 惊 讶 。 EOS\n", - "translation: 我 对 你 的 大 胆 感 到 很 惊 讶 。\n", - "\n", - "BOS the news of his death spread . EOS\n", - "BOS 他 去 世 的 消 息 傳 開 來 了 。 EOS\n", - "translation: 他 去 世 的 消 息 傳 開 來 。\n", - "\n", - "BOS he was laughed at in public . EOS\n", - "BOS 他 在 众 人 面 前 被 嘲 笑 。 EOS\n", - "translation: 他 在 公 共 場 合 被 大 處 了 。\n", - "\n", - "BOS did n't you see the man ? EOS\n", - "BOS 你 們 沒 看 見 那 個 人 嗎 ? EOS\n", - "translation: 你 沒 看 見 那 個 人 嗎 ?\n", - "\n", - "BOS he traveled all over the world . EOS\n", - "BOS 他 周 遊 世 界 各 地 。 EOS\n", - "translation: 他 周 遊 世 界 各 地 。\n", - "\n", - "BOS i 'm in a hurry today . EOS\n", - "BOS 我 今 天 趕 時 間 。 EOS\n", - "translation: 我 今 天 趕 時 間 。\n", - "\n", - "BOS he came to my office yesterday . EOS\n", - "BOS 他 昨 天 來 我 的 辦 公 室 。 EOS\n", - "translation: 他 昨 天 來 我 的 辦 公 室 。\n", - "\n", - "BOS she UNK herself in a blanket . EOS\n", - "BOS 她 用 一 條 毯 子 把 自 己 裹 起 來 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 她 用 一 個 毯 子 把 自 己 裹 起 來 。\n", - "\n", - "BOS he was late for school yesterday . EOS\n", - "BOS 他 昨 天 上 学 迟 到 了 。 EOS\n", - "translation: 他 昨 天 上 學 遲 到 。\n", - "\n", - "BOS sentences begin with a capital letter . EOS\n", - "BOS 句 子 以 一 個 大 寫 字 母 開 頭 。 EOS\n", - "translation: 句 子 以 一 個 大 寫 字 母 開 頭 。\n", - "\n", - "BOS i visited my friend tom yesterday . EOS\n", - "BOS 我 昨 天 拜 訪 了 我 的 朋 友 湯 姆 。 EOS\n", - "translation: 昨 天 我 拜 訪 了 湯 姆 的 朋 友 。\n", - "\n", - "BOS i will not attend the party . EOS\n", - "BOS 我 将 不 出 席 派 对 。 EOS\n", - "translation: 我 不 會 參 加 這 個 派 對 。\n", - "\n", - "BOS he is better than anyone else . EOS\n", - "BOS 他 比 任 何 人 都 好 。 EOS\n", - "translation: 他 比 任 何 人 都 好 。\n", - "\n", - "BOS she remained single all her life . EOS\n", - "BOS 她 终 生 未 婚 。 EOS\n", - "translation: 她 一 生 獨 身 。\n", - "\n", - "BOS look it up in your dictionary . EOS\n", - "BOS 查 查 你 的 字 典 。 EOS\n", - "translation: 查 查 你 的 字 典 。\n", - "\n", - "BOS no one ran ahead of him . EOS\n", - "BOS 没 有 人 跑 在 他 前 面 。 EOS\n", - "translation: 没 有 人 跑 到 他 面 。\n", - "\n", - "BOS they were all UNK from shouting . EOS\n", - "BOS 他 們 全 都 叫 到 沙 UNK 了 。 EOS\n", - "translation: 他 們 全 都 叫 到 沙 發 。\n", - "\n", - "BOS something 's wrong with my camera . EOS\n", - "BOS 我 的 相 機 有 毛 病 。 EOS\n", - "translation: 我 的 相 機 壞 了 。\n", - "\n", - "BOS i have nothing to complain about . EOS\n", - "BOS 我 沒 有 什 麼 可 抱 怨 的 。 EOS\n", - "translation: 我 没 什 么 可 抱 怨 。\n", - "\n", - "BOS i should n't have done it . EOS\n", - "BOS 我 本 不 应 该 做 的 。 EOS\n", - "translation: 我 不 應 該 做 的 。\n", - "\n", - "BOS i have no secrets from you . EOS\n", - "BOS 我 對 你 毫 無 隱 UNK 。 EOS\n", - "translation: 我 對 你 毫 無 隱 約 。\n", - "\n", - "BOS the bus should be coming soon . EOS\n", - "BOS 公 車 應 該 很 快 就 會 來 了 。 EOS\n", - "translation: 公 車 應 該 很 快 就 會 來 。\n", - "\n", - "BOS we were nearly frozen to death . EOS\n", - "BOS 我 们 几 乎 被 冻 死 了 。 EOS\n", - "translation: 我 们 差 不 多 死 地 方 了 。\n", - "\n", - "BOS they go to church on sunday . EOS\n", - "BOS 他 們 禮 拜 天 上 教 堂 。 EOS\n", - "translation: 他 們 星 期 天 上 教 堂 。\n", - "\n", - "BOS when water freezes it becomes ice . EOS\n", - "BOS 水 結 凍 後 , 變 成 冰 。 EOS\n", - "translation: 水 結 凍 後 , 變 成 冰 。\n", - "\n", - "BOS she got married in her teens . EOS\n", - "BOS 她 十 幾 歲 時 就 結 婚 了 。 EOS\n", - "translation: 她 十 幾 歲 時 結 婚 。\n", - "\n", - "BOS you 'll forget about me someday . EOS\n", - "BOS 有 一 天 你 会 忘 了 我 。 EOS\n", - "translation: 你 会 忘 了 我 一 天 的 。\n", - "\n", - "BOS she has always lived in UNK . EOS\n", - "BOS 她 一 直 住 在 小 UNK 。 EOS\n", - "translation: 她 一 直 住 在 活 。\n", - "\n", - "BOS his advice did n't help much . EOS\n", - "BOS 他 的 忠 告 没 起 到 太 大 的 作 用 。 EOS\n", - "translation: 他 的 忠 告 没 起 到 太 多 。\n", - "\n", - "BOS i wish i had a car . EOS\n", - "BOS 但 願 我 有 一 輛 車 。 EOS\n", - "translation: 但 願 我 有 一 輛 車 。\n", - "\n", - "BOS i 'm almost sure of it . EOS\n", - "BOS 我 幾 乎 能 確 定 。 EOS\n", - "translation: 我 差 點 希 望 這 個 。\n", - "\n", - "BOS i just got your letter yesterday . EOS\n", - "BOS 我 昨 天 剛 收 到 你 的 信 。 EOS\n", - "translation: 我 昨 天 剛 收 到 你 的 信 。\n", - "\n", - "BOS i 've caught a terrible cold . EOS\n", - "BOS 我 得 了 一 種 可 怕 的 感 冒 。 EOS\n", - "translation: 我 感 冒 了 。\n", - "\n", - "BOS my UNK is allergic to eggs . EOS\n", - "BOS 我 UNK 子 對 雞 蛋 過 敏 。 EOS\n", - "translation: 我 的 蛋 對 雞 湯 姆 有 害 。\n", - "\n", - "BOS could you help us after school ? EOS\n", - "BOS 你 能 在 放 學 後 幫 助 我 們 嗎 ? EOS\n", - "translation: 你 能 打 算 我 們 放 學 嗎 ?\n", - "\n", - "BOS lend me your book , please . EOS\n", - "BOS 請 借 我 你 的 書 。 EOS\n", - "translation: 請 借 我 你 的 書 。\n", - "\n", - "BOS you ca n't live without water . EOS\n", - "BOS 沒 有 水 你 不 能 生 活 。 EOS\n", - "translation: 別 住 的 水 從 水 裡 是 不 禮 貌 的 。\n", - "\n", - "BOS what 's your home phone number ? EOS\n", - "BOS 你 家 的 電 話 號 碼 幾 號 ? EOS\n", - "translation: 你 家 的 電 話 號 碼 幾 號 ?\n", - "\n", - "BOS i bought a red sports car . EOS\n", - "BOS 我 買 了 一 輛 紅 色 的 跑 車 。 EOS\n", - "translation: 我 買 了 紅 色 的 跑 車 。\n", - "\n", - "BOS there were two pieces of cake . EOS\n", - "BOS 那 有 两 块 蛋 糕 。 EOS\n", - "translation: 那 有 两 块 蛋 糕 。\n", - "\n", - "BOS do you really believe in ghosts ? EOS\n", - "BOS 你 真 的 相 信 鬼 嗎 ? EOS\n", - "translation: 你 真 的 相 信 有 幽 灵 吗 ?\n", - "\n", - "BOS the threat to UNK was ended . EOS\n", - "BOS 对 里 士 满 的 威 胁 结 束 了 。 EOS\n", - "translation: 对 政 治 结 婚 的 景 点 结 婚 了 。\n", - "\n", - "BOS my french is n't good enough . EOS\n", - "BOS 我 的 法 语 说 得 不 够 好 。 EOS\n", - "translation: 我 的 法 語 說 得 不 好 。\n", - "\n", - "BOS why do n't you eat vegetables ? EOS\n", - "BOS 为 什 么 你 不 吃 蔬 菜 ? EOS\n", - "translation: 你 为 什 么 不 吃 蔬 菜 ?\n", - "\n", - "BOS i am not writing a letter . EOS\n", - "BOS 我 不 是 正 在 寫 信 。 EOS\n", - "translation: 我 不 是 正 在 寫 信 。\n", - "\n", - "BOS you ought not to go out . EOS\n", - "BOS 你 不 應 該 出 門 。 EOS\n", - "translation: 你 不 應 該 出 門 。\n", - "\n", - "BOS old people get up very early . EOS\n", - "BOS 老 人 們 很 早 就 起 床 。 EOS\n", - "translation: 老 人 們 很 早 就 起 床 。\n", - "\n", - "BOS he is studying at his desk . EOS\n", - "BOS 他 正 在 他 的 書 桌 旁 讀 書 。 EOS\n", - "translation: 他 在 他 的 桌 子 在 书 。\n", - "\n", - "BOS the bill will never go through . EOS\n", - "BOS 該 法 案 將 永 遠 不 會 通 過 。 EOS\n", - "translation: 該 法 案 將 永 遠 不 會 通 過 。\n", - "\n", - "BOS how did you get in here ? EOS\n", - "BOS 你 是 怎 么 进 来 的 ? EOS\n", - "translation: 你 们 怎 么 进 来 这 里 ?\n", - "\n", - "BOS nothing is as precious as love . EOS\n", - "BOS 沒 有 什 麼 東 西 是 跟 愛 一 樣 UNK 貴 的 。 EOS\n", - "translation: 沒 有 什 麼 像 愛 像 愛 愛 一 樣 貴 。\n", - "\n", - "BOS i think you 're quite right . EOS\n", - "BOS 我 認 為 你 說 得 很 對 。 EOS\n", - "translation: 我 認 為 你 很 對 。\n", - "\n", - "BOS he is still very much alive . EOS\n", - "BOS 他 依 旧 充 满 活 力 。 EOS\n", - "translation: 他 依 旧 充 满 活 力 。\n", - "\n", - "BOS he found me a good seat . EOS\n", - "BOS 他 幫 我 找 到 了 一 個 好 位 子 。 EOS\n", - "translation: 他 幫 我 找 到 了 一 個 好 位 子 。\n", - "\n", - "BOS after a storm comes a calm . EOS\n", - "BOS 否 極 泰 來 。 EOS\n", - "translation: 暴 風 過 後 是 寧 靜 。\n", - "\n", - "BOS i asked him to wait here . EOS\n", - "BOS 我 請 他 在 這 裡 等 。 EOS\n", - "translation: 我 請 他 在 這 裡 等 。\n", - "\n", - "BOS i have n't UNK for ages . EOS\n", - "BOS 我 很 久 没 有 抽 烟 了 。 EOS\n", - "translation: 我 没 明 白 程 度 過 得 到 年 輕 。\n", - "\n", - "BOS you should get your hair cut . EOS\n", - "BOS 你 该 剪 头 发 了 。 EOS\n", - "translation: 你 應 該 理 發 現 你 的 頭 髮 。\n", - "\n", - "BOS do you think i 'm stupid ? EOS\n", - "BOS 你 認 為 我 傻 嗎 ? EOS\n", - "translation: 你 觉 得 我 傻 吗 ?\n", - "\n", - "BOS there was nobody in the garden . EOS\n", - "BOS 花 園 裡 沒 有 人 。 EOS\n", - "translation: 花 園 裡 沒 有 人 在 花 園 裡 。\n", - "\n", - "BOS my sister went to kobe yesterday . EOS\n", - "BOS 我 妹 妹 昨 天 去 神 戶 了 。 EOS\n", - "translation: 我 妹 妹 昨 天 去 神 戶 了 。\n", - "\n", - "BOS the rumor UNK to be true . EOS\n", - "BOS 经 过 证 实 , 谣 言 是 真 的 。 EOS\n", - "translation: 傳 聞 是 正 確 的 。\n", - "\n", - "BOS we have almost finished our work . EOS\n", - "BOS 我 們 幾 乎 完 成 了 我 們 的 工 作 。 EOS\n", - "translation: 我 們 幾 乎 完 成 了 我 們 的 工 作 。\n", - "\n", - "BOS my boss made me work overtime . EOS\n", - "BOS 我 的 老 闆 要 我 加 班 。 EOS\n", - "translation: 我 的 老 闆 要 我 加 班 。\n", - "\n", - "BOS she is a very good teacher . EOS\n", - "BOS 她 是 个 非 常 好 的 老 师 。 EOS\n", - "translation: 她 是 個 非 常 好 的 老 師 。\n", - "\n", - "BOS you should n't have done that . EOS\n", - "BOS 我 不 應 該 做 那 件 事 的 。 EOS\n", - "translation: 你 不 该 做 那 事 。\n", - "\n", - "BOS i forgot what his name was . EOS\n", - "BOS 我 忘 记 他 叫 什 么 名 字 了 。 EOS\n", - "translation: 我 忘 記 他 叫 什 麼 名 字 。\n", - "\n", - "BOS i 'm going to the bank . EOS\n", - "BOS 我 要 去 银 行 了 。 EOS\n", - "translation: 我 要 去 银 行 。\n", - "\n", - "BOS bring me a glass of water . EOS\n", - "BOS 给 我 一 杯 水 。 EOS\n", - "translation: 给 我 一 杯 水 。\n", - "\n", - "BOS i can barely stand his behavior . EOS\n", - "BOS 我 可 以 勉 強 地 容 忍 他 的 行 為 。 EOS\n", - "translation: 我 可 以 勉 強 地 容 忍 他 的 行 為 。\n", - "\n", - "BOS he really likes music a lot . EOS\n", - "BOS 他 真 的 很 热 爱 音 乐 。 EOS\n", - "translation: 他 真 的 很 喜 歡 音 樂 。\n", - "\n", - "BOS look , it 's my problem . EOS\n", - "BOS 看 , 这 是 我 的 问 题 。 EOS\n", - "translation: 看 著 我 的 問 題 , 可 能 是 錯 的 問 題 。\n", - "\n", - "BOS laughter is good for your health . EOS\n", - "BOS 笑 一 笑 , 十 年 少 。 EOS\n", - "translation: 十 岁 的 时 候 , 高 兴 。\n", - "\n", - "BOS have you ever been to america ? EOS\n", - "BOS 你 去 過 美 國 嗎 ? EOS\n", - "translation: 你 曾 去 過 美 國 嗎 ?\n", - "\n", - "BOS she UNK him in the back . EOS\n", - "BOS 她 在 他 的 背 上 戳 了 一 下 。 EOS\n", - "translation: 她 在 他 的 背 上 戳 了 一 下 。\n", - "\n", - "BOS there was a shortage of fuel . EOS\n", - "BOS 燃 料 短 缺 。 EOS\n", - "translation: 燃 料 短 缺 。\n", - "\n", - "BOS hi ! do you work here ? EOS\n", - "BOS 嗨 ! 你 在 这 儿 工 作 吗 ? EOS\n", - "translation: 嗨 ! 你 在 這 裡 工 作 嗎 ?\n", - "\n", - "BOS i played catch with my father . EOS\n", - "BOS 我 和 我 爸 爸 玩 接 球 。 EOS\n", - "translation: 我 和 父 親 吵 架 。\n", - "\n", - "BOS i think i made a mistake . EOS\n", - "BOS 我 认 为 我 犯 了 个 错 。 EOS\n", - "translation: 我 認 為 這 個 錯 誤 。\n", - "\n", - "BOS i invited my friends to dinner . EOS\n", - "BOS 我 邀 請 我 的 朋 友 吃 晚 餐 。 EOS\n", - "translation: 我 邀 請 我 的 朋 友 吃 晚 餐 。\n", - "\n", - "BOS my house has a small yard . EOS\n", - "BOS 我 的 房 子 有 一 個 小 院 子 。 EOS\n", - "translation: 我 家 里 有 一 个 小 院 子 。\n", - "\n", - "BOS i refuse to answer your question . EOS\n", - "BOS 我 拒 绝 回 答 你 的 问 题 。 EOS\n", - "translation: 我 拒 绝 回 答 你 的 问 题 。\n", - "\n", - "BOS they were scolded by the teacher . EOS\n", - "BOS 他 们 被 老 师 训 斥 了 。 EOS\n", - "translation: 他 们 被 老 师 训 斥 了 。\n", - "\n", - "BOS she was absorbed in the UNK . EOS\n", - "BOS 她 迷 上 了 视 UNK 。 EOS\n", - "translation: 她 迷 上 了 视 力 。\n", - "\n", - "BOS i wonder what this phrase means . EOS\n", - "BOS 我 想 知 道 这 句 话 的 意 思 。 EOS\n", - "translation: 我 想 知 道 这 句 话 的 意 思 。\n", - "\n", - "BOS she has already left the office . EOS\n", - "BOS 她 已 經 離 開 了 辦 公 室 。 EOS\n", - "translation: 她 已 经 离 开 了 办 公 室 。\n", - "\n", - "BOS my hobby is collecting old bottles . EOS\n", - "BOS 我 的 嗜 好 是 收 集 舊 瓶 子 。 EOS\n", - "translation: 我 的 嗜 好 是 收 集 舊 瓶 子 。\n", - "\n", - "BOS i 'd better get back home . EOS\n", - "BOS 我 回 家 比 较 好 。 EOS\n", - "translation: 我 回 家 比 较 好 。\n", - "\n", - "BOS did you go to school yesterday ? EOS\n", - "BOS 你 昨 天 去 上 學 了 嗎 ? EOS\n", - "translation: 你 昨 天 去 上 學 了 嗎 ?\n", - "\n", - "BOS i 'll give you a UNK . EOS\n", - "BOS 我 会 给 你 开 个 药 方 。 EOS\n", - "translation: 我 會 給 你 一 個 醫 生 。\n", - "\n", - "BOS tom did well considering his age . EOS\n", - "BOS 考 慮 到 他 的 年 紀 , 他 做 得 很 好 。 EOS\n", - "translation: 汤 姆 做 得 好 他 的 年 紀 了 。\n", - "\n", - "BOS i 've lost a little weight . EOS\n", - "BOS 我 瘦 了 一 點 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 瘦 了 一 點 。\n", - "\n", - "BOS the UNK is in the UNK . EOS\n", - "BOS 桌 布 在 櫥 櫃 裡 。 EOS\n", - "translation: 在 這 個 地 方 面 。\n", - "\n", - "BOS they got married six months ago . EOS\n", - "BOS 他 們 六 個 月 前 結 婚 了 。 EOS\n", - "translation: 他 們 六 個 月 前 結 婚 了 。\n", - "\n", - "BOS london is famous for its fog . EOS\n", - "BOS 倫 敦 以 霧 著 名 。 EOS\n", - "translation: 倫 敦 以 霧 著 名 。\n", - "\n", - "BOS the lecture lasted for two hours . EOS\n", - "BOS 這 場 演 講 持 續 了 兩 個 小 時 。 EOS\n", - "translation: 這 場 演 講 持 續 了 兩 個 小 時 。\n", - "\n", - "BOS look what i made for you . EOS\n", - "BOS 看 我 为 你 做 了 什 么 。 EOS\n", - "translation: 看 著 你 找 到 什 麼 。\n", - "\n", - "BOS it 's obvious that he lied . EOS\n", - "BOS 顯 然 地 他 撒 了 謊 。 EOS\n", - "translation: 顯 然 地 他 撒 了 謊 。\n", - "\n", - "BOS i was alone in the classroom . EOS\n", - "BOS 我 独 自 待 在 教 室 里 。 EOS\n", - "translation: 我 独 自 住 在 教 室 里 。\n", - "\n", - "BOS where does he want to go ? EOS\n", - "BOS 他 想 去 哪 裡 ? EOS\n", - "translation: 他 想 去 哪 裡 ?\n", - "\n", - "BOS she did n't have any pencils . EOS\n", - "BOS 她 一 支 铅 笔 也 没 有 。 EOS\n", - "translation: 她 没 有 用 任 何 一 支 鉛 筆 。\n", - "\n", - "BOS i have been busy since yesterday . EOS\n", - "BOS 我 從 昨 天 開 始 一 直 忙 著 。 EOS\n", - "translation: 我 從 昨 天 開 始 一 直 忙 著 。\n", - "\n", - "BOS i bought a new sewing machine . EOS\n", - "BOS 我 買 了 一 台 新 的 縫 UNK 機 。 EOS\n", - "translation: 我 買 了 一 台 新 的 縫 機 。\n", - "\n", - "BOS you 'd better not go today . EOS\n", - "BOS 你 今 天 最 好 不 要 去 。 EOS\n", - "translation: 你 今 天 最 好 不 要 去 。\n", - "\n", - "BOS could we go somewhere and talk ? EOS\n", - "BOS 我 们 能 去 别 的 地 方 谈 谈 吗 ? EOS\n", - "translation: 我 们 能 去 别 的 那 么 谈 谈 谈 吗 ?\n", - "\n", - "BOS where do you want to go ? EOS\n", - "BOS 你 要 去 哪 裡 ? EOS\n", - "translation: 你 要 去 哪 裡 ?\n", - "\n", - "BOS all he thinks about is himself . EOS\n", - "BOS 他 只 顾 自 己 的 利 益 。 EOS\n", - "translation: 他 一 整 個 人 都 认 为 自 己 的 想 法 。\n", - "\n", - "BOS he UNK losing all his fortune . EOS\n", - "BOS 他 冒 着 失 去 所 有 财 产 的 危 险 。 EOS\n", - "translation: 他 冒 着 失 去 了 他 的 危 險 。\n", - "\n", - "BOS do you think i 'm joking ? EOS\n", - "BOS 你 觉 得 我 是 在 开 玩 笑 吗 ? EOS\n", - "translation: 你 觉 得 我 在 开 玩 吗 ?\n", - "\n", - "BOS stop UNK off finding a job . EOS\n", - "BOS 不 要 UNK 延 去 找 工 作 的 事 。 EOS\n", - "translation: 不 要 再 管 發 現 一 份 工 作 。\n", - "\n", - "BOS how many books do you have ? EOS\n", - "BOS 你 有 多 少 本 書 ? EOS\n", - "translation: 你 有 多 少 本 書 ?\n", - "\n", - "BOS wait till the light turns green . EOS\n", - "BOS 等 到 指 示 燈 變 成 綠 色 。 EOS\n", - "translation: 等 到 指 示 燈 變 成 綠 色 。\n", - "\n", - "BOS he must finish his homework today . EOS\n", - "BOS 他 今 天 必 須 完 成 他 的 功 課 。 EOS\n", - "translation: 他 今 天 必 須 完 成 他 的 功 課 。\n", - "\n", - "BOS they waited for him for hours . EOS\n", - "BOS 他 們 等 了 他 好 幾 個 小 時 。 EOS\n", - "translation: 他 們 等 了 他 好 幾 個 小 時 。\n", - "\n", - "BOS they wo n't come until tomorrow . EOS\n", - "BOS 他 們 直 到 明 天 前 不 會 來 。 EOS\n", - "translation: 他 們 明 天 才 會 來 。\n", - "\n", - "BOS we headed for the mountain cottage . EOS\n", - "BOS 我 们 向 山 间 小 屋 走 去 。 EOS\n", - "translation: 我 们 向 山 间 小 屋 走 去 。\n", - "\n", - "BOS this car is easy to handle . EOS\n", - "BOS 這 輛 車 很 容 易 操 控 。 EOS\n", - "translation: 這 輛 車 很 容 易 操 控 。\n", - "\n", - "BOS i 'm taking spanish this semester . EOS\n", - "BOS 我 這 學 期 修 西 班 牙 文 。 EOS\n", - "translation: 我 這 學 期 修 西 班 牙 文 。\n", - "\n", - "BOS he sat next to the stream . EOS\n", - "BOS 他 坐 在 河 边 。 EOS\n", - "translation: 他 坐 在 溪 流 旁 邊 。\n", - "\n", - "BOS i was trying to kill time . EOS\n", - "BOS 我 试 着 消 UNK 时 间 。 EOS\n", - "translation: 我 试 着 消 息 时 间 。\n", - "\n", - "BOS i visited UNK ten years ago . EOS\n", - "BOS 我 十 年 前 參 觀 了 福 岡 。 EOS\n", - "translation: 我 十 年 前 參 觀 了 福 岡 。\n", - "\n", - "BOS what are you UNK them for ? EOS\n", - "BOS 你 為 什 麼 懲 罰 他 們 ? EOS\n", - "translation: 你 為 什 麼 懲 罰 他 們 ?\n", - "\n", - "BOS i was late for the appointment . EOS\n", - "BOS 我 約 會 遲 到 了 。 EOS\n", - "translation: 我 約 會 遲 到 了 。\n", - "\n", - "BOS please help yourself to the cake . EOS\n", - "BOS 你 自 己 拿 蛋 糕 吃 吧 。 EOS\n", - "translation: 請 你 自 己 吃 蛋 糕 。\n", - "\n", - "BOS the bus was two minutes early . EOS\n", - "BOS 巴 士 早 了 兩 分 鐘 。 EOS\n", - "translation: 公 車 每 年 輕 一 班 動 物 。\n", - "\n", - "BOS the men are wearing short UNK . EOS\n", - "BOS 男 人 們 穿 著 短 袖 上 衣 。 EOS\n", - "translation: 男 人 穿 著 短 袖 上 衣 。\n", - "\n", - "BOS she is going to UNK UNK . EOS\n", - "BOS 她 將 去 立 山 。 EOS\n", - "translation: 她 將 要 去 。\n", - "\n", - "BOS people grow more UNK with age . EOS\n", - "BOS 人 會 隨 著 年 齡 的 增 長 而 更 加 地 玩 世 不 恭 。 EOS\n", - "translation: 人 會 在 馬 中 更 长 相 處 和 亚 洲 。\n", - "\n", - "BOS is everything going ok at work ? EOS\n", - "BOS 工 作 一 切 顺 利 吗 ? EOS\n", - "translation: 干 活 慢 点 吗 ?\n", - "\n", - "BOS the cottage was clean and UNK . EOS\n", - "BOS 小 屋 干 净 又 整 洁 。 EOS\n", - "translation: 小 屋 干 净 又 整 洁 。\n", - "\n", - "BOS have you eaten your lunch yet ? EOS\n", - "BOS 你 吃 過 午 飯 了 嗎 ? EOS\n", - "translation: 你 吃 過 午 飯 了 嗎 ?\n", - "\n", - "BOS i 've got a few friends . EOS\n", - "BOS 我 有 一 些 朋 友 。 EOS\n", - "translation: 我 有 一 些 朋 友 。\n", - "\n", - "BOS tom told me he was canadian . EOS\n", - "BOS 汤 姆 告 诉 我 他 是 加 拿 大 人 。 EOS\n", - "translation: 汤 姆 告 诉 我 他 是 加 拿 大 人 。\n", - "\n", - "BOS change trains at the next station . EOS\n", - "BOS 在 下 一 站 換 火 車 。 EOS\n", - "translation: 在 下 一 站 換 火 車 。\n", - "\n", - "BOS kobe is famous for its port . EOS\n", - "BOS 神 戶 是 著 名 的 港 口 。 EOS\n", - "translation: 神 戶 是 著 名 的 港 口 。\n", - "\n", - "BOS turn off the light , please . EOS\n", - "BOS 請 關 燈 。 EOS\n", - "translation: 請 關 燈 。\n", - "\n", - "BOS what 's your favorite UNK app ? EOS\n", - "BOS 你 最 喜 欢 的 i P a d 应 用 是 什 么 ? EOS\n", - "translation: 你 最 喜 歡 的 i P a d 应 用 是 什 麼 ?\n", - "\n", - "BOS i could n't find his house . EOS\n", - "BOS 我 找 不 到 他 的 家 。 EOS\n", - "translation: 我 不 能 找 他 們 的 房 子 。\n", - "\n", - "BOS i 'm still the boss here . EOS\n", - "BOS 我 仍 是 这 里 的 老 板 。 EOS\n", - "translation: 我 還 在 這 裡 的 老 板 中 。\n", - "\n", - "BOS i have more money than tom . EOS\n", - "BOS 我 比 汤 姆 有 钱 。 EOS\n", - "translation: 我 比 T o m 有 錢 更 多 錢 。\n", - "\n", - "BOS what does tom know about me ? EOS\n", - "BOS 汤 姆 知 道 我 的 什 么 ? EOS\n", - "translation: 汤 姆 知 道 我 的 什 么 ?\n", - "\n", - "BOS would you lend me your dictionary ? EOS\n", - "BOS 你 可 以 借 我 你 的 字 典 嗎 ? EOS\n", - "translation: 你 可 以 借 我 你 的 字 典 嗎 ?\n", - "\n", - "BOS i often played tennis with her . EOS\n", - "BOS 我 常 常 和 她 打 網 球 。 EOS\n", - "translation: 我 常 和 她 打 網 球 。\n", - "\n", - "BOS he put on the black coat . EOS\n", - "BOS 他 穿 上 了 黑 色 的 外 套 。 EOS\n", - "translation: 他 穿 上 了 黑 色 的 外 套 。\n", - "\n", - "BOS i heard the front doorbell ring . EOS\n", - "BOS 我 聽 到 前 門 的 門 鈴 響 了 。 EOS\n", - "translation: 我 听 到 前 面 的 风 停 了 。\n", - "\n", - "BOS she waited for hours and hours . EOS\n", - "BOS 她 等 了 好 幾 個 小 時 。 EOS\n", - "translation: 她 等 了 好 幾 個 小 時 。\n", - "\n", - "BOS we 're having difficulty UNK tom . EOS\n", - "BOS 我 们 难 以 找 到 汤 姆 。 EOS\n", - "translation: 我 们 难 以 找 到 汤 姆 。\n", - "\n", - "BOS UNK the fat off the meat . EOS\n", - "BOS 切 除 這 塊 肉 的 UNK UNK 。 EOS\n", - "translation: 切 除 了 肉 肉 肉 。\n", - "\n", - "BOS we are leaving japan next month . EOS\n", - "BOS 我 們 下 個 月 將 離 開 日 本 。 EOS\n", - "translation: 我 們 下 個 月 將 離 開 日 本 。\n", - "\n", - "BOS please show me the green shirt . EOS\n", - "BOS 請 給 我 看 看 這 件 綠 色 的 襯 衫 。 EOS\n", - "translation: 請 給 我 看 看 看 看 看 這 件 綠 色 的 襯 衫 。\n", - "\n", - "BOS you look just like your mother . EOS\n", - "BOS 你 看 起 來 就 像 你 的 母 親 。 EOS\n", - "translation: 你 看 起 來 就 像 你 的 母 親 。\n", - "\n", - "BOS UNK stands for the united nations . EOS\n", - "BOS U N 代 表 聯 合 國 。 EOS\n", - "translation: U N 代 表 聯 合 國 。\n", - "\n", - "BOS she gave me this UNK UNK . EOS\n", - "BOS 她 給 了 我 這 個 光 碟 。 EOS\n", - "translation: 她 給 了 我 這 個 禮 物 。\n", - "\n", - "BOS would you please come again later ? EOS\n", - "BOS 請 您 稍 後 再 來 好 嗎 ? EOS\n", - "translation: 請 你 再 來 一 次 嗎 ?\n", - "\n", - "BOS we 're friends from way back . EOS\n", - "BOS 我 们 是 老 朋 友 了 。 EOS\n", - "translation: 我 们 是 朋 友 的 中 交 车 了 。\n", - "\n", - "BOS we could see nothing but fog . EOS\n", - "BOS 除 了 雾 我 看 不 见 任 何 东 西 。 EOS\n", - "translation: 我 们 可 以 看 不 起 了 。\n", - "\n", - "BOS we live in the united states . EOS\n", - "BOS 我 們 住 在 美 國 。 EOS\n", - "translation: 我 們 住 在 美 國 。\n", - "\n", - "BOS all of my friends like soccer . EOS\n", - "BOS 我 所 有 的 朋 友 都 喜 歡 足 球 。 EOS\n", - "translation: 我 所 有 的 朋 友 都 喜 歡 足 球 。\n", - "\n", - "BOS she is very thoughtful and patient . EOS\n", - "BOS 她 非 常 周 到 和 耐 心 。 EOS\n", - "translation: 她 非 常 周 四 周 四 你 的 耐 心 。\n", - "\n", - "BOS will you stay at home tonight ? EOS\n", - "BOS 你 今 晚 會 待 在 家 裡 嗎 ? EOS\n", - "translation: 你 今 晚 會 待 在 家 裡 嗎 ?\n", - "\n", - "BOS she ran as fast as possible . EOS\n", - "BOS 她 盡 可 能 地 快 跑 。 EOS\n", - "translation: 她 跑 得 尽 快 地 跑 。\n", - "\n", - "BOS tom has been gone for ages . EOS\n", - "BOS 汤 姆 年 纪 大 去 世 了 。 EOS\n", - "translation: 汤 姆 年 纪 大 去 世 了 。\n", - "\n", - "BOS give me three pieces of UNK . EOS\n", - "BOS 給 我 三 片 UNK 魚 肉 。 EOS\n", - "translation: 给 我 三 片 香 肉 。\n", - "\n", - "BOS what did she whisper to you ? EOS\n", - "BOS 她 小 聲 地 跟 你 說 了 什 麼 ? EOS\n", - "translation: 她 跟 你 說 了 什 麼 悄 話 ?\n", - "\n", - "BOS the doctor may have said so . EOS\n", - "BOS 医 生 可 能 说 过 。 EOS\n", - "translation: 醫 生 可 能 说 得 那 么 好 。\n", - "\n", - "BOS i was just talking about tom . EOS\n", - "BOS 我 仅 仅 是 在 和 T o m 交 谈 。 EOS\n", - "translation: 我 刚 跟 T o m 谈 过 。\n", - "\n", - "BOS she fainted when she saw blood . EOS\n", - "BOS 她 看 见 血 就 晕 了 。 EOS\n", - "translation: 當 然 , 她 見 過 西 裝 。\n", - "\n", - "BOS let 's go to a movie . EOS\n", - "BOS 讓 我 們 去 看 電 影 。 EOS\n", - "translation: 讓 我 們 去 看 電 影 。\n", - "\n", - "BOS he was injured in the accident . EOS\n", - "BOS 他 在 事 故 中 受 傷 。 EOS\n", - "translation: 他 在 意 外 中 受 傷 。\n", - "\n", - "BOS can you drive a UNK UNK ? EOS\n", - "BOS 你 會 開 手 排 車 嗎 ? EOS\n", - "translation: 你 會 開 排 車 嗎 ?\n", - "\n", - "BOS i thought you were my friend . EOS\n", - "BOS 我 以 为 你 是 我 的 朋 友 。 EOS\n", - "translation: 我 認 為 你 是 我 的 朋 友 。\n", - "\n", - "BOS i do n't really read newspapers . EOS\n", - "BOS 我 不 太 看 报 纸 。 EOS\n", - "translation: 我 不 太 报 纸 看 。\n", - "\n", - "BOS who cares when she gets married ? EOS\n", - "BOS 誰 管 她 什 麼 時 候 結 婚 ? EOS\n", - "translation: 誰 在 乎 她 何 時 結 婚 ?\n", - "\n", - "BOS it is wrong to tell lies . EOS\n", - "BOS 說 謊 是 錯 誤 的 。 EOS\n", - "translation: 说 謊 是 錯 誤 的 。\n", - "\n", - "BOS you have to clean your room . EOS\n", - "BOS 你 该 打 扫 你 的 房 间 。 EOS\n", - "translation: 你 要 打 扫 你 的 房 间 。\n", - "\n", - "BOS a famous architect built this house . EOS\n", - "BOS 一 个 有 名 的 建 筑 师 造 了 这 栋 房 子 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 一 个 有 名 的 建 筑 师 造 了 这 个 房 子 。\n", - "\n", - "BOS i ’ UNK started learning esperanto . EOS\n", - "BOS 我 開 始 學 習 世 界 語 了 。 EOS\n", - "translation: 我 開 始 學 習 世 界 語 了 。\n", - "\n", - "BOS she felt UNK about her future . EOS\n", - "BOS 她 對 她 的 未 來 感 到 沒 有 安 全 感 。 EOS\n", - "translation: 她 覺 得 她 可 以 永 遠 不 會 永 遠 。\n", - "\n", - "BOS he wants to go to america . EOS\n", - "BOS 他 想 去 美 國 。 EOS\n", - "translation: 他 想 去 美 國 。\n", - "\n", - "BOS are you sure of your facts ? EOS\n", - "BOS 你 確 定 你 的 資 料 屬 實 嗎 ? EOS\n", - "translation: 你 確 定 你 的 資 料 屬 實 嗎 ?\n", - "\n", - "BOS UNK ideas into practice is difficult . EOS\n", - "BOS 把 想 法 付 UNK 實 UNK 是 困 難 的 。 EOS\n", - "translation: 想 法 付 實 主 意 地 解 決 。\n", - "\n", - "BOS what is the population of japan ? EOS\n", - "BOS 日 本 的 人 口 是 多 少 ? EOS\n", - "translation: 日 本 人 口 是 多 少 ?\n", - "\n", - "BOS tom got angry at the children . EOS\n", - "BOS 湯 姆 對 孩 子 們 生 氣 。 EOS\n", - "translation: 湯 姆 在 這 個 孩 子 對 著 生 氣 。\n", - "\n", - "BOS do n't throw away this magazine . EOS\n", - "BOS 不 要 丟 掉 這 本 雜 誌 。 EOS\n", - "translation: 不 要 丟 掉 這 本 雜 誌 。\n", - "\n", - "BOS it is likely to rain tomorrow . EOS\n", - "BOS 明 天 有 可 能 會 下 雨 。 EOS\n", - "translation: 明 天 下 雨 可 能 會 下 雨 。\n", - "\n", - "BOS it is by no means certain . EOS\n", - "BOS 这 根 本 不 是 确 定 的 。 EOS\n", - "translation: 这 不 是 确 定 要 确 的 事 情 。\n", - "\n", - "BOS tom was questioned by the police . EOS\n", - "BOS 汤 姆 被 警 察 盘 问 。 EOS\n", - "translation: 汤 姆 被 玛 丽 替 换 了 个 词 。\n", - "\n", - "BOS we are not going on vacation . EOS\n", - "BOS 我 们 不 去 度 假 。 EOS\n", - "translation: 我 们 不 去 度 假 。\n", - "\n", - "BOS the birds flew to the south . EOS\n", - "BOS 群 鸟 南 翔 。 EOS\n", - "translation: 郵 票 被 南 翔 。\n", - "\n", - "BOS absolutely nothing is permanent in life . EOS\n", - "BOS 生 活 中 绝 对 没 有 什 么 是 持 久 的 。 EOS\n", - "translation: 生 活 中 绝 对 没 有 什 么 是 持 久 的 。\n", - "\n", - "BOS she saw herself in the mirror . EOS\n", - "BOS 她 看 到 鏡 子 裡 的 自 己 。 EOS\n", - "translation: 她 看 到 鏡 子 裡 的 自 己 。\n", - "\n", - "BOS how about going for a drive ? EOS\n", - "BOS 去 開 車 兜 風 怎 樣 ? EOS\n", - "translation: 出 租 车 怎 么 开 车 ?\n", - "\n", - "BOS it never rains but it pours . EOS\n", - "BOS 禍 不 單 行 。 EOS\n", - "translation: 可 能 永 远 不 言 雨 。\n", - "\n", - "BOS we enjoyed ourselves at the picnic . EOS\n", - "BOS 我 們 在 野 餐 玩 得 很 開 心 。 EOS\n", - "translation: 我 們 在 野 餐 玩 得 很 開 心 。\n", - "\n", - "BOS my father is in his room . EOS\n", - "BOS 我 父 親 在 他 的 房 間 裡 。 EOS\n", - "translation: 我 父 親 在 他 的 房 間 裡 。\n", - "\n", - "BOS the monkey fell from the tree . EOS\n", - "BOS 猴 子 從 樹 上 掉 了 下 來 。 EOS\n", - "translation: 猴 子 從 樹 上 掉 了 下 來 。\n", - "\n", - "BOS she asked a very good question . EOS\n", - "BOS 她 問 了 一 個 非 常 好 的 問 題 。 EOS\n", - "translation: 她 問 了 一 個 非 常 好 的 問 題 。\n", - "\n", - "BOS just take my word for it . EOS\n", - "BOS 請 相 信 我 的 話 。 EOS\n", - "translation: 請 幫 我 這 個 包 裹 。\n", - "\n", - "BOS the young man is a doctor . EOS\n", - "BOS 这 个 年 轻 人 是 医 生 。 EOS\n", - "translation: 這 個 年 輕 的 女 人 長 醫 生 長 。\n", - "\n", - "BOS he played the part of hamlet . EOS\n", - "BOS 他 扮 演 哈 姆 雷 特 的 角 色 。 EOS\n", - "translation: 他 扮 演 哈 姆 雷 特 的 角 色 。\n", - "\n", - "BOS did you bring a hair dryer ? EOS\n", - "BOS 你 吹 風 機 帶 來 了 嗎 ? EOS\n", - "translation: 你 有 帶 吹 風 機 嗎 ?\n", - "\n", - "BOS we gather here once a week . EOS\n", - "BOS 我 们 每 周 在 这 儿 聚 一 次 。 EOS\n", - "translation: 我 們 每 個 星 期 一 來 一 次 這 裡 。\n", - "\n", - "BOS that white building is a hospital . EOS\n", - "BOS 那 棟 白 色 的 建 築 物 是 一 家 醫 院 。 EOS\n", - "translation: 那 棟 白 色 的 建 築 物 是 一 家 醫 院 。\n", - "\n", - "BOS something is wrong with my watch . EOS\n", - "BOS 我 的 錶 出 了 毛 病 。 EOS\n", - "translation: 我 的 錶 壞 了 。\n", - "\n", - "BOS we have to do our best . EOS\n", - "BOS 我 们 应 该 做 到 最 好 。 EOS\n", - "translation: 我 们 必 须 做 到 最 好 。\n", - "\n", - "BOS they all laughed at his jokes . EOS\n", - "BOS 他 們 全 都 被 他 的 笑 話 逗 笑 了 。 EOS\n", - "translation: 他 們 全 都 被 他 的 笑 話 逗 笑 了 。\n", - "\n", - "BOS he can speak a little english . EOS\n", - "BOS 他 會 講 一 點 點 英 語 。 EOS\n", - "translation: 他 會 講 一 點 點 英 語 。\n", - "\n", - "BOS please do n't speak so fast . EOS\n", - "BOS 请 不 要 说 得 那 么 快 。 EOS\n", - "translation: 請 不 要 說 不 要 這 麼 快 樂 。\n", - "\n", - "BOS can you stay for a while ? EOS\n", - "BOS 你 能 待 一 会 吗 ? EOS\n", - "translation: 你 能 待 一 会 儿 吗 ?\n", - "\n", - "BOS i am 30 years old now . EOS\n", - "BOS 我 现 在 3 0 岁 了 。 EOS\n", - "translation: 我 现 在 3 0 岁 了 。\n", - "\n", - "BOS the cat is watching the fish . EOS\n", - "BOS 猫 看 着 鱼 。 EOS\n", - "translation: 猫 看 着 鱼 。\n", - "\n", - "BOS i am a citizen of UNK . EOS\n", - "BOS 我 是 UNK 幌 的 市 民 。 EOS\n", - "translation: 我 是 幌 的 市 民 。\n", - "\n", - "BOS the police broke up the fight . EOS\n", - "BOS 警 察 UNK 散 了 這 場 鬥 UNK 。 EOS\n", - "translation: 警 方 發 生 了 後 獲 侵 犯 。\n", - "\n", - "BOS you 're too UNK about everything . EOS\n", - "BOS 你 对 什 么 都 太 怀 疑 了 。 EOS\n", - "translation: 你 太 生 意 用 完 成 。\n", - "\n", - "BOS did the police find any UNK ? EOS\n", - "BOS 警 察 找 到 指 UNK 了 吗 ? EOS\n", - "translation: 警 察 找 到 警 察 正 確 的 嗎 ?\n", - "\n", - "BOS i am UNK with my job . EOS\n", - "BOS 我 對 我 的 工 作 感 到 滿 意 。 EOS\n", - "translation: 我 對 我 的 工 作 感 到 無 關 。\n", - "\n", - "BOS we spent the weekend with friends . EOS\n", - "BOS 我 們 和 朋 友 一 起 度 過 週 末 。 EOS\n", - "translation: 我 們 和 朋 友 一 起 度 過 週 末 。\n", - "\n", - "BOS i 'll let tom tell you . EOS\n", - "BOS 我 会 让 汤 姆 告 诉 你 。 EOS\n", - "translation: 我 会 让 汤 姆 告 诉 你 。\n", - "\n", - "BOS have you cleaned your room yet ? EOS\n", - "BOS 你 打 掃 你 的 房 間 了 嗎 ? EOS\n", - "translation: 你 把 窗 戶 打 成 了 嗎 ?\n", - "\n", - "BOS how many pens do you have ? EOS\n", - "BOS 你 有 多 少 支 铅 笔 ? EOS\n", - "translation: 你 有 多 少 錢 ?\n", - "\n", - "BOS she put the magazine on the table . EOS\n", - "BOS 她 把 雜 誌 放 在 桌 上 。 EOS\n", - "translation: 她 把 雜 誌 放 在 桌 上 。\n", - "\n", - "BOS hey , what are you doing here ? EOS\n", - "BOS 嘿 , 你 在 這 做 什 麼 ? EOS\n", - "translation: 嘿 , 你 在 這 裡 做 什 麼 ?\n", - "\n", - "BOS he 's not very strict about this . EOS\n", - "BOS 他 在 这 方 面 不 是 很 严 格 。 EOS\n", - "translation: 他 不 在 这 方 面 。\n", - "\n", - "BOS she is fond of singing old songs . EOS\n", - "BOS 她 喜 歡 唱 老 歌 。 EOS\n", - "translation: 她 喜 歡 唱 老 歌 。\n", - "\n", - "BOS he had kept the secret to himself . EOS\n", - "BOS 他 保 守 著 這 個 秘 密 。 EOS\n", - "translation: 他 失 败 了 自 己 。\n", - "\n", - "BOS he graduated from harvard university with honors . EOS\n", - "BOS 他 光 榮 地 從 哈 佛 大 學 畢 業 了 。 EOS\n", - "translation: 他 从 哈 佛 大 学 畢 業 了 。\n", - "\n", - "BOS tom started dating mary three months ago . EOS\n", - "BOS 汤 姆 三 个 月 前 开 始 和 玛 丽 约 会 。 EOS\n", - "translation: 汤 姆 三 个 月 前 跟 玛 丽 约 会 。\n", - "\n", - "BOS what do you usually eat for lunch ? EOS\n", - "BOS 你 一 般 中 午 饭 吃 什 么 ? EOS\n", - "translation: 你 经 常 打 算 吃 什 么 ?\n", - "\n", - "BOS that 's a bad day for me . EOS\n", - "BOS 那 天 我 不 行 。 EOS\n", - "translation: 那 天 我 不 行 。\n", - "\n", - "BOS i took a picture of my family . EOS\n", - "BOS 我 為 我 的 家 人 拍 了 照 片 。 EOS\n", - "translation: 我 為 一 張 我 家 福 照 片 專 輯 。\n", - "\n", - "BOS only four horses were in the race . EOS\n", - "BOS 只 有 四 匹 馬 參 加 了 比 賽 。 EOS\n", - "translation: 只 有 四 匹 馬 參 加 了 比 賽 。\n", - "\n", - "BOS tom had a heart attack last year . EOS\n", - "BOS 汤 姆 去 年 得 了 心 脏 病 。 EOS\n", - "translation: 汤 姆 去 年 得 很 心 脏 心 地 方 。\n", - "\n", - "BOS she spread the butter on the bread . EOS\n", - "BOS 她 把 奶 油 塗 在 麵 包 上 。 EOS\n", - "translation: 她 把 奶 油 塗 在 麵 包 上 。\n", - "\n", - "BOS karuizawa is famous as a summer UNK . EOS\n", - "BOS 輕 井 澤 是 著 名 的 避 暑 勝 地 。 EOS\n", - "translation: 輕 井 澤 是 著 名 的 避 免 。\n", - "\n", - "BOS i will give you whatever you want . EOS\n", - "BOS 我 會 給 你 任 何 你 想 要 的 東 西 。 EOS\n", - "translation: 我 會 給 你 任 何 你 想 要 的 東 西 。\n", - "\n", - "BOS women UNK to live longer than men . EOS\n", - "BOS 女 人 往 往 比 男 人 活 得 更 長 。 EOS\n", - "translation: 女 人 活 得 比 , 以 前 更 久 不 同 一 样 。\n", - "\n", - "BOS they do n't seem to be americans . EOS\n", - "BOS 他 們 似 乎 不 是 美 國 人 。 EOS\n", - "translation: 他 們 似 乎 不 是 美 國 人 。\n", - "\n", - "BOS the cough UNK has a UNK UNK . EOS\n", - "BOS 咳 嗽 糖 UNK 有 股 甘 草 的 味 道 。 EOS\n", - "translation: 咳 嗽 糖 。\n", - "\n", - "BOS ask him if he can speak japanese . EOS\n", - "BOS 问 问 他 会 不 会 说 日 语 。 EOS\n", - "translation: 问 他 会 不 会 说 日 语 。\n", - "\n", - "BOS come here by ten at the latest . EOS\n", - "BOS 最 晚 十 點 前 來 這 裡 。 EOS\n", - "translation: 最 晚 十 點 前 來 這 裡 。\n", - "\n", - "BOS my brother gave me a cute doll . EOS\n", - "BOS 我 哥 哥 給 了 我 一 個 可 愛 的 娃 娃 。 EOS\n", - "translation: 我 哥 哥 給 了 我 一 個 可 愛 的 娃 。\n", - "\n", - "BOS i was a student at that time . EOS\n", - "BOS 我 当 时 是 学 生 。 EOS\n", - "translation: 我 当 时 是 学 生 。\n", - "\n", - "BOS she had the nerve to speak out . EOS\n", - "BOS 她 竟 敢 說 出 來 。 EOS\n", - "translation: 她 有 膽 量 說 出 來 。\n", - "\n", - "BOS a friend of mine is studying abroad . EOS\n", - "BOS 我 有 一 位 朋 友 在 國 外 留 學 。 EOS\n", - "translation: 我 的 一 個 朋 友 在 國 外 裡 。\n", - "\n", - "BOS i get along with my younger brother . EOS\n", - "BOS 我 與 我 的 弟 弟 相 處 融 洽 。 EOS\n", - "translation: 我 和 我 的 兄 弟 相 處 融 洽 。\n", - "\n", - "BOS this ticket is good for three days . EOS\n", - "BOS 這 張 票 的 有 效 期 是 三 天 。 EOS\n", - "translation: 這 張 票 的 有 三 天 。\n", - "\n", - "BOS i gave careful consideration to the problem . EOS\n", - "BOS 我 仔 細 地 考 慮 了 這 個 問 題 。 EOS\n", - "translation: 我 仔 細 地 考 慮 了 這 個 問 題 。\n", - "\n", - "BOS jealousy was the UNK for the murder . EOS\n", - "BOS 嫉 妒 是 謀 殺 的 動 機 。 EOS\n", - "translation: 嫉 妒 是 謀 殺 的 動 物 。\n", - "\n", - "BOS i do not allow sleeping in class . EOS\n", - "BOS 我 不 允 许 有 人 在 课 上 睡 觉 。 EOS\n", - "translation: 我 不 允 许 有 人 在 课 上 睡 觉 。\n", - "\n", - "BOS i made some mistakes on the test . EOS\n", - "BOS 我 在 考 试 时 犯 了 些 错 。 EOS\n", - "translation: 我 在 考 试 时 犯 了 些 错 。\n", - "\n", - "BOS move the chair UNK to the desk . EOS\n", - "BOS 把 椅 子 UNK 一 UNK 靠 近 桌 子 。 EOS\n", - "translation: 桌 上 向 椅 子 靠 一 張 桌 子 。\n", - "\n", - "BOS he had no luck in finding work . EOS\n", - "BOS 他 不 幸 找 不 到 工 作 。 EOS\n", - "translation: 他 無 法 通 過 工 作 。\n", - "\n", - "BOS my brother is a high school student . EOS\n", - "BOS 我 哥 哥 是 個 高 中 生 。 EOS\n", - "translation: 我 哥 哥 是 個 高 中 生 。\n", - "\n", - "BOS tom did n't write back to mary . EOS\n", - "BOS 汤 姆 没 给 玛 丽 写 回 复 。 EOS\n", - "translation: 汤 姆 没 给 玛 丽 写 信 。\n", - "\n", - "BOS the meaning of this sentence is UNK . EOS\n", - "BOS 这 句 句 子 意 思 模 糊 。 EOS\n", - "translation: 这 句 句 子 意 思 模 糊 。\n", - "\n", - "BOS i try not to think about it . EOS\n", - "BOS 我 試 著 不 去 想 了 。 EOS\n", - "translation: 我 試 著 不 試 看 。\n", - "\n", - "BOS i do n't worry about the risk . EOS\n", - "BOS 我 不 担 心 风 险 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 不 担 心 风 险 。\n", - "\n", - "BOS i 'm as hungry as a horse . EOS\n", - "BOS 我 餓 得 像 匹 馬 。 EOS\n", - "translation: 我 餓 得 像 匹 馬 。\n", - "\n", - "BOS we 'll save a seat for you . EOS\n", - "BOS 我 们 会 给 你 留 个 位 置 。 EOS\n", - "translation: 我 们 会 给 你 留 个 位 置 。\n", - "\n", - "BOS it was been raining since early morning . EOS\n", - "BOS 從 清 晨 開 始 一 直 下 雨 。 EOS\n", - "translation: 從 清 晨 開 始 一 直 下 雨 。\n", - "\n", - "BOS i had a nice chat with her . EOS\n", - "BOS 我 和 她 聊 得 很 愉 快 。 EOS\n", - "translation: 我 和 她 聊 起 來 很 好 。\n", - "\n", - "BOS i put the money into the safe . EOS\n", - "BOS 我 把 錢 放 入 保 險 櫃 裡 。 EOS\n", - "translation: 我 把 錢 放 在 安 險 裡 。\n", - "\n", - "BOS have you ever climbed mt . UNK ? EOS\n", - "BOS 你 曾 爬 過 槍 岳 嗎 ? EOS\n", - "translation: 你 曾 爬 過 槍 岳 嗎 ?\n", - "\n", - "BOS my mother made me take some medicine . EOS\n", - "BOS 我 媽 媽 讓 我 吃 點 藥 。 EOS\n", - "translation: 我 媽 媽 讓 我 吃 點 藥 。\n", - "\n", - "BOS this is going to be very expensive . EOS\n", - "BOS 这 要 花 很 多 钱 。 EOS\n", - "translation: 这 要 花 很 多 钱 。\n", - "\n", - "BOS let me know where you 're staying . EOS\n", - "BOS 讓 我 知 道 你 住 在 哪 裡 。 EOS\n", - "translation: 讓 我 知 道 你 住 在 哪 裡 。\n", - "\n", - "BOS i 'm sorry i did n't call . EOS\n", - "BOS 我 很 抱 歉 我 没 有 打 电 话 。 EOS\n", - "translation: 我 很 抱 歉 没 打 电 话 。\n", - "\n", - "BOS he did not speak unless spoken to . EOS\n", - "BOS 除 非 有 人 跟 他 說 話 , 他 不 說 話 。 EOS\n", - "translation: 除 非 有 人 說 話 , 他 不 說 話 。\n", - "\n", - "BOS she spoke UNK a word of english . EOS\n", - "BOS 她 几 乎 不 说 英 语 。 EOS\n", - "translation: 她 說 話 了 英 語 。\n", - "\n", - "BOS i will take you for a swim . EOS\n", - "BOS 我 會 帶 你 去 游 泳 。 EOS\n", - "translation: 我 會 幫 你 去 游 泳 。\n", - "\n", - "BOS get it done as soon as possible . EOS\n", - "BOS 盡 快 把 它 完 成 。 EOS\n", - "translation: 尽 早 做 得 很 快 地 做 。\n", - "\n", - "BOS i got a letter from her today . EOS\n", - "BOS 我 今 天 收 到 了 她 的 信 。 EOS\n", - "translation: 我 今 天 收 到 她 的 信 。\n", - "\n", - "BOS she UNK with a piece of paper . EOS\n", - "BOS 她 摸 索 著 一 張 紙 。 EOS\n", - "translation: 她 用 一 張 紙 寫 作 。\n", - "\n", - "BOS why did you stay at home yesterday ? EOS\n", - "BOS 你 昨 天 為 甚 麼 在 家 ? EOS\n", - "translation: 你 為 什 麼 在 家 裡 留 下 來 的 ?\n", - "\n", - "BOS can you explain why you were late ? EOS\n", - "BOS 你 能 解 釋 一 下 你 為 什 麼 遲 到 嗎 ? EOS\n", - "translation: 你 能 解 釋 一 下 你 為 什 麼 遲 到 嗎 ?\n", - "\n", - "BOS do n't get involved with that guy . EOS\n", - "BOS 別 和 這 個 人 打 交 道 。 EOS\n", - "translation: 別 和 這 個 人 打 交 道 。\n", - "\n", - "BOS his second son married and settled down . EOS\n", - "BOS 他 的 第 二 個 兒 子 結 婚 並 定 居 下 來 了 。 EOS\n", - "translation: 他 的 儿 子 和 小 孩 結 婚 了 。\n", - "\n", - "BOS i do n't know much about computers . EOS\n", - "BOS 我 對 電 腦 知 道 的 不 多 。 EOS\n", - "translation: 我 不 知 道 這 個 簽 上 。\n", - "\n", - "BOS it became dark before i knew it . EOS\n", - "BOS 我 不 知 道 天 色 變 暗 了 。 EOS\n", - "translation: 我 不 知 道 天 黑 暗 中 生 活 。\n", - "\n", - "BOS he 's a UNK for beautiful women . EOS\n", - "BOS 他 非 常 喜 歡 漂 亮 的 女 人 。 EOS\n", - "translation: 他 是 个 美 丽 的 女 人 。\n", - "\n", - "BOS he made me sing on the stage . EOS\n", - "BOS 他 讓 我 在 舞 台 上 唱 歌 。 EOS\n", - "translation: 他 讓 我 在 舞 台 上 唱 歌 。\n", - "\n", - "BOS i was delayed by a traffic jam . EOS\n", - "BOS 我 被 交 通 堵 塞 耽 UNK 了 。 EOS\n", - "translation: 我 被 交 通 堵 塞 耽 速 了 。\n", - "\n", - "BOS the sky is clear almost every day . EOS\n", - "BOS 天 空 幾 乎 每 天 是 晴 朗 的 。 EOS\n", - "translation: 天 空 幾 乎 每 天 都 是 晴 朗 的 。\n", - "\n", - "BOS please keep an eye on my suitcase . EOS\n", - "BOS 請 留 神 看 著 我 的 手 提 箱 。 EOS\n", - "translation: 請 留 一 張 行 李 的 行 李 。\n", - "\n", - "BOS i got her to clean my room . EOS\n", - "BOS 我 讓 她 清 掃 了 我 的 房 間 。 EOS\n", - "translation: 我 讓 她 打 掃 我 的 房 間 。\n", - "\n", - "BOS i will teach you to play chess . EOS\n", - "BOS 我 會 教 你 下 棋 。 EOS\n", - "translation: 我 會 教 你 下 棋 。\n", - "\n", - "BOS would you like me to explain it ? EOS\n", - "BOS 你 要 我 解 釋 一 下 嗎 ? EOS\n", - "translation: 你 愿 意 让 我 解 释 这 个 吗 ?\n", - "\n", - "BOS i heard a knock at the door . EOS\n", - "BOS 我 聽 到 了 敲 門 聲 。 EOS\n", - "translation: 我 听 到 敲 门 口 。\n", - "\n", - "BOS tom managed to find a new job . EOS\n", - "BOS 汤 姆 找 到 了 新 工 作 。 EOS\n", - "translation: 汤 姆 能 找 到 这 份 工 作 。\n", - "\n", - "BOS i brush my teeth twice a day . EOS\n", - "BOS 我 一 天 刷 兩 次 牙 。 EOS\n", - "translation: 我 每 天 至 少 去 两 次 牙 医 。\n", - "\n", - "BOS i was very confused by his questions . EOS\n", - "BOS 我 對 他 的 問 題 感 到 很 困 惑 。 EOS\n", - "translation: 我 對 他 的 問 題 非 常 困 惑 。\n", - "\n", - "BOS attack is the best form of UNK . EOS\n", - "BOS 進 攻 是 最 好 的 防 UNK 。 EOS\n", - "translation: 進 攻 是 最 好 的 防 微 迎 。\n", - "\n", - "BOS he graduated from high school this spring . EOS\n", - "BOS 今 年 春 天 他 從 高 中 畢 業 了 。 EOS\n", - "translation: 今 年 春 天 他 從 高 中 畢 業 了 。\n", - "\n", - "BOS there was n't a soul in sight . EOS\n", - "BOS 一 個 人 影 也 看 不 到 。 EOS\n", - "translation: 一 個 人 影 也 看 不 到 。\n", - "\n", - "BOS everyone in the town knows about it . EOS\n", - "BOS 鎮 上 的 每 個 人 都 知 道 它 。 EOS\n", - "translation: 大 家 都 知 道 這 個 城 市 是 區 。\n", - "\n", - "BOS japan is confronted with severe economic problems . EOS\n", - "BOS 日 本 正 面 臨 著 嚴 重 的 經 濟 問 題 。 EOS\n", - "translation: 日 本 正 面 臨 著 嚴 重 的 經 濟 問 題 。\n", - "\n", - "BOS i got sick from drinking too much . EOS\n", - "BOS 因 為 喝 酒 喝 太 多 , 所 以 我 生 病 了 。 EOS\n", - "translation: 我 受 够 喝 酒 喝 醉 了 。\n", - "\n", - "BOS do n't you know what happened yesterday ? EOS\n", - "BOS 你 不 知 道 昨 天 發 生 什 麼 事 嗎 ? EOS\n", - "translation: 你 不 知 道 昨 天 發 生 什 麼 事 嗎 ?\n", - "\n", - "BOS tokyo is the largest city in japan . EOS\n", - "BOS 東 京 是 日 本 最 大 的 城 市 。 EOS\n", - "translation: 東 京 是 日 本 最 大 的 城 市 。\n", - "\n", - "BOS i have almost no money with me . EOS\n", - "BOS 我 身 上 幾 乎 沒 有 錢 。 EOS\n", - "translation: 我 身 上 幾 乎 沒 有 錢 。\n", - "\n", - "BOS there 's nothing else we can do . EOS\n", - "BOS 没 有 我 们 能 还 做 的 事 。 EOS\n", - "translation: 我 们 什 么 也 做 不 了 。\n", - "\n", - "BOS i buy UNK every sunday after church . EOS\n", - "BOS 我 每 个 星 期 日 礼 拜 完 都 买 甜 甜 圈 。 EOS\n", - "translation: 我 每 個 星 期 日 礼 拜 買 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 甜 購 。\n", - "\n", - "BOS do you have change for a dollar ? EOS\n", - "BOS 你 有 零 錢 換 一 元 美 金 嗎 ? EOS\n", - "translation: 你 有 零 錢 換 美 金 嗎 ?\n", - "\n", - "BOS i take a bath every other day . EOS\n", - "BOS 我 每 兩 天 洗 一 次 澡 。 EOS\n", - "translation: 我 每 天 洗 一 次 澡 。\n", - "\n", - "BOS i was waiting for something to happen . EOS\n", - "BOS 我 在 等 事 情 發 生 。 EOS\n", - "translation: 我 在 等 事 情 發 生 。\n", - "\n", - "BOS he wanted to get his shirts washed . EOS\n", - "BOS 他 想 要 把 他 的 襯 衫 洗 乾 淨 。 EOS\n", - "translation: 他 想 要 把 他 的 襯 衫 洗 乾 淨 。\n", - "\n", - "BOS i had a long talk with her . EOS\n", - "BOS 我 和 她 有 一 段 長 談 。 EOS\n", - "translation: 我 和 她 在 一 起 遇 見 了 很 長 談 。\n", - "\n", - "BOS we must keep up the family UNK . EOS\n", - "BOS 我 们 必 须 保 持 家 庭 传 统 。 EOS\n", - "translation: 我 们 必 须 把 家 庭 传 给 家 。\n", - "\n", - "BOS he knows almost nothing about that animal . EOS\n", - "BOS 他 幾 乎 對 那 個 動 物 一 無 所 知 。 EOS\n", - "translation: 他 差 點 知 道 那 個 動 物 一 切 。\n", - "\n", - "BOS what is done can not be undone . EOS\n", - "BOS 覆 水 難 收 。 EOS\n", - "translation: 覆 水 難 收 。\n", - "\n", - "BOS i studied english when i was there . EOS\n", - "BOS 當 我 在 那 裡 的 時 候 , 我 學 習 英 語 。 EOS\n", - "translation: 當 我 在 那 裡 的 時 候 , 英 語 學 習 英 語 。\n", - "\n", - "BOS the smell of food made me hungry . EOS\n", - "BOS 食 物 的 味 道 讓 我 餓 了 。 EOS\n", - "translation: 這 食 物 的 味 道 讓 我 餓 了 。\n", - "\n", - "BOS the police will put you in prison . EOS\n", - "BOS 警 方 將 把 你 關 在 監 獄 裡 。 EOS\n", - "translation: 警 方 把 你 關 在 監 獄 裡 的 。\n", - "\n", - "BOS i do n't know where she lives . EOS\n", - "BOS 我 不 知 道 她 住 在 哪 裡 。 EOS\n", - "translation: 我 不 知 道 她 住 在 哪 裡 。\n", - "\n", - "BOS pull the UNK up by the UNK . EOS\n", - "BOS 從 根 部 把 植 物 拔 出 來 。 EOS\n", - "translation: 根 據 指 外 面 被 用 来 。\n", - "\n", - "BOS i do n't feel like working today . EOS\n", - "BOS 我 今 天 不 想 上 班 。 EOS\n", - "translation: 我 今 天 不 想 上 班 。\n", - "\n", - "BOS japan imports various raw materials from abroad . EOS\n", - "BOS 日 本 從 國 外 進 口 各 種 原 料 。 EOS\n", - "translation: 日 本 從 國 外 進 口 各 種 原 料 。\n", - "\n", - "BOS the picture is UNK on the wall . EOS\n", - "BOS 畫 掛 在 牆 上 。 EOS\n", - "translation: 這 張 照 片 在 牆 上 。\n", - "\n", - "BOS he lost his eyesight in the accident . EOS\n", - "BOS 他 在 意 外 中 失 明 了 。 EOS\n", - "translation: 他 在 意 外 中 失 去 了 他 的 視 力 。\n", - "\n", - "BOS it is good to be a UNK . EOS\n", - "BOS 做 个 赢 家 很 好 。 EOS\n", - "translation: 这 是 个 好 人 。\n", - "\n", - "BOS he said that it was nine o'clock . EOS\n", - "BOS 他 说 九 点 了 。 EOS\n", - "translation: 他 说 九 點 鐘 很 在 九 點 鐘 。\n", - "\n", - "BOS he hung a lamp from the ceiling . EOS\n", - "BOS 他 把 一 UNK 灯 挂 在 了 天 花 板 上 。 EOS\n", - "translation: 他 把 一 點 的 燈 阳 錢 放 在 天 上 。\n", - "\n", - "BOS the admission is ten dollars a person . EOS\n", - "BOS 入 場 費 一 個 人 1 0 美 元 。 EOS\n", - "translation: 十 美 元 在 一 個 美 國 人 。\n", - "\n", - "BOS could you wrap this UNK , please ? EOS\n", - "BOS 請 你 分 開 包 裝 好 嗎 ? EOS\n", - "translation: 請 你 開 包 裝 好 嗎 ?\n", - "\n", - "BOS i do n't want to drink anything . EOS\n", - "BOS 我 什 么 都 不 想 喝 。 EOS\n", - "translation: 我 什 麼 都 不 想 喝 。\n", - "\n", - "BOS let me show you around our house . EOS\n", - "BOS 讓 我 帶 你 四 處 看 看 我 們 的 房 子 。 EOS\n", - "translation: 讓 我 帶 你 四 處 看 看 看 看 我 們 的 房 子 。\n", - "\n", - "BOS he visited her house the other day . EOS\n", - "BOS 他 前 幾 天 拜 訪 了 她 家 。 EOS\n", - "translation: 他 前 幾 天 拜 訪 了 她 家 。\n", - "\n", - "BOS he went to new york on business . EOS\n", - "BOS 他 去 紐 約 出 差 了 。 EOS\n", - "translation: 他 去 紐 約 出 差 。\n", - "\n", - "BOS he 's a student at this college . EOS\n", - "BOS 他 是 這 所 大 學 的 學 生 。 EOS\n", - "translation: 他 是 这 个 大 学 生 。\n", - "\n", - "BOS tom is anxious to know the result . EOS\n", - "BOS 汤 姆 急 着 想 知 道 结 果 。 EOS\n", - "translation: 汤 姆 急 忙 和 玛 丽 失 望 。\n", - "\n", - "BOS father bought me the latest model motorcycle . EOS\n", - "BOS 父 親 給 我 買 了 最 新 型 的 摩 托 車 。 EOS\n", - "translation: 父 親 買 了 最 新 型 給 我 。\n", - "\n", - "BOS do you think animals have a soul ? EOS\n", - "BOS 你 认 为 动 物 有 灵 魂 吗 ? EOS\n", - "translation: 你 认 为 动 物 有 灵 魂 吗 ?\n", - "\n", - "BOS UNK enjoyed big game hunting in africa . EOS\n", - "BOS 海 明 威 喜 歡 在 非 洲 的 大 UNK 獵 。 EOS\n", - "translation: 非 洲 的 年 輕 很 大 狗 喜 歡 戲 。\n", - "\n", - "BOS i am not always free on sundays . EOS\n", - "BOS 我 星 期 日 並 不 總 是 有 空 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 星 期 日 並 不 總 是 有 空 。\n", - "\n", - "BOS i saw him swim across the river . EOS\n", - "BOS 我 看 見 他 游 過 了 河 。 EOS\n", - "translation: 我 看 見 他 游 過 了 河 。\n", - "\n", - "BOS he likes watching baseball games on tv . EOS\n", - "BOS 他 喜 歡 看 電 視 上 的 棒 球 比 賽 。 EOS\n", - "translation: 他 喜 歡 看 電 視 上 的 棒 球 比 賽 。\n", - "\n", - "BOS many people were killed in the war . EOS\n", - "BOS 很 多 人 在 戰 爭 中 被 殺 。 EOS\n", - "translation: 許 多 人 死 於 戰 爭 議 。\n", - "\n", - "BOS please add my name to the list . EOS\n", - "BOS 請 把 我 的 名 字 加 在 名 單 上 。 EOS\n", - "translation: 請 在 名 單 上 加 上 我 的 名 字 。\n", - "\n", - "BOS they drive on the left in england . EOS\n", - "BOS 在 英 國 開 車 要 靠 左 行 駛 。 EOS\n", - "translation: 在 英 國 留 下 車 左 開 車 。\n", - "\n", - "BOS this food does not agree with me . EOS\n", - "BOS 这 食 物 不 适 合 我 。 EOS\n", - "translation: 这 食 物 不 同 意 我 身 。\n", - "\n", - "BOS his name is not on the list . EOS\n", - "BOS 他 的 名 字 不 在 名 单 里 。 EOS\n", - "translation: 他 的 名 字 不 在 名 单 里 。\n", - "\n", - "BOS he gave us the signal to begin . EOS\n", - "BOS 他 給 了 我 們 信 號 讓 我 們 開 始 。 EOS\n", - "translation: 他 給 了 我 們 開 始 的 信 號 。\n", - "\n", - "BOS the fire UNK the house to UNK . EOS\n", - "BOS 房 子 被 大 火 烧 成 了 灰 UNK 。 EOS\n", - "translation: 火 房 間 被 大 火 車 停 了 。\n", - "\n", - "BOS there 's no one in the room . EOS\n", - "BOS 沒 有 人 在 房 間 裡 。 EOS\n", - "translation: 房 間 裡 沒 有 人 。\n", - "\n", - "BOS he grew up in a little village . EOS\n", - "BOS 他 在 一 個 小 村 莊 裡 長 大 。 EOS\n", - "translation: 他 在 一 個 村 莊 裡 長 大 。\n", - "\n", - "BOS he gave his life for his country . EOS\n", - "BOS 他 把 他 的 一 生 UNK 給 了 他 的 國 家 。 EOS\n", - "translation: 他 為 自 己 的 國 家 。\n", - "\n", - "BOS i wish tom could 've been there . EOS\n", - "BOS 我 希 望 汤 姆 能 在 那 里 。 EOS\n", - "translation: 我 希 望 湯 姆 能 在 那 裡 。\n", - "\n", - "BOS i fed the leftovers to my dog . EOS\n", - "BOS 我 把 剩 下 的 东 西 给 我 的 狗 吃 。 EOS\n", - "translation: 我 把 剩 下 的 东 西 吃 了 。\n", - "\n", - "BOS i got him to fix my bicycle . EOS\n", - "BOS 我 讓 他 修 理 了 我 的 腳 踏 車 。 EOS\n", - "translation: 我 讓 他 修 理 我 的 腳 踏 車 。\n", - "\n", - "BOS he introduced me to a pretty girl . EOS\n", - "BOS 他 把 我 介 紹 給 了 一 個 漂 亮 的 女 孩 。 EOS\n", - "translation: 他 把 我 介 紹 給 了 一 個 漂 亮 的 女 孩 。\n", - "\n", - "BOS someone has taken my shoes by mistake . EOS\n", - "BOS 有 人 拿 错 了 我 的 鞋 。 EOS\n", - "translation: 有 人 拿 错 了 我 的 鞋 。\n", - "\n", - "BOS i spent all day in the library . EOS\n", - "BOS 我 整 天 待 在 图 书 馆 。 EOS\n", - "translation: 我 整 天 在 图 书 馆 。\n", - "\n", - "BOS i had a good opinion of her . EOS\n", - "BOS 我 對 她 的 評 價 很 好 。 EOS\n", - "translation: 我 听 到 她 好 意 見 。\n", - "\n", - "BOS the speaker 's UNK were highly UNK . EOS\n", - "BOS 发 言 人 的 评 论 极 有 攻 击 性 。 EOS\n", - "translation: 发 言 人 的 言 人 有 攻 击 性 。\n", - "\n", - "BOS my aunt made me a new skirt . EOS\n", - "BOS 我 舅 母 做 了 一 條 新 裙 子 給 我 。 EOS\n", - "translation: 我 姑 姑 做 了 一 條 新 裙 子 給 我 。\n", - "\n", - "BOS your UNK means a lot to me . EOS\n", - "BOS 你 的 友 誼 對 我 來 說 意 義 重 大 。 EOS\n", - "translation: 你 的 友 誼 對 我 來 說 意 義 重 大 。\n", - "\n", - "BOS would you please lend me some money ? EOS\n", - "BOS 你 能 借 我 些 钱 吗 ? EOS\n", - "translation: 你 可 以 借 我 一 些 錢 嗎 ?\n", - "\n", - "BOS i still have n't heard from him . EOS\n", - "BOS 我 還 沒 收 到 他 的 信 。 EOS\n", - "translation: 我 還 沒 有 聽 到 他 的 消 息 。\n", - "\n", - "BOS in UNK , many flowers come out . EOS\n", - "BOS 許 多 花 在 三 月 份 UNK 放 。 EOS\n", - "translation: 許 多 花 在 三 份 花 瓶 出 去 。\n", - "\n", - "BOS if you do n't understand , ask . EOS\n", - "BOS 如 果 你 不 懂 , 那 就 问 。 EOS\n", - "translation: 如 果 你 不 懂 , 那 就 问 。\n", - "\n", - "BOS she is tom ’ s older sister . EOS\n", - "BOS 她 是 T o m 的 姐 姐 。 EOS\n", - "translation: 她 是 T o m 的 姐 。\n", - "\n", - "BOS i 'm used to staying up late . EOS\n", - "BOS 我 习 惯 晚 睡 。 EOS\n", - "translation: 我 习 惯 晚 睡 。\n", - "\n", - "BOS we must cancel our trip to japan . EOS\n", - "BOS 我 們 必 須 取 消 我 們 去 日 本 的 旅 行 。 EOS\n", - "translation: 我 們 必 須 取 消 我 們 去 日 本 的 旅 行 。\n", - "\n", - "BOS we managed to get some foreign stamps . EOS\n", - "BOS 我 們 設 法 得 到 一 些 外 國 的 郵 票 。 EOS\n", - "translation: 我 們 設 法 及 時 到 一 次 外 國 習 。\n", - "\n", - "BOS i 'm tired of listening to tom . EOS\n", - "BOS 我 厌 倦 了 听 汤 姆 说 话 。 EOS\n", - "translation: 我 厌 倦 了 听 汤 姆 。\n", - "\n", - "BOS he put the book on the table . EOS\n", - "BOS 他 把 书 放 在 了 桌 上 。 EOS\n", - "translation: 他 把 書 放 在 桌 上 。\n", - "\n", - "BOS you have to leave home at six . EOS\n", - "BOS 你 必 須 在 六 點 鐘 時 從 家 中 出 發 。 EOS\n", - "translation: 你 必 須 在 六 點 鐘 前 離 開 家 。\n", - "\n", - "BOS UNK UNK a great amount of water . EOS\n", - "BOS 农 业 需 要 消 耗 的 大 量 水 。 EOS\n", - "translation: 农 业 需 要 大 量 的 钱 。\n", - "\n", - "BOS i 'm going to take my car . EOS\n", - "BOS 我 将 去 取 我 的 车 。 EOS\n", - "translation: 我 要 洗 車 。\n", - "\n", - "BOS she furnished the room with beautiful furniture . EOS\n", - "BOS 她 用 漂 亮 的 家 具 佈 置 了 房 間 。 EOS\n", - "translation: 她 用 漂 亮 的 家 具 佈 置 了 房 間 。\n", - "\n", - "BOS he knows how to brush his teeth . EOS\n", - "BOS 他 知 道 怎 么 刷 牙 。 EOS\n", - "translation: 他 知 道 怎 么 刷 牙 。\n", - "\n", - "BOS they believe in a life after death . EOS\n", - "BOS 他 們 相 信 死 後 的 生 命 。 EOS\n", - "translation: 他 们 相 信 死 之 前 , 还 是 罪 。\n", - "\n", - "BOS here 's where they usually have dinner . EOS\n", - "BOS 这 儿 是 他 们 通 常 吃 晚 饭 的 地 方 。 EOS\n", - "translation: 他 们 通 常 在 这 里 吃 饭 。\n", - "\n", - "BOS the whole country was covered in snow . EOS\n", - "BOS 整 个 国 家 被 大 雪 覆 盖 了 。 EOS\n", - "translation: 整 個 国 家 被 1 9 點 八 個 地 生 在 雪 。\n", - "\n", - "BOS i do n't care if it snows . EOS\n", - "BOS 我 不 在 乎 是 否 下 雪 。 EOS\n", - "translation: 我 不 在 乎 是 否 下 雪 。\n", - "\n", - "BOS i advised her to come by 9:00 . EOS\n", - "BOS 我 建 議 她 九 點 前 來 。 EOS\n", - "translation: 我 建 議 她 九 點 前 來 。\n", - "\n", - "BOS you people are no fun at all . EOS\n", - "BOS 你 们 这 帮 人 真 没 意 思 。 EOS\n", - "translation: 你 们 一 点 都 不 好 。\n", - "\n", - "BOS i can do it without her help . EOS\n", - "BOS 沒 有 她 的 幫 忙 我 也 能 做 。 EOS\n", - "translation: 沒 有 她 的 幫 助 我 也 能 做 。\n", - "\n", - "BOS i was awfully confused by his question . EOS\n", - "BOS 我 對 他 的 問 題 感 到 非 常 困 惑 。 EOS\n", - "translation: 我 對 他 的 問 題 非 常 困 惑 。\n", - "\n", - "BOS why do you want to leave today ? EOS\n", - "BOS 你 们 为 什 么 想 今 天 走 ? EOS\n", - "translation: 你 為 什 麼 想 今 天 走 ?\n", - "\n", - "BOS tom is a UNK sort of guy . EOS\n", - "BOS 汤 姆 是 个 诚 实 的 男 孩 。 EOS\n", - "translation: 汤 姆 是 个 诚 实 的 男 孩 。\n", - "\n", - "BOS did you bring your family with you ? EOS\n", - "BOS 你 帶 著 家 人 一 起 來 嗎 ? EOS\n", - "translation: 你 帶 著 家 人 一 起 來 嗎 ?\n", - "\n", - "BOS i 'd like to see a doctor . EOS\n", - "BOS 我 想 看 醫 生 。 EOS\n", - "translation: 我 想 看 醫 生 。\n", - "\n", - "BOS which bed do you want to use ? EOS\n", - "BOS 你 想 睡 哪 張 床 ? EOS\n", - "translation: 你 想 睡 哪 張 床 ?\n", - "\n", - "BOS japan depends on other countries for oil . EOS\n", - "BOS 日 本 的 石 油 依 靠 进 口 。 EOS\n", - "translation: 日 本 依 靠 阿 拉 伯 国 家 。\n", - "\n", - "BOS she thought that i was a doctor . EOS\n", - "BOS 她 以 为 我 是 大 夫 。 EOS\n", - "translation: 她 認 為 我 是 個 醫 生 。\n", - "\n", - "BOS i would like to visit new york . EOS\n", - "BOS 我 想 去 紐 約 。 EOS\n", - "translation: 我 想 去 紐 約 。\n", - "\n", - "BOS i paid ten dollars for this cap . EOS\n", - "BOS 我 付 了 十 美 元 買 這 頂 帽 子 。 EOS\n", - "translation: 我 付 了 十 美 元 買 這 頂 帽 子 。\n", - "\n", - "BOS the price of rice has come down . EOS\n", - "BOS 米 价 下 跌 了 。 EOS\n", - "translation: 米 价 下 跌 了 。\n", - "\n", - "BOS i want to buy something to eat . EOS\n", - "BOS 我 想 買 點 東 西 吃 。 EOS\n", - "translation: 我 想 買 點 東 西 吃 。\n", - "\n", - "BOS imagine that you have a time machine . EOS\n", - "BOS 想 象 一 下 , 假 如 你 有 一 台 时 光 机 。 EOS\n", - "translation: 想 象 一 下 , 假 你 有 時 間 。\n", - "\n", - "BOS i took a day off last week . EOS\n", - "BOS 上 週 我 休 了 一 天 的 假 。 EOS\n", - "translation: 上 週 我 休 了 一 天 的 假 。\n", - "\n", - "BOS french has many more UNK than japanese . EOS\n", - "BOS 法 语 的 元 音 比 日 语 的 多 得 多 。 EOS\n", - "translation: 法 语 的 元 音 比 日 语 的 多 少 游 得 多 。\n", - "\n", - "BOS imagination affects every part of our lives . EOS\n", - "BOS 想 像 力 影 响 着 我 们 生 活 的 各 个 方 面 。 EOS\n", - "translation: 想 像 力 病 人 住 在 我 们 家 。\n", - "\n", - "BOS she is collecting UNK for a book . EOS\n", - "BOS 她 为 一 本 书 收 集 材 料 。 EOS\n", - "translation: 她 在 一 本 書 收 集 中 。\n", - "\n", - "BOS my father told me where to go . EOS\n", - "BOS 我 爸 爸 告 诉 我 去 哪 儿 。 EOS\n", - "translation: 我 爸 爸 告 訴 我 去 哪 裡 。\n", - "\n", - "BOS we are supposed to know the rules . EOS\n", - "BOS 我 们 应 该 了 解 相 应 的 规 则 。 EOS\n", - "translation: 我 们 该 了 解 相 应 。\n", - "\n", - "BOS all you can do is to wait . EOS\n", - "BOS 所 有 你 能 做 的 就 是 等 待 。 EOS\n", - "translation: 你 们 全 力 以 等 待 在 等 待 的 事 。\n", - "\n", - "BOS there are no chairs in this room . EOS\n", - "BOS 這 個 房 間 裡 沒 有 椅 子 。 EOS\n", - "translation: 這 個 房 間 裡 沒 有 椅 子 。\n", - "\n", - "BOS let 's not discuss the matter today . EOS\n", - "BOS 今 天 讓 我 們 不 要 討 論 這 件 事 。 EOS\n", - "translation: 今 天 讓 我 們 不 要 討 論 這 件 事 。\n", - "\n", - "BOS he is going to leave tomorrow afternoon . EOS\n", - "BOS 他 將 在 明 天 下 午 離 開 。 EOS\n", - "translation: 他 明 天 下 午 要 離 開 。\n", - "\n", - "BOS can you guess how old i am ? EOS\n", - "BOS 你 能 猜 到 我 的 年 龄 吗 ? EOS\n", - "translation: 你 可 以 我 你 老 先 機 嗎 ?\n", - "\n", - "BOS i feel very sorry for your sister . EOS\n", - "BOS 我 對 你 姐 姐 感 到 非 常 抱 歉 。 EOS\n", - "translation: 對 你 姐 姐 姐 感 到 非 常 遺 憾 。\n", - "\n", - "BOS i 'm looking forward to your visit . EOS\n", - "BOS 我 期 待 著 您 的 光 臨 。 EOS\n", - "translation: 我 期 待 著 您 的 光 臨 。\n", - "\n", - "BOS she was married to a rich man . EOS\n", - "BOS 她 嫁 給 了 一 個 有 錢 的 男 人 。 EOS\n", - "translation: 她 嫁 給 了 一 個 有 錢 的 男 人 。\n", - "\n", - "BOS dogs have a UNK sense of smell . EOS\n", - "BOS 狗 的 嗅 觉 灵 敏 。 EOS\n", - "translation: 狗 有 益 于 心 情 。\n", - "\n", - "BOS why are you so mean to me ? EOS\n", - "BOS 你 为 什 么 对 我 这 么 小 气 ? EOS\n", - "translation: 你 為 什 麼 這 麼 意 思 ?\n", - "\n", - "BOS you do n't need to do this . EOS\n", - "BOS 你 不 需 要 做 这 事 。 EOS\n", - "translation: 你 不 必 這 麼 做 。\n", - "\n", - "BOS do you have a lot of pens ? EOS\n", - "BOS 你 有 很 多 笔 吗 ? EOS\n", - "translation: 你 有 很 多 筆 嗎 ?\n", - "\n", - "BOS i feel like getting some fresh air . EOS\n", - "BOS 我 想 要 呼 吸 一 些 新 鮮 空 氣 。 EOS\n", - "translation: 我 想 要 呼 吸 一 下 新 鮮 空 氣 。\n", - "\n", - "BOS i appreciate your help in UNK this . EOS\n", - "BOS 我 感 谢 你 帮 助 澄 清 。 EOS\n", - "translation: 我 感 謝 你 的 幫 忙 。\n", - "\n", - "BOS we got involved in a traffic accident . EOS\n", - "BOS 我 們 被 捲 入 了 一 場 交 通 事 故 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 們 被 外 面 發 成 了 一 場 事 故 。\n", - "\n", - "BOS she complained that my salary was low . EOS\n", - "BOS 她 抱 怨 我 的 薪 水 很 低 。 EOS\n", - "translation: 她 抱 怨 我 的 工 資 低 。\n", - "\n", - "BOS it is this window that he broke . EOS\n", - "BOS 他 砸 坏 的 是 这 扇 窗 。 EOS\n", - "translation: 他 砸 坏 的 是 这 扇 窗 。\n", - "\n", - "BOS i found your letter in the mailbox . EOS\n", - "BOS 我 在 信 箱 中 發 現 了 你 的 信 件 。 EOS\n", - "translation: 我 在 信 中 發 現 你 的 信 。\n", - "\n", - "BOS they are UNK to kill the king . EOS\n", - "BOS 他 們 正 密 謀 要 殺 害 國 王 。 EOS\n", - "translation: 他 们 受 到 怕 死 。\n", - "\n", - "BOS there 's a hair in my soup . EOS\n", - "BOS 我 的 湯 裡 有 一 根 頭 髮 。 EOS\n", - "translation: 我 的 湯 裡 有 一 根 頭 髮 。\n", - "\n", - "BOS she can speak english , of course . EOS\n", - "BOS 她 會 講 英 語 , 當 然 。 EOS\n", - "translation: 她 會 講 英 語 , 當 然 當 然 當 然 當 然 會 講 英 語 。\n", - "\n", - "BOS i left my briefcase in the bus . EOS\n", - "BOS 我 把 我 的 公 事 包 留 在 公 車 上 了 。 EOS\n", - "translation: 我 把 我 的 公 車 留 在 公 車 上 了 。\n", - "\n", - "BOS have you finished reading that book yet ? EOS\n", - "BOS 你 讀 完 那 本 書 了 嗎 ? EOS\n", - "translation: 你 读 完 那 本 书 了 吗 ?\n", - "\n", - "BOS i 'm happy to see you here . EOS\n", - "BOS 我 很 高 興 在 這 裡 看 到 你 。 EOS\n", - "translation: 我 很 高 興 在 這 裡 看 到 你 。\n", - "\n", - "BOS he took the wrong bus by mistake . EOS\n", - "BOS 他 搭 错 了 车 。 EOS\n", - "translation: 他 搭 錯 誤 車 了 。\n", - "\n", - "BOS the news of his death spread around . EOS\n", - "BOS 他 去 世 的 消 息 傳 遍 各 地 。 EOS\n", - "translation: 他 去 世 的 消 息 傳 開 來 世 了 。\n", - "\n", - "BOS i do hope you 'll come again . EOS\n", - "BOS 我 很 希 望 你 会 再 来 。 EOS\n", - "translation: 我 希 望 你 會 再 來 。\n", - "\n", - "BOS the sun UNK earlier in the winter . EOS\n", - "BOS 在 冬 天 , 太 阳 下 山 比 往 常 更 早 。 EOS\n", - "translation: 在 冬 天 早 上 , 很 早 結 束 。\n", - "\n", - "BOS what were you doing at that time ? EOS\n", - "BOS 當 時 你 在 做 什 麼 ? EOS\n", - "translation: 當 時 你 在 做 什 麼 ?\n", - "\n", - "BOS i 'm not particularly thirsty right now . EOS\n", - "BOS 我 现 在 不 特 别 渴 。 EOS\n", - "translation: 我 不 再 渴 望 是 很 渴 。\n", - "\n", - "BOS i do n't believe such things exist . EOS\n", - "BOS 我 不 相 信 這 樣 的 事 情 存 在 。 EOS\n", - "translation: 我 不 相 信 這 樣 的 事 情 存 在 。\n", - "\n", - "BOS i ordered a pizza on the phone . EOS\n", - "BOS 我 打 电 话 订 了 个 披 萨 。 EOS\n", - "translation: 我 打 电 话 订 了 个 披 萨 。\n", - "\n", - "BOS i got up at seven this morning . EOS\n", - "BOS 我 今 天 早 上 7 点 起 床 。 EOS\n", - "translation: 今 天 早 上 七 點 起 床 。\n", - "\n", - "BOS he did n't mean to hurt you . EOS\n", - "BOS 他 不 是 故 意 要 傷 害 你 。 EOS\n", - "translation: 他 不 是 意 要 傷 害 你 。\n", - "\n", - "BOS he went to stay with his cousin . EOS\n", - "BOS 他 去 和 他 的 表 弟 待 在 一 起 了 。 EOS\n", - "translation: 他 和 他 的 表 弟 待 在 一 起 了 。\n", - "\n", - "BOS UNK take UNK to UNK your teeth . EOS\n", - "BOS 牙 医 用 X 光 检 查 你 的 牙 齿 。 EOS\n", - "translation: 牙 医 用 X 光 检 查 你 的 牙 齿 。\n", - "\n", - "BOS we took strong UNK to prevent it . EOS\n", - "BOS 我 们 采 取 了 强 有 力 的 预 防 措 施 。 EOS\n", - "translation: 我 们 采 取 了 强 有 力 的 预 防 措 施 。\n", - "\n", - "BOS UNK is a city in new zealand . EOS\n", - "BOS 奥 克 兰 是 一 座 新 西 兰 的 城 市 。 EOS\n", - "translation: 奥 克 兰 是 一 座 新 西 兰 的 城 市 。\n", - "\n", - "BOS war may break out at any moment . EOS\n", - "BOS 戰 爭 隨 時 可 能 爆 發 。 EOS\n", - "translation: 戰 爭 隨 時 可 能 爆 發 。\n", - "\n", - "BOS rome is famous for its UNK UNK . EOS\n", - "BOS 羅 馬 以 其 古 代 建 築 而 聞 名 。 EOS\n", - "translation: 罗 马 是 由 风 险 。\n", - "\n", - "BOS she 'll be getting married next year . EOS\n", - "BOS 她 明 年 將 要 結 婚 。 EOS\n", - "translation: 她 明 年 將 結 婚 。\n", - "\n", - "BOS i gave her a lift to town . EOS\n", - "BOS 我 載 她 去 城 裡 了 。 EOS\n", - "translation: 我 載 她 去 城 裡 了 。\n", - "\n", - "BOS i think she 's an honest woman . EOS\n", - "BOS 我 认 为 她 是 一 个 诚 实 的 女 人 。 EOS\n", - "translation: 我 認 為 她 是 一 個 忠 告 實 女 人 。\n", - "\n", - "BOS we had a slight difference of opinion . EOS\n", - "BOS 我 們 的 看 法 有 一 點 不 同 。 EOS\n", - "translation: 我 們 有 點 不 同 點 。\n", - "\n", - "BOS i did n't enjoy it very much . EOS\n", - "BOS 我 不 是 很 喜 歡 它 。 EOS\n", - "translation: 我 不 喜 歡 那 麼 顏 色 。\n", - "\n", - "BOS i talked with her for an hour . EOS\n", - "BOS 我 跟 她 談 了 一 個 小 時 。 EOS\n", - "translation: 我 跟 她 談 過 一 個 小 時 。\n", - "\n", - "BOS you had better put on a UNK . EOS\n", - "BOS 您 最 好 穿 一 件 雨 衣 。 EOS\n", - "translation: 你 最 好 立 刻 穿 一 件 好 轉 。\n", - "\n", - "BOS it is wrong to tell a lie . EOS\n", - "BOS 說 謊 是 錯 誤 的 。 EOS\n", - "translation: 說 謊 是 錯 誤 的 。\n", - "\n", - "BOS tom might have missed the last train . EOS\n", - "BOS 汤 姆 可 能 错 过 了 最 后 一 班 列 车 。 EOS\n", - "translation: 汤 姆 可 能 错 过 了 最 后 一 班 火 车 。\n", - "\n", - "BOS please stay here till i get back . EOS\n", - "BOS 請 待 在 這 裡 直 到 我 回 來 。 EOS\n", - "translation: 請 待 在 這 裡 等 直 到 我 回 來 。\n", - "\n", - "BOS the man kept talking for an hour . EOS\n", - "BOS 這 個 男 人 連 續 說 了 一 個 小 時 的 話 。 EOS\n", - "translation: 這 個 男 人 連 續 說 了 一 個 小 時 的 小 時 。\n", - "\n", - "BOS this is all he has to do . EOS\n", - "BOS 這 是 所 有 他 必 須 做 的 事 。 EOS\n", - "translation: 這 是 所 有 他 必 須 做 的 事 。\n", - "\n", - "BOS his wife opened the door for him . EOS\n", - "BOS 他 的 妻 子 為 他 開 門 了 。 EOS\n", - "translation: 他 的 妻 子 為 他 開 門 了 。\n", - "\n", - "BOS he placed the ladder against the fence . EOS\n", - "BOS 他 把 梯 子 倚 著 柵 欄 放 。 EOS\n", - "translation: 他 把 梯 子 倚 著 柵 欄 放 。\n", - "\n", - "BOS we saw him walk across the street . EOS\n", - "BOS 我 們 看 到 他 過 馬 路 。 EOS\n", - "translation: 我 們 看 見 他 去 街 。\n", - "\n", - "BOS he grew up to be a doctor . EOS\n", - "BOS 他 長 大 後 成 為 了 一 名 醫 生 。 EOS\n", - "translation: 他 在 一 名 醫 生 長 大 。\n", - "\n", - "BOS i 'm sorry she 's not here . EOS\n", - "BOS 對 不 起 , 她 不 在 這 裡 。 EOS\n", - "translation: 對 不 起 , 她 不 在 這 裡 。\n", - "\n", - "BOS why should i care what you think ? EOS\n", - "BOS 為 什 麼 我 應 該 在 乎 你 怎 麼 想 ? EOS\n", - "translation: 我 为 什 么 你 应 该 要 变 照 呢 ?\n", - "\n", - "BOS all of us like you very much . EOS\n", - "BOS 我 们 都 非 常 喜 欢 你 。 EOS\n", - "translation: 我 們 所 有 的 人 都 非 常 喜 歡 你 。\n", - "\n", - "BOS what kind of work will you do ? EOS\n", - "BOS 你 將 做 什 麼 樣 的 工 作 ? EOS\n", - "translation: 你 會 做 什 麼 樣 的 工 作 ?\n", - "\n", - "BOS the magician had the children 's attention . EOS\n", - "BOS 魔 术 师 吸 引 了 孩 子 们 的 注 意 。 EOS\n", - "translation: 魔 术 士 犯 师 吸 引 着 注 意 力 。\n", - "\n", - "BOS this is the time he UNK arrives . EOS\n", - "BOS 他 这 个 时 候 该 到 了 。 EOS\n", - "translation: 这 是 时 候 , 他 该 停 止 了 。\n", - "\n", - "BOS perhaps it will rain in the afternoon . EOS\n", - "BOS 也 許 下 午 會 下 雨 。 EOS\n", - "translation: 可 能 下 午 會 下 雨 。\n", - "\n", - "BOS which one do you think is correct ? EOS\n", - "BOS 你 認 為 哪 一 個 是 正 確 的 ? EOS\n", - "translation: 你 觉 得 哪 一 个 是 最 好 的 ?\n", - "\n", - "BOS tom is going to run for mayor . EOS\n", - "BOS 汤 姆 要 竞 选 市 长 。 EOS\n", - "translation: 湯 姆 將 競 選 市 長 。\n", - "\n", - "BOS i hope he 'll wait for me . EOS\n", - "BOS 我 希 望 他 會 等 我 。 EOS\n", - "translation: 我 希 望 他 會 等 我 。\n", - "\n", - "BOS why did you say such a thing ? EOS\n", - "BOS 你 為 什 麼 說 了 這 樣 的 事 ? EOS\n", - "translation: 你 為 什 麼 這 麼 說 了 一 件 事 情 ?\n", - "\n", - "BOS my wish is to become a teacher . EOS\n", - "BOS 我 的 願 望 是 成 為 一 個 老 師 。 EOS\n", - "translation: 我 希 望 成 為 一 名 教 師 。\n", - "\n", - "BOS UNK never tell us their UNK thoughts . EOS\n", - "BOS 政 治 家 从 来 不 告 诉 我 们 他 们 的 别 有 用 心 。 EOS\n", - "translation: 不 要 告 訴 我 們 他 們 的 想 法 。\n", - "\n", - "BOS i 'm three years younger than you . EOS\n", - "BOS 我 比 你 小 三 歲 。 EOS\n", - "translation: 我 比 你 年 三 歲 。\n", - "\n", - "BOS i feel like going to the movies . EOS\n", - "BOS 我 想 去 看 電 影 。 EOS\n", - "translation: 我 想 去 看 電 影 。\n", - "\n", - "BOS she made room for an old lady . EOS\n", - "BOS 她 讓 座 給 一 位 老 太 太 。 EOS\n", - "translation: 她 為 這 個 房 間 留 給 這 位 老 人 。\n", - "\n", - "BOS you should follow your teacher 's advice . EOS\n", - "BOS 您 應 遵 循 你 老 師 的 建 議 。 EOS\n", - "translation: 你 應 該 遵 循 你 的 忠 告 。\n", - "\n", - "BOS my mother made me a white dress . EOS\n", - "BOS 我 媽 媽 為 我 做 了 一 件 白 色 的 洋 裝 。 EOS\n", - "translation: 我 媽 媽 為 我 做 了 一 件 白 色 的 衣 服 。\n", - "\n", - "BOS they go skiing at UNK every winter . EOS\n", - "BOS 他 們 每 年 冬 季 去 野 澤 滑 雪 。 EOS\n", - "translation: 他 們 每 年 冬 天 去 野 澤 滑 雪 。\n", - "\n", - "BOS tom teaches me french twice a week . EOS\n", - "BOS 汤 姆 每 周 两 次 教 我 法 语 。 EOS\n", - "translation: 汤 姆 每 周 两 次 教 我 法 语 。\n", - "\n", - "BOS i 'm getting ready for the worst . EOS\n", - "BOS 我 已 经 做 好 了 最 坏 的 打 算 。 EOS\n", - "translation: 我 准 备 好 了 最 好 的 做 的 所 措 。\n", - "\n", - "BOS i wash my hands before eating lunch . EOS\n", - "BOS 我 在 吃 午 饭 前 洗 手 。 EOS\n", - "translation: 我 在 吃 午 饭 前 洗 手 。\n", - "\n", - "BOS it was my duty to do that . EOS\n", - "BOS 做 那 事 是 我 的 责 任 。 EOS\n", - "translation: 那 是 我 的 责 任 。\n", - "\n", - "BOS he 'd prefer not to eat that . EOS\n", - "BOS 他 宁 愿 不 吃 这 个 。 EOS\n", - "translation: 他 宁 愿 不 吃 那 个 。\n", - "\n", - "BOS please find a solution to the problem . EOS\n", - "BOS 请 找 到 问 题 的 解 决 方 法 。 EOS\n", - "translation: 請 找 到 解 決 這 個 問 題 。\n", - "\n", - "BOS we had a kid just last year . EOS\n", - "BOS 就 在 去 年 我 們 有 了 一 個 孩 子 。 EOS\n", - "translation: 我 們 去 年 有 一 個 孩 子 。\n", - "\n", - "BOS you should have shown him the UNK . EOS\n", - "BOS 你 应 该 给 他 看 看 这 装 置 。 EOS\n", - "translation: 你 應 該 他 看 看 看 這 個 西 裝 。\n", - "\n", - "BOS i love the sound of children laughing . EOS\n", - "BOS 我 喜 歡 孩 子 們 笑 的 聲 音 。 EOS\n", - "translation: 我 愛 孩 子 們 很 笑 。\n", - "\n", - "BOS that patient may die at any time . EOS\n", - "BOS 病 人 随 时 会 死 。 EOS\n", - "translation: 那 样 有 病 人 死 了 。\n", - "\n", - "BOS i had difficulty working out the problem . EOS\n", - "BOS 我 很 難 解 決 這 個 問 題 。 EOS\n", - "translation: 我 遇 見 這 個 問 題 。\n", - "\n", - "BOS we managed to swim across the river . EOS\n", - "BOS 我 們 成 功 地 游 過 了 河 。 EOS\n", - "translation: 我 們 總 算 游 泳 渡 河 。\n", - "\n", - "BOS i wish you could come with us . EOS\n", - "BOS 但 願 你 可 以 跟 我 們 一 起 來 。 EOS\n", - "translation: 要 是 你 能 和 我 们 一 起 來 。\n", - "\n", - "BOS come on ! give me a chance . EOS\n", - "BOS 来 嘛 ! 给 我 个 机 会 。 EOS\n", - "translation: 来 嘛 ! 给 我 个 机 会 。\n", - "\n", - "BOS i ca n't eat this much food . EOS\n", - "BOS 我 不 能 吃 这 么 多 食 物 。 EOS\n", - "translation: 我 不 能 吃 這 食 物 。\n", - "\n", - "BOS let 's drink coffee while we talk . EOS\n", - "BOS 让 我 们 边 喝 咖 啡 边 谈 。 EOS\n", - "translation: 讓 我 們 說 咖 啡 吧 。\n", - "\n", - "BOS very few people live to be 100 . EOS\n", - "BOS 很 少 人 活 到 1 0 0 岁 。 EOS\n", - "translation: 很 少 人 活 到 1 0 0 0 岁 。\n", - "\n", - "BOS i could n't answer all the questions . EOS\n", - "BOS 我 无 法 回 答 所 有 问 题 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 不 能 回 答 所 有 的 問 題 。\n", - "\n", - "BOS how 's the weather in new york ? EOS\n", - "BOS 紐 約 的 天 氣 如 何 ? EOS\n", - "translation: 紐 約 的 天 氣 怎 麼 樣 ?\n", - "\n", - "BOS how long have you been in UNK ? EOS\n", - "BOS 你 在 UNK 路 多 久 了 ? EOS\n", - "translation: 你 在 一 共 多 久 了 ?\n", - "\n", - "BOS what did you do with that camera ? EOS\n", - "BOS 你 用 那 台 相 機 做 了 什 麼 ? EOS\n", - "translation: 你 用 那 台 相 機 做 了 什 麼 ?\n", - "\n", - "BOS UNK UNK grew up on the UNK . EOS\n", - "BOS UNK 拉 英 UNK 爾 斯 是 在 草 原 上 長 大 的 。 EOS\n", - "translation: 外 面 長 大 後 成 功 。\n", - "\n", - "BOS he hit his head against a rock . EOS\n", - "BOS 他 的 头 撞 倒 了 一 块 岩 石 。 EOS\n", - "translation: 他 的 头 撞 倒 了 一 块 岩 石 。\n", - "\n", - "BOS i bought this book at UNK bookstore . EOS\n", - "BOS 我 在 书 商 M a r UNK z e n 那 里 买 了 这 本 书 。 EOS\n", - "translation: 我 在 這 本 書 店 買 了 這 本 書 。\n", - "\n", - "BOS i will live in sasayama next year . EOS\n", - "BOS 我 明 年 會 住 在 筱 山 。 EOS\n", - "translation: 我 明 年 住 在 筱 山 。\n", - "\n", - "BOS she made a mess of the work . EOS\n", - "BOS 她 工 作 做 得 亂 七 八 糟 。 EOS\n", - "translation: 她 工 作 做 得 亂 七 八 糟 。\n", - "\n", - "BOS she has been dead for ten years . EOS\n", - "BOS 她 已 經 死 了 十 年 了 。 EOS\n", - "translation: 她 死 於 十 年 了 。\n", - "\n", - "BOS i did n't believe him at first . EOS\n", - "BOS 起 初 我 不 相 信 他 。 EOS\n", - "translation: 起 初 我 不 相 信 他 。\n", - "\n", - "BOS tom is a very good tennis player . EOS\n", - "BOS 湯 姆 是 一 個 非 常 好 的 網 球 選 手 。 EOS\n", - "translation: 湯 姆 是 個 非 常 好 的 網 球 選 手 。\n", - "\n", - "BOS i met a friend of mary 's . EOS\n", - "BOS 我 遇 到 了 瑪 麗 的 一 位 朋 友 。 EOS\n", - "translation: 我 遇 見 了 瑪 麗 一 個 朋 友 。\n", - "\n", - "BOS world war i broke out in UNK . EOS\n", - "BOS 第 一 次 世 界 大 戰 於 1 9 1 4 年 爆 發 。 EOS\n", - "translation: 第 一 次 世 界 大 戰 於 1 9 1 4 年 爆 發 。\n", - "\n", - "BOS the eight o'clock bus was early today . EOS\n", - "BOS 8 点 那 班 车 今 天 早 到 了 。 EOS\n", - "translation: 最 近 的 乘 客 早 八 點 很 早 。\n", - "\n", - "BOS i 'm going to change my shirt . EOS\n", - "BOS 我 要 去 換 我 的 襯 衫 。 EOS\n", - "translation: 我 要 改 變 我 的 襯 衫 。\n", - "\n", - "BOS there is a cat under the desk . EOS\n", - "BOS 书 桌 下 有 一 只 猫 。 EOS\n", - "translation: 桌 子 底 下 有 一 只 猫 。\n", - "\n", - "BOS i just wanted to speak to tom . EOS\n", - "BOS 我 只 想 跟 汤 姆 说 话 。 EOS\n", - "translation: 我 只 想 跟 汤 姆 说 话 。\n", - "\n", - "BOS the city was full of starving soldiers . EOS\n", - "BOS 城 市 裡 充 滿 了 飢 餓 的 士 兵 。 EOS\n", - "translation: 城 市 裡 充 滿 了 飢 餓 的 士 兵 。\n", - "\n", - "BOS people in the united states speak english . EOS\n", - "BOS 在 美 國 的 人 說 英 語 。 EOS\n", - "translation: 在 美 國 的 人 說 英 語 。\n", - "\n", - "BOS i wish you were close to me . EOS\n", - "BOS 我 希 望 你 在 我 身 边 。 EOS\n", - "translation: 要 是 你 抱 怨 我 。\n", - "\n", - "BOS you remember it better than i do . EOS\n", - "BOS 你 比 我 记 得 好 。 EOS\n", - "translation: 你 比 我 记 得 好 。\n", - "\n", - "BOS it 's fun to ride a motorcycle . EOS\n", - "BOS 騎 摩 托 車 很 有 趣 。 EOS\n", - "translation: 騎 摩 托 車 很 有 趣 。\n", - "\n", - "BOS i have written down his phone number . EOS\n", - "BOS 我 記 下 了 他 的 電 話 號 碼 。 EOS\n", - "translation: 我 寫 下 他 的 電 話 號 碼 了 。\n", - "\n", - "BOS he arrived at school exactly on time . EOS\n", - "BOS 他 刚 好 准 时 到 校 。 EOS\n", - "translation: 他 刚 好 准 时 到 校 。\n", - "\n", - "BOS there are too many things to do ! EOS\n", - "BOS 要 做 的 事 太 多 了 ! EOS\n", - "translation: 要 做 太 多 了 !\n", - "\n", - "BOS this bridge was built two years ago . EOS\n", - "BOS 這 座 橋 是 在 兩 年 前 建 造 的 。 EOS\n", - "translation: 這 座 橋 是 兩 年 前 建 造 的 。\n", - "\n", - "BOS she warned him not to go alone . EOS\n", - "BOS 她 警 告 了 他 不 要 一 個 人 去 。 EOS\n", - "translation: 她 警 告 了 他 不 要 一 個 人 去 。\n", - "\n", - "BOS the library is on the UNK floor . EOS\n", - "BOS 圖 書 館 在 四 樓 。 EOS\n", - "translation: 圖 書 館 在 四 樓 。\n", - "\n", - "BOS he has a great deal of experience . EOS\n", - "BOS 他 有 豐 富 的 經 驗 。 EOS\n", - "translation: 他 有 豐 富 的 經 驗 。\n", - "\n", - "BOS i wonder if anything happened to him . EOS\n", - "BOS 我 怀 疑 有 什 么 事 在 他 身 上 发 生 了 。 EOS\n", - "translation: 我 想 知 道 他 發 生 什 麼 事 。\n", - "\n", - "BOS she has many friends in hong kong . EOS\n", - "BOS 她 在 香 港 有 很 多 朋 友 。 EOS\n", - "translation: 她 在 香 港 有 很 多 朋 友 。\n", - "\n", - "BOS i have n't seen you in ages . EOS\n", - "BOS 我 已 經 好 久 沒 有 見 到 你 了 。 EOS\n", - "translation: 我 好 久 不 見 你 了 。\n", - "\n", - "BOS this pencil is better than that one . EOS\n", - "BOS 這 支 鉛 筆 比 那 隻 好 。 EOS\n", - "translation: 这 支 笔 比 那 支 铅 笔 。\n", - "\n", - "BOS tom wants to tell you about mary . EOS\n", - "BOS 汤 姆 想 跟 你 说 玛 丽 的 事 。 EOS\n", - "translation: 汤 姆 想 告 诉 你 那 玛 丽 。\n", - "\n", - "BOS my father got married in his twenties . EOS\n", - "BOS 我 父 親 在 他 二 十 多 歲 時 結 婚 了 。 EOS\n", - "translation: 我 父 親 在 他 二 十 多 歲 時 結 婚 了 。\n", - "\n", - "BOS she carried that habit to her UNK . EOS\n", - "BOS 她 到 死 都 改 不 了 那 個 習 慣 。 EOS\n", - "translation: 她 到 死 误 , 那 是 她 忽 视 。\n", - "\n", - "BOS the boy denied having stolen the bicycle . EOS\n", - "BOS 那 个 男 孩 否 认 偷 了 自 行 车 。 EOS\n", - "translation: 那 個 男 孩 否 认 偷 了 自 行 車 。\n", - "\n", - "BOS he UNK refused to let me in . EOS\n", - "BOS 他 斷 然 地 拒 絕 讓 我 進 去 。 EOS\n", - "translation: 他 斷 然 地 拒 絕 讓 我 進 去 。\n", - "\n", - "BOS will you permit me to go there ? EOS\n", - "BOS 您 允 许 我 去 吗 ? EOS\n", - "translation: 你 需 要 我 去 那 裡 嗎 ?\n", - "\n", - "BOS is your school far from your home ? EOS\n", - "BOS 你 的 學 校 離 你 家 很 遠 嗎 ? EOS\n", - "translation: 你 的 學 校 有 离 家 嗎 ?\n", - "\n", - "BOS she left her umbrella in the train . EOS\n", - "BOS 她 把 她 的 雨 傘 留 在 火 車 上 了 。 EOS\n", - "translation: 她 把 她 的 傘 留 在 火 車 上 了 。\n", - "\n", - "BOS i do n't want tom to die . EOS\n", - "BOS 我 不 想 让 汤 姆 死 。 EOS\n", - "translation: 我 不 想 死 汤 姆 。\n", - "\n", - "BOS i made efforts to improve my grades . EOS\n", - "BOS 我 努 力 的 改 善 我 的 成 績 。 EOS\n", - "translation: 我 努 力 的 改 善 我 的 成 績 。\n", - "\n", - "BOS hope to see you again next year . EOS\n", - "BOS 希 望 明 年 再 次 見 到 你 。 EOS\n", - "translation: 希 望 明 年 再 次 見 到 你 。\n", - "\n", - "BOS i could n't understand him at first . EOS\n", - "BOS 起 初 我 聽 不 懂 他 說 的 話 。 EOS\n", - "translation: 起 初 我 無 法 理 解 他 。\n", - "\n", - "BOS there 's UNK growing in the garden . EOS\n", - "BOS 花 園 裡 有 UNK 子 在 生 長 。 EOS\n", - "translation: 花 園 裡 有 個 外 籃 子 。\n", - "\n", - "BOS she gave the blouse a quick wash . EOS\n", - "BOS 她 很 快 地 把 襯 衫 洗 一 洗 。 EOS\n", - "translation: 她 很 快 地 把 襯 衫 洗 一 洗 一 洗 一 洗 一 下 。\n", - "\n", - "BOS we saw a funny movie last sunday . EOS\n", - "BOS 我 們 上 星 期 天 看 了 一 場 很 有 趣 的 電 影 。 EOS\n", - "translation: 我 們 上 個 星 期 天 看 到 了 一 場 很 有 趣 的 電 影 。\n", - "\n", - "BOS it has been raining since last thursday . EOS\n", - "BOS 從 上 週 四 開 始 一 直 下 雨 。 EOS\n", - "translation: 從 上 個 星 期 一 總 是 下 雨 。\n", - "\n", - "BOS you can rely upon his being punctual . EOS\n", - "BOS 你 可 以 放 心 , 他 會 準 時 的 。 EOS\n", - "translation: 你 可 以 放 心 他 的 時 間 。\n", - "\n", - "BOS i 'm going to propose to her . EOS\n", - "BOS 我 打 算 向 她 求 婚 。 EOS\n", - "translation: 我 打 算 向 她 求 婚 。\n", - "\n", - "BOS she has the large house to herself . EOS\n", - "BOS 她 給 自 己 一 間 大 房 子 。 EOS\n", - "translation: 她 有 大 量 的 房 子 。\n", - "\n", - "BOS english and german are two related languages . EOS\n", - "BOS 英 語 和 德 語 是 兩 種 相 關 的 語 言 。 EOS\n", - "translation: 英 語 和 德 語 是 兩 種 相 當 種 相 情 的 語 言 。\n", - "\n", - "BOS he UNK the sweat from his face . EOS\n", - "BOS 他 擦 去 了 脸 上 的 汗 水 。 EOS\n", - "translation: 他 擦 去 了 脸 上 的 汗 水 。\n", - "\n", - "BOS i ca n't do without her help . EOS\n", - "BOS 沒 有 她 的 幫 助 我 做 不 到 。 EOS\n", - "translation: 沒 有 她 的 幫 助 我 也 做 。\n", - "\n", - "BOS the world is full of UNK doctors . EOS\n", - "BOS 社 会 上 满 是 不 称 职 的 医 生 。 EOS\n", - "translation: 社 会 是 世 界 上 最 好 的 医 生 。\n", - "\n", - "BOS she always speaks in a low voice . EOS\n", - "BOS 她 總 是 低 聲 地 說 話 。 EOS\n", - "translation: 她 總 是 低 聲 地 說 話 。\n", - "\n", - "BOS i take full responsibility for the action . EOS\n", - "BOS 我 會 為 這 次 行 動 負 起 全 責 。 EOS\n", - "translation: 我 有 點 感 冒 的 錢 。\n", - "\n", - "BOS do you want to speak to tom ? EOS\n", - "BOS 你 想 跟 汤 姆 说 话 吗 ? EOS\n", - "translation: 你 想 跟 汤 姆 说 吗 ?\n", - "\n", - "BOS what 's the capital city of UNK ? EOS\n", - "BOS 芬 蘭 的 首 都 是 什 麼 ? EOS\n", - "translation: 芬 蘭 的 首 都 是 什 麼 ?\n", - "\n", - "BOS he was too drunk to drive home . EOS\n", - "BOS 他 喝 酒 醉 無 法 開 車 回 家 。 EOS\n", - "translation: 他 喝 酒 醉 無 法 開 車 回 家 。\n", - "\n", - "BOS when did she promise to meet him ? EOS\n", - "BOS 她 答 应 几 时 见 他 ? EOS\n", - "translation: 她 答 应 几 岁 的 时 候 见 他 了 ?\n", - "\n", - "BOS we will only UNK on that condition . EOS\n", - "BOS 我 们 只 会 在 那 样 的 条 件 下 同 意 。 EOS\n", - "translation: 我 们 只 会 在 那 样 的 条 件 下 同 意 。\n", - "\n", - "BOS i 'm going to meet him tomorrow . EOS\n", - "BOS 我 明 天 要 跟 他 見 面 。 EOS\n", - "translation: 我 明 天 要 跟 他 見 面 。\n", - "\n", - "BOS this is a picture of my mother . EOS\n", - "BOS 這 張 是 我 媽 媽 的 照 片 。 EOS\n", - "translation: 这 是 一 張 我 媽 媽 的 照 片 。\n", - "\n", - "BOS tom pretended to not hear a thing . EOS\n", - "BOS 汤 姆 假 装 没 听 见 。 EOS\n", - "translation: 湯 姆 假 從 不 見 過 一 件 事 情 。\n", - "\n", - "BOS he wo n't live a long life . EOS\n", - "BOS 他 不 會 長 壽 。 EOS\n", - "translation: 他 不 会 長 大 成 为 活 。\n", - "\n", - "BOS he worked in a big city hospital . EOS\n", - "BOS 他 在 一 間 很 大 的 市 立 醫 院 工 作 。 EOS\n", - "translation: 他 在 一 間 很 大 的 市 立 醫 院 工 作 。\n", - "\n", - "BOS it 's clear that you 're wrong . EOS\n", - "BOS 很 明 顯 地 你 錯 了 。 EOS\n", - "translation: 很 明 顯 然 地 你 錯 了 。\n", - "\n", - "BOS they came all the way from brazil . EOS\n", - "BOS 他 們 從 巴 西 遠 道 而 來 。 EOS\n", - "translation: 他 们 全 都 从 伦 敦 。\n", - "\n", - "BOS i had been reading for an hour . EOS\n", - "BOS 我 已 經 持 續 讀 了 一 個 小 時 了 。 EOS\n", - "translation: 我 曾 在 讀 一 個 小 時 。\n", - "\n", - "BOS i 'll drive you to the airport . EOS\n", - "BOS 我 会 开 车 送 你 去 机 场 。 EOS\n", - "translation: 我 會 開 車 送 你 到 机 场 。\n", - "\n", - "BOS do n't make fun of old people . EOS\n", - "BOS 不 要 捉 弄 老 人 家 。 EOS\n", - "translation: 不 要 捉 弄 老 人 家 。\n", - "\n", - "BOS i did not participate in the UNK . EOS\n", - "BOS 我 没 有 参 与 对 话 。 EOS\n", - "translation: 我 没 有 参 与 对 话 。\n", - "\n", - "BOS hang on till i get to you . EOS\n", - "BOS 坚 持 下 去 直 到 我 找 到 你 。 EOS\n", - "translation: 等 到 你 直 到 我 寄 信 。\n", - "\n", - "BOS i got the money back from him . EOS\n", - "BOS 我 拿 到 了 他 還 給 我 的 錢 。 EOS\n", - "translation: 我 把 钱 还 给 他 。\n", - "\n", - "BOS can i make a reservation for golf ? EOS\n", - "BOS 我 能 预 定 一 下 打 高 尔 夫 球 吗 ? EOS\n", - "translation: 我 能 预 定 一 下 打 高 尔 夫 球 吗 ?\n", - "\n", - "BOS he has a son and two daughters . EOS\n", - "BOS 他 有 一 個 兒 子 和 兩 個 女 兒 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 他 有 一 个 儿 子 和 两 个 女 儿 。\n", - "\n", - "BOS it was n't very hot last night . EOS\n", - "BOS 昨 晚 不 是 很 熱 。 EOS\n", - "translation: 昨 晚 不 是 很 熱 。\n", - "\n", - "BOS it 's obvious that she 's sick . EOS\n", - "BOS 顯 然 地 她 生 病 了 。 EOS\n", - "translation: 顯 然 地 她 生 病 了 。\n", - "\n", - "BOS i have a dog and a cat . EOS\n", - "BOS 我 有 一 隻 狗 和 一 隻 貓 。 EOS\n", - "translation: 我 有 一 隻 狗 和 一 隻 貓 。\n", - "\n", - "BOS we elected her captain of our team . EOS\n", - "BOS 我 们 选 她 为 我 们 队 的 队 长 。 EOS\n", - "translation: 我 們 選 她 的 隊 長 。\n", - "\n", - "BOS i got some sand in my eye . EOS\n", - "BOS 我 的 眼 睛 進 了 些 沙 。 EOS\n", - "translation: 我 的 眼 睛 進 了 些 沙 。\n", - "\n", - "BOS leave me a bit of ice cream . EOS\n", - "BOS 给 我 留 点 冰 激 凌 。 EOS\n", - "translation: 给 我 留 点 冰 激 凌 。\n", - "\n", - "BOS i met him on my way home . EOS\n", - "BOS 我 在 回 家 的 路 上 遇 見 了 他 。 EOS\n", - "translation: 我 在 回 家 的 路 上 遇 見 了 他 。\n", - "\n", - "BOS he is a reporter for time magazine . EOS\n", - "BOS 他 是 时 代 杂 志 的 记 者 。 EOS\n", - "translation: 他 當 然 用 來 記 憶 力 服 是 錯 的 申 杂 的 申 杂 志 。\n", - "\n", - "BOS i opened the box and looked inside . EOS\n", - "BOS 我 打 開 盒 子 看 看 裡 面 。 EOS\n", - "translation: 我 打 開 盒 子 裡 面 看 面 。\n", - "\n", - "BOS new york is on the UNK river . EOS\n", - "BOS 紐 約 位 在 哈 得 UNK 河 。 EOS\n", - "translation: 紐 約 位 在 哈 得 很 河 。\n", - "\n", - "BOS long skirts are out of fashion now . EOS\n", - "BOS 現 在 長 裙 過 時 了 。 EOS\n", - "translation: 現 在 長 裙 不 流 行 了 。\n", - "\n", - "BOS there are some boys under the tree . EOS\n", - "BOS 樹 下 有 一 些 男 孩 。 EOS\n", - "translation: 樹 下 有 一 些 男 孩 。\n", - "\n", - "BOS i UNK a house with a garage . EOS\n", - "BOS 我 租 了 一 間 有 車 庫 的 房 子 。 EOS\n", - "translation: 我 租 了 一 間 有 車 庫 的 房 子 。\n", - "\n", - "BOS the admission is ten dollars a person . EOS\n", - "BOS 入 會 費 一 個 人 十 美 元 。 EOS\n", - "translation: 十 美 元 在 一 個 美 國 人 。\n", - "\n", - "BOS the guy with a UNK is tom . EOS\n", - "BOS 长 胡 子 的 是 汤 姆 。 EOS\n", - "translation: 家 人 是 汤 姆 的 。\n", - "\n", - "BOS i did n't know about your plan . EOS\n", - "BOS 我 不 知 道 你 的 計 畫 。 EOS\n", - "translation: 我 不 知 道 你 的 計 劃 。\n", - "\n", - "BOS this book is n't interesting at all . EOS\n", - "BOS 這 本 書 一 點 也 不 有 趣 。 EOS\n", - "translation: 這 本 書 一 點 也 不 有 趣 。\n", - "\n", - "BOS he made a clean break with them . EOS\n", - "BOS 他 跟 他 们 干 UNK 地 断 绝 来 往 了 。 EOS\n", - "translation: 他 與 他 們 吵 邊 吵 邊 。\n", - "\n", - "BOS please call me at my hotel later . EOS\n", - "BOS 等 一 下 請 打 電 話 到 我 住 的 旅 館 。 EOS\n", - "translation: 等 一 下 晚 上 打 電 話 給 我 。\n", - "\n", - "BOS he walks in the park every morning . EOS\n", - "BOS 他 每 天 早 上 在 公 園 裡 散 步 。 EOS\n", - "translation: 他 每 天 早 上 在 公 園 裡 散 步 。\n", - "\n", - "BOS take the elevator to the fifth floor . EOS\n", - "BOS 搭 乘 電 梯 到 五 樓 。 EOS\n", - "translation: 乘 电 梯 上 五 樓 。\n", - "\n", - "BOS the police will look into the case . EOS\n", - "BOS 警 察 会 调 查 这 起 案 件 。 EOS\n", - "translation: 警 方 會 调 查 深 刻 發 生 。\n", - "\n", - "BOS how did you get to know him ? EOS\n", - "BOS 你 是 怎 么 认 识 他 的 ? EOS\n", - "translation: 你 怎 麼 知 道 他 ?\n", - "\n", - "BOS i wish you had told me that . EOS\n", - "BOS 但 願 你 告 訴 過 我 就 好 了 。 EOS\n", - "translation: 要 是 你 告 訴 過 我 就 好 了 。\n", - "\n", - "BOS i do n't know who he is . EOS\n", - "BOS 我 不 知 道 他 是 谁 。 EOS\n", - "translation: 我 不 知 道 他 是 谁 。\n", - "\n", - "BOS will you sell your car to me ? EOS\n", - "BOS 你 可 以 把 你 的 車 賣 給 我 嗎 ? EOS\n", - "translation: 你 可 以 把 你 的 車 賣 給 我 嗎 ?\n", - "\n", - "BOS is there anything you ca n't do ? EOS\n", - "BOS 有 你 不 能 做 的 事 吗 ? EOS\n", - "translation: 有 什 么 事 情 都 做 不 了 吗 ?\n", - "\n", - "BOS they made up and became friends again . EOS\n", - "BOS 他 們 和 解 了 , 並 再 次 成 為 了 朋 友 。 EOS\n", - "translation: 他 們 和 解 了 , 並 再 大 朋 友 。\n", - "\n", - "BOS do n't do anything like that again . EOS\n", - "BOS 不 要 再 做 那 樣 的 事 情 了 。 EOS\n", - "translation: 不 要 再 做 那 樣 的 事 情 了 。\n", - "\n", - "BOS i asked tom what he was reading . EOS\n", - "BOS 我 问 了 汤 姆 在 读 什 么 。 EOS\n", - "translation: 我 問 湯 姆 在 讀 什 麼 。\n", - "\n", - "BOS i got this cd player for free . EOS\n", - "BOS 我 免 費 得 到 這 個 C D 播 放 機 。 EOS\n", - "translation: 我 免 費 得 到 這 個 C D 播 放 機 。\n", - "\n", - "BOS she is getting better day by day . EOS\n", - "BOS 她 一 天 一 天 地 好 轉 。 EOS\n", - "translation: 她 一 天 一 天 一 天 氣 轉 。\n", - "\n", - "BOS i asked her to wait a moment . EOS\n", - "BOS 我 請 她 等 一 會 兒 。 EOS\n", - "translation: 我 請 她 等 一 會 兒 。\n", - "\n", - "BOS we reached the top of the mountain . EOS\n", - "BOS 我 們 到 達 了 山 頂 。 EOS\n", - "translation: 我 們 到 達 了 山 頂 。\n", - "\n", - "BOS i ca n't find my umbrella anywhere . EOS\n", - "BOS 我 任 何 地 方 都 找 不 到 我 的 傘 。 EOS\n", - "translation: 我 在 哪 裡 找 不 到 我 的 傘 。\n", - "\n", - "BOS i said i would make her happy . EOS\n", - "BOS 我 说 我 会 让 她 幸 福 的 。 EOS\n", - "translation: 我 會 說 她 快 樂 。\n", - "\n", - "BOS i saw a light in the distance . EOS\n", - "BOS 我 看 见 远 处 有 灯 光 。 EOS\n", - "translation: 我 看 见 远 处 有 灯 光 。\n", - "\n", - "BOS do you ever study in the library ? EOS\n", - "BOS 你 曾 經 在 圖 書 館 讀 書 嗎 ? EOS\n", - "translation: 你 曾 經 在 圖 書 館 讀 書 嗎 ?\n", - "\n", - "BOS what do you want to tell me ? EOS\n", - "BOS 你 想 跟 我 说 什 么 ? EOS\n", - "translation: 你 想 跟 我 说 什 么 ?\n", - "\n", - "BOS UNK communicate with the airport by radio . EOS\n", - "BOS 飛 行 員 用 無 線 電 與 機 場 溝 通 。 EOS\n", - "translation: 用 飛 機 廣 播 放 在 電 話 機 場 溝 通 。\n", - "\n", - "BOS kyoto is famous for its old temples . EOS\n", - "BOS 京 都 以 古 廟 有 名 。 EOS\n", - "translation: 京 都 以 古 廟 有 名 。\n", - "\n", - "BOS tom cut himself with his knife yesterday . EOS\n", - "BOS 汤 姆 昨 天 用 刀 切 到 自 己 了 。 EOS\n", - "translation: 湯 姆 昨 天 用 來 寫 作 來 。\n", - "\n", - "BOS she bought a toy for her child . EOS\n", - "BOS 她 買 了 一 個 玩 具 給 她 的 孩 子 。 EOS\n", - "translation: 她 買 了 一 個 玩 具 。\n", - "\n", - "BOS i would like to speak english fluently . EOS\n", - "BOS 我 想 講 一 口 流 利 的 英 語 。 EOS\n", - "translation: 我 想 流 利 地 说 英 语 。\n", - "\n", - "BOS he bored us with his long stories . EOS\n", - "BOS 他 長 長 的 故 事 讓 我 們 覺 得 厭 煩 了 。 EOS\n", - "translation: 他 在 長 椅 子 對 我 們 說 很 長 笑 。\n", - "\n", - "BOS keep in mind that you must die . EOS\n", - "BOS 你 要 想 到 你 必 须 死 。 EOS\n", - "translation: 留 在 你 必 须 死 。\n", - "\n", - "BOS this beach is a paradise for UNK . EOS\n", - "BOS 这 个 海 滩 是 冲 浪 者 的 天 堂 。 EOS\n", - "translation: 这 个 海 滩 是 冲 浪 者 的 天 堂 。\n", - "\n", - "BOS she knows how to do the UNK . EOS\n", - "BOS 她 知 道 怎 麼 游 自 由 式 。 EOS\n", - "translation: 她 知 道 怎 麼 辦 。\n", - "\n", - "BOS we got the meeting over with quickly . EOS\n", - "BOS 我 們 很 快 的 結 束 了 這 個 會 議 。 EOS\n", - "translation: 我 们 很 快 地 參 加 了 這 場 會 議 。\n", - "\n", - "BOS i get scared just walking past him . EOS\n", - "BOS 只 是 從 他 旁 邊 走 過 去 我 就 覺 得 害 怕 。 EOS\n", - "translation: 我 只 是 被 拜 訪 他 。\n", - "\n", - "BOS i was late for school this morning . EOS\n", - "BOS 我 今 天 早 上 上 學 遲 到 。 EOS\n", - "translation: 今 天 早 上 我 遲 到 了 學 。\n", - "\n", - "BOS there is UNK light to take pictures . EOS\n", - "BOS 拍 照 片 光 线 不 够 亮 。 EOS\n", - "translation: 拍 照 片 光 线 不 够 亮 。\n", - "\n", - "BOS let 's discuss the problem with them . EOS\n", - "BOS 让 我 们 和 他 们 讨 论 这 个 问 题 吧 。 EOS\n", - "translation: 让 他 们 和 他 们 讨 论 这 个 问 题 吧 。\n", - "\n", - "BOS she returned the book to the library . EOS\n", - "BOS 她 把 書 還 給 了 圖 書 館 。 EOS\n", - "translation: 她 把 書 還 給 圖 書 館 。\n", - "\n", - "BOS i 've changed my website 's layout . EOS\n", - "BOS 我 改 了 一 下 我 的 网 站 的 布 局 。 EOS\n", - "translation: 我 改 了 一 下 我 的 网 站 的 布 局 。\n", - "\n", - "BOS where did you have your picture taken ? EOS\n", - "BOS 你 从 哪 里 照 的 相 ? EOS\n", - "translation: 你 哪 裡 有 照 片 ?\n", - "\n", - "BOS thank you for UNK this delicious cake . EOS\n", - "BOS 谢 谢 你 烤 的 美 味 蛋 糕 。 EOS\n", - "translation: 谢 谢 谢 你 烤 的 美 味 蛋 糕 。\n", - "\n", - "BOS he is getting better bit by bit . EOS\n", - "BOS 他 一 點 一 點 地 變 好 。 EOS\n", - "translation: 他 一 點 一 點 鐘 一 點 一 點 鐘 。\n", - "\n", - "BOS i guess that she is over thirty . EOS\n", - "BOS 我 猜 她 超 過 三 十 歲 了 。 EOS\n", - "translation: 我 猜 她 超 過 三 十 歲 了 。\n", - "\n", - "BOS one of the girls was left behind . EOS\n", - "BOS 這 些 女 孩 當 中 其 中 一 個 被 留 下 來 了 。 EOS\n", - "translation: 一 個 女 孩 在 進 去 面 前 被 車 離 開 。\n", - "\n", - "BOS to what extent can he be UNK ? EOS\n", - "BOS 可 以 相 信 他 到 什 麼 程 度 ? EOS\n", - "translation: 在 某 個 人 可 以 當 成 是 誰 可 以 來 的 ?\n", - "\n", - "BOS this door is locked from the inside . EOS\n", - "BOS 這 門 從 裡 面 被 反 鎖 了 。 EOS\n", - "translation: 這 門 被 鎖 中 的 進 口 。\n", - "\n", - "BOS can you translate this song for me ? EOS\n", - "BOS 你 能 为 我 翻 译 这 首 歌 吗 ? EOS\n", - "translation: 你 可 以 翻 译 这 首 歌 嗎 ?\n", - "\n", - "BOS a card was UNK to the gift . EOS\n", - "BOS 一 張 卡 片 被 附 在 了 禮 物 上 。 EOS\n", - "translation: 一 張 卡 片 被 附 在 了 禮 物 上 。\n", - "\n", - "BOS that is the office where he works . EOS\n", - "BOS 那 是 他 工 作 的 辦 公 室 。 EOS\n", - "translation: 那 是 他 工 作 的 辦 公 室 。\n", - "\n", - "BOS tell me what to do with it . EOS\n", - "BOS 告 诉 我 拿 它 做 什 么 。 EOS\n", - "translation: 告 訴 我 該 做 什 麼 。\n", - "\n", - "BOS my father is suffering from a cold . EOS\n", - "BOS 我 父 親 感 冒 了 。 EOS\n", - "translation: 我 爸 爸 變 冷 了 體 冷 。\n", - "\n", - "BOS i think what you say is true . EOS\n", - "BOS 我 觉 得 你 说 的 是 真 的 。 EOS\n", - "translation: 我 想 你 說 的 是 真 的 。\n", - "\n", - "BOS may i pay with a credit card ? EOS\n", - "BOS 我 能 用 信 用 卡 支 付 吗 ? EOS\n", - "translation: 我 可 以 用 信 用 卡 付 款 付 嗎 ?\n", - "\n", - "BOS he was late for the UNK bus . EOS\n", - "BOS 他 错 过 了 7 点 3 0 分 的 车 。 EOS\n", - "translation: 他 遲 到 了 公 車 。\n", - "\n", - "BOS have you ever been to new york ? EOS\n", - "BOS 您 已 经 去 过 纽 约 了 吗 ? EOS\n", - "translation: 你 曾 去 過 紐 約 嗎 ?\n", - "\n", - "BOS he flew a kite with his son . EOS\n", - "BOS 他 和 他 的 儿 子 放 风 UNK 了 。 EOS\n", - "translation: 他 和 他 的 儿 子 過 了 一 半 球 。\n", - "\n", - "BOS she gave me a smile of recognition . EOS\n", - "BOS 她 給 了 我 一 個 認 可 的 微 笑 。 EOS\n", - "translation: 她 給 了 我 一 個 認 可 的 微 笑 。\n", - "\n", - "BOS the UNK seems to be very pretty . EOS\n", - "BOS 新 娘 好 像 非 常 漂 亮 。 EOS\n", - "translation: 似 乎 很 好 地 看 。\n", - "\n", - "BOS she asked him to open the window . EOS\n", - "BOS 她 要 求 他 打 開 窗 戶 。 EOS\n", - "translation: 她 請 他 打 開 窗 口 。\n", - "\n", - "BOS remember to mail this letter tomorrow morning . EOS\n", - "BOS 明 天 早 上 記 得 去 寄 這 封 信 。 EOS\n", - "translation: 记 明 天 早 上 打 算 寄 這 封 信 。\n", - "\n", - "BOS we had a welcome party for her . EOS\n", - "BOS 我 們 為 她 舉 辦 了 一 個 歡 迎 會 。 EOS\n", - "translation: 我 們 曾 正 在 做 她 的 派 對 。\n", - "\n", - "BOS he gave me whatever help i needed . EOS\n", - "BOS 他 給 了 我 任 何 我 需 要 的 幫 助 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 他 給 了 我 任 何 我 需 要 的 幫 助 。\n", - "\n", - "BOS we 're waiting for the right time . EOS\n", - "BOS 我 們 在 等 對 的 時 機 。 EOS\n", - "translation: 我 們 在 等 正 確 的 時 間 。\n", - "\n", - "BOS i 'm not about to ask him . EOS\n", - "BOS 我 不 想 要 問 他 。 EOS\n", - "translation: 我 不 要 問 他 。\n", - "\n", - "BOS five years is too long to wait . EOS\n", - "BOS 五 年 太 漫 長 而 無 法 等 待 。 EOS\n", - "translation: 五 年 太 漫 長 而 無 法 等 待 。\n", - "\n", - "BOS what 're your plans for the weekend ? EOS\n", - "BOS 你 週 末 有 什 麼 計 劃 ? EOS\n", - "translation: 你 週 末 有 什 麼 計 劃 ?\n", - "\n", - "BOS they gave a big party for me . EOS\n", - "BOS 他 們 為 我 辦 了 一 個 盛 大 的 派 對 。 EOS\n", - "translation: 他 們 為 我 辦 了 一 個 大 鞋 子 。\n", - "\n", - "BOS she made a new suit for him . EOS\n", - "BOS 她 做 了 一 套 新 衣 服 給 他 。 EOS\n", - "translation: 她 做 了 个 新 衣 服 給 他 。\n", - "\n", - "BOS a fire broke out during the night . EOS\n", - "BOS 在 夜 間 發 生 了 火 災 。 EOS\n", - "translation: 在 夜 間 發 生 了 火 災 。\n", - "\n", - "BOS tell me the reason why she got angry . EOS\n", - "BOS 告 诉 我 她 为 什 么 生 气 。 EOS\n", - "translation: 告 訴 我 她 為 什 麼 生 氣 。\n", - "\n", - "BOS i wish to climb mt . fuji again . EOS\n", - "BOS 我 希 望 再 爬 一 次 上 富 士 山 。 EOS\n", - "translation: 我 希 望 再 爬 一 次 上 富 士 山 。\n", - "\n", - "BOS he can speak french , and obviously english . EOS\n", - "BOS 他 能 说 法 语 , 很 明 显 还 有 英 语 。 EOS\n", - "translation: 他 能 说 法 语 , 很 明 显 还 有 英 语 。\n", - "\n", - "BOS he did not think he needed their UNK . EOS\n", - "BOS 他 认 为 他 不 需 要 他 们 的 保 护 。 EOS\n", - "translation: 他 不 想 到 他 们 的 需 要 。\n", - "\n", - "BOS i want to be the one who UNK . EOS\n", - "BOS 我 想 成 为 决 策 的 人 。 EOS\n", - "translation: 我 想 要 成 为 死 。\n", - "\n", - "BOS tom has been struck by lightning three times . EOS\n", - "BOS 湯 姆 被 閃 電 擊 中 過 三 次 。 EOS\n", - "translation: 湯 姆 被 閃 電 擊 中 受 三 次 。\n", - "\n", - "BOS i think you 're a really nice guy . EOS\n", - "BOS 我 認 為 你 真 的 是 一 個 好 人 。 EOS\n", - "translation: 我 觉 得 你 是 个 好 人 。\n", - "\n", - "BOS tom has a lot of experience in computers . EOS\n", - "BOS 汤 姆 对 电 脑 有 很 多 经 验 。 EOS\n", - "translation: 汤 姆 必 须 有 很 多 经 验 。\n", - "\n", - "BOS tom was there UNK , but not UNK . EOS\n", - "BOS 汤 姆 人 在 心 不 在 。 EOS\n", - "translation: 汤 姆 , 不 在 那 里 。\n", - "\n", - "BOS my baby began crying , asking for milk . EOS\n", - "BOS 我 的 宝 宝 开 始 哭 了 , 他 想 要 吃 奶 。 EOS\n", - "translation: 我 的 宝 宝 开 始 哭 了 , 他 想 要 吃 奶 。\n", - "\n", - "BOS my parents ' UNK went through the war . EOS\n", - "BOS 我 父 母 那 一 代 经 历 过 战 争 。 EOS\n", - "translation: 我 父 母 去 世 了 。\n", - "\n", - "BOS his little brother is a famous soccer player . EOS\n", - "BOS 他 弟 弟 是 个 有 名 的 足 球 选 手 。 EOS\n", - "translation: 他 的 兄 弟 有 一 点 足 球 选 手 。\n", - "\n", - "BOS i tried to convince tom to come home . EOS\n", - "BOS 我 试 着 说 服 汤 姆 回 家 。 EOS\n", - "translation: 我 试 着 说 汤 姆 回 家 。\n", - "\n", - "BOS i do n't know how to handle children . EOS\n", - "BOS 我 不 知 道 如 何 對 待 孩 子 。 EOS\n", - "translation: 我 不 知 道 如 何 有 孩 子 能 会 自 由 。\n", - "\n", - "BOS there are not many books on these UNK . EOS\n", - "BOS 这 些 书 架 上 没 有 很 多 书 。 EOS\n", - "translation: 這 些 書 架 上 沒 有 很 多 書 。\n", - "\n", - "BOS he said nothing , which made her angry . EOS\n", - "BOS 他 什 么 也 没 说 , 这 让 她 很 生 气 。 EOS\n", - "translation: 他 什 麼 話 沒 說 , 她 的 氣 使 她 精 神 。\n", - "\n", - "BOS i ca n't believe you 're giving up . EOS\n", - "BOS 我 不 能 相 信 你 在 放 弃 。 EOS\n", - "translation: 我 不 能 相 信 你 在 放 弃 。\n", - "\n", - "BOS i do n't like any of these records . EOS\n", - "BOS 我 不 喜 歡 這 些 唱 片 中 的 任 何 一 張 。 EOS\n", - "translation: 我 不 喜 歡 這 些 唱 片 中 的 任 何 一 張 。\n", - "\n", - "BOS some of them seem to be too difficult . EOS\n", - "BOS 其 中 一 些 似 乎 太 难 了 。 EOS\n", - "translation: 他 们 似 乎 很 难 巧 克 力 。\n", - "\n", - "BOS tom knows that i do n't like him . EOS\n", - "BOS 汤 姆 知 道 我 不 喜 欢 他 。 EOS\n", - "translation: 汤 姆 知 道 我 不 喜 欢 他 。\n", - "\n", - "BOS they talk as though they were old friends . EOS\n", - "BOS 他 们 像 老 朋 友 一 样 交 谈 。 EOS\n", - "translation: 他 们 像 老 朋 友 一 样 交 谈 。\n", - "\n", - "BOS i felt an UNK to cry out loud . EOS\n", - "BOS 我 突 然 好 想 大 叫 。 EOS\n", - "translation: 我 覺 得 好 像 個 外 出 。\n", - "\n", - "BOS let 's take a walk in the park . EOS\n", - "BOS 讓 我 們 在 公 園 裡 散 步 吧 。 EOS\n", - "translation: 讓 我 們 在 公 園 裡 散 步 。\n", - "\n", - "BOS you do n't have to do it immediately . EOS\n", - "BOS 你 没 必 要 马 上 去 做 。 EOS\n", - "translation: 你 不 必 马 上 去 做 。\n", - "\n", - "BOS this tie does n't go with my suit . EOS\n", - "BOS 這 條 領 帶 跟 我 的 西 裝 不 配 。 EOS\n", - "translation: 這 條 領 帶 跟 我 的 西 裝 不 配 。\n", - "\n", - "BOS it 's going to rain , for sure . EOS\n", - "BOS 要 下 雨 了 , 我 敢 肯 定 。 EOS\n", - "translation: 天 快 要 下 雨 了 。\n", - "\n", - "BOS i 'm getting off at the next station . EOS\n", - "BOS 我 下 一 站 下 车 。 EOS\n", - "translation: 我 下 一 站 下 车 。\n", - "\n", - "BOS i 'm sure tom will do his best . EOS\n", - "BOS 我 确 定 汤 姆 会 尽 力 去 做 。 EOS\n", - "translation: 我 確 定 湯 姆 會 盡 力 而 為 。\n", - "\n", - "BOS you do n't have to work on sundays . EOS\n", - "BOS 你 週 日 不 必 工 作 。 EOS\n", - "translation: 你 週 日 不 必 工 作 。\n", - "\n", - "BOS i 'd like to go abroad one day . EOS\n", - "BOS 我 想 有 一 天 去 国 外 。 EOS\n", - "translation: 我 希 望 出 國 。\n", - "\n", - "BOS the party was put off for a week . EOS\n", - "BOS 派 对 延 期 了 一 周 。 EOS\n", - "translation: 派 对 延 期 了 一 周 的 派 对 。\n", - "\n", - "BOS bring me a sheet of paper , please . EOS\n", - "BOS 请 带 一 张 纸 给 我 。 EOS\n", - "translation: 请 在 张 纸 上 请 给 我 。\n", - "\n", - "BOS what do you think of tom 's cooking ? EOS\n", - "BOS 你 覺 得 T o m 的 廚 藝 如 何 ? EOS\n", - "translation: 你 覺 得 T o m 的 廚 藝 如 何 ?\n", - "\n", - "BOS what do you think of japan 's economy ? EOS\n", - "BOS 您 怎 樣 看 日 本 的 經 濟 呢 ? EOS\n", - "translation: 你 覺 得 日 本 住 哪 裡 怎 麼 樣 ?\n", - "\n", - "BOS you should have helped him with his work . EOS\n", - "BOS 你 應 該 幫 他 工 作 的 。 EOS\n", - "translation: 你 應 該 幫 他 做 他 的 工 作 。\n", - "\n", - "BOS the child has a case of chicken UNK . EOS\n", - "BOS 这 孩 子 有 水 UNK 的 症 状 。 EOS\n", - "translation: 這 個 孩 子 有 價 重 量 。\n", - "\n", - "BOS he is n't going to buy a camera . EOS\n", - "BOS 他 不 打 算 买 一 个 摄 像 机 。 EOS\n", - "translation: 他 不 是 个 照 相 机 。\n", - "\n", - "BOS you ca n't speak english , can you ? EOS\n", - "BOS 你 不 会 说 英 语 , 是 吗 ? EOS\n", - "translation: 你 不 會 講 英 語 , 不 是 嗎 ?\n", - "\n", - "BOS tom made his UNK eat in the dark . EOS\n", - "BOS 汤 姆 让 他 的 UNK 人 们 在 黑 暗 下 进 餐 。 EOS\n", - "translation: 汤 姆 在 黑 暗 中 做 了 他 的 东 西 。\n", - "\n", - "BOS the situation is improving , so UNK up ! EOS\n", - "BOS 情 況 正 在 改 善 , 所 以 UNK 作 起 來 ! EOS\n", - "translation: 情 況 正 在 改 善 , 所 以 氣 !\n", - "\n", - "BOS i would like to improve my english pronunciation . EOS\n", - "BOS 我 想 改 善 我 的 英 语 发 音 。 EOS\n", - "translation: 我 想 改 善 我 的 英 语 发 音 。\n", - "\n", - "BOS i do n't want to eat lunch now . EOS\n", - "BOS 我 现 在 不 想 吃 午 饭 。 EOS\n", - "translation: 我 現 在 不 想 吃 午 飯 。\n", - "\n", - "BOS you will be able to see him tomorrow . EOS\n", - "BOS 明 天 你 可 以 看 到 他 。 EOS\n", - "translation: 你 明 天 可 以 看 到 他 。\n", - "\n", - "BOS it may be that he likes his job . EOS\n", - "BOS 他 可 能 喜 欢 他 的 工 作 。 EOS\n", - "translation: 他 可 能 喜 歡 他 的 工 作 。\n", - "\n", - "BOS i do n't know why they are fighting . EOS\n", - "BOS 我 不 知 道 他 們 為 什 麼 在 打 架 。 EOS\n", - "translation: 我 不 知 道 他 們 為 什 麼 在 打 架 。\n", - "\n", - "BOS i 'm awfully sorry that i was late . EOS\n", - "BOS 非 常 抱 歉 , 我 遲 到 了 。 EOS\n", - "translation: 我 很 抱 歉 那 個 遲 到 。\n", - "\n", - "BOS he 's not at all afraid of snakes . EOS\n", - "BOS 他 一 點 也 不 怕 蛇 。 EOS\n", - "translation: 他 一 點 也 不 怕 蛇 。\n", - "\n", - "BOS i had a really bad UNK last night . EOS\n", - "BOS 昨 晚 我 做 了 一 个 可 怕 的 UNK 梦 。 EOS\n", - "translation: 昨 晚 我 做 了 一 個 不 好 的 事 情 。\n", - "\n", - "BOS i do n't want to wait that long . EOS\n", - "BOS 我 不 想 等 那 么 久 。 EOS\n", - "translation: 我 不 想 等 那 樣 長 的 時 間 。\n", - "\n", - "BOS what 's your favorite way to cook potatoes ? EOS\n", - "BOS 你 最 喜 歡 用 什 麼 方 式 煮 馬 鈴 薯 ? EOS\n", - "translation: 你 最 喜 歡 用 什 麼 方 式 煮 馬 鈴 薯 ?\n", - "\n", - "BOS she 's almost the same height as you . EOS\n", - "BOS 她 差 不 多 和 你 一 样 高 。 EOS\n", - "translation: 她 差 點 大 概 跟 你 一 樣 高 。\n", - "\n", - "BOS i 'll take you to the bus stop . EOS\n", - "BOS 我 会 带 你 到 公 交 车 站 。 EOS\n", - "translation: 我 会 把 你 停 留 給 你 。\n", - "\n", - "BOS why do n't we get out of here ? EOS\n", - "BOS 我 们 为 什 么 不 离 开 这 里 ? EOS\n", - "translation: 我 们 为 什 么 不 离 开 这 里 ?\n", - "\n", - "BOS the man and his wife helped each other . EOS\n", - "BOS 这 男 人 和 他 妻 子 互 相 帮 助 。 EOS\n", - "translation: 这 个 男 人 和 他 的 妻 子 互 相 帮 助 。\n", - "\n", - "BOS tomorrow 's going to be a big day . EOS\n", - "BOS 明 天 是 个 大 日 子 。 EOS\n", - "translation: 明 天 天 是 个 大 人 。\n", - "\n", - "BOS people should understand that the world is changing . EOS\n", - "BOS 人 应 该 明 白 世 界 在 变 。 EOS\n", - "translation: 人 怎 麼 了 解 世 界 在 改 變 。\n", - "\n", - "BOS she insisted that i should see the doctor . EOS\n", - "BOS 她 坚 持 让 我 去 看 医 生 。 EOS\n", - "translation: 她 坚 持 让 我 去 看 医 生 。\n", - "\n", - "BOS UNK UNK UNK the price of many goods . EOS\n", - "BOS 大 量 生 產 降 低 許 多 商 品 的 價 格 。 EOS\n", - "translation: 這 個 價 格 的 價 格 對 品 有 很 多 商 品 額 。\n", - "\n", - "BOS tom is going out this afternoon with mary . EOS\n", - "BOS 今 天 下 午 汤 姆 和 玛 丽 会 一 起 出 去 。 EOS\n", - "translation: 汤 姆 今 天 下 午 出 去 。\n", - "\n", - "BOS she did n't want to speak to anyone . EOS\n", - "BOS 她 不 想 跟 任 何 人 說 話 。 EOS\n", - "translation: 她 不 想 跟 任 何 人 說 話 。\n", - "\n", - "BOS i 'm too tired to walk any further . EOS\n", - "BOS 我 累 得 再 也 走 不 動 了 。 EOS\n", - "translation: 我 累 得 再 也 不 能 麼 快 跟 別 人 走 。\n", - "\n", - "BOS the UNK means of travel is by plane . EOS\n", - "BOS 旅 行 最 快 的 方 式 是 乘 飞 机 。 EOS\n", - "translation: 旅 行 最 快 的 方 式 是 乘 飞 机 。\n", - "\n", - "BOS he UNK a plane bound for los angeles . EOS\n", - "BOS 他 登 上 了 前 往 洛 杉 矶 的 飞 机 。 EOS\n", - "translation: 他 登 上 了 前 往 洛 杉 矶 的 飞 机 。\n", - "\n", - "BOS the elevator seems to be out of order . EOS\n", - "BOS 电 梯 好 像 故 障 了 。 EOS\n", - "translation: 电 梯 好 像 故 障 了 。\n", - "\n", - "BOS tom refused to even listen to my suggestions . EOS\n", - "BOS 汤 姆 甚 至 拒 绝 听 我 的 建 议 。 EOS\n", - "translation: 汤 姆 甚 至 拒 绝 听 我 的 建 议 。\n", - "\n", - "BOS he was n't able to attend the party . EOS\n", - "BOS 他 無 法 參 加 這 個 派 對 。 EOS\n", - "translation: 他 無 法 參 加 這 個 派 對 。\n", - "\n", - "BOS he got down the book from the shelf . EOS\n", - "BOS 他 從 架 上 拿 下 書 。 EOS\n", - "translation: 他 從 架 上 拿 下 了 這 本 書 。\n", - "\n", - "BOS i 'm getting off at the next stop . EOS\n", - "BOS 我 將 在 下 一 站 下 車 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 在 下 一 站 下 起 床 。\n", - "\n", - "BOS i 'm getting off at the next station . EOS\n", - "BOS 我 會 在 下 一 站 下 車 。 EOS\n", - "translation: 我 下 一 站 下 车 。\n", - "\n", - "BOS UNK UNK was blind , deaf and UNK . EOS\n", - "BOS 海 倫 凱 勒 眼 盲 , 耳 聾 , 又 UNK 。 EOS\n", - "translation: 这 表 现 的 盲 目 , 又 相 机 。\n", - "\n", - "BOS the sum of 5 and 3 is 8 . EOS\n", - "BOS 五 和 三 的 總 和 是 八 。 EOS\n", - "translation: 五 分 之 前 離 開 。\n", - "\n", - "BOS we 'll think about it in due time . EOS\n", - "BOS 到 时 候 我 们 再 考 虑 吧 。 EOS\n", - "translation: 我 们 想 过 时 间 再 次 。\n", - "\n", - "BOS do n't let tom lie on the floor . EOS\n", - "BOS 别 让 汤 姆 躺 在 地 板 上 。 EOS\n", - "translation: 不 要 让 湯 姆 在 地 板 上 躺 。\n", - "\n", - "BOS what is the UNK of your new book ? EOS\n", - "BOS 你 新 書 的 書 名 是 什 麼 ? EOS\n", - "translation: 你 的 書 怎 麼 用 他 的 書 ?\n", - "\n", - "BOS i get two hour 's exercise every day . EOS\n", - "BOS 我 每 天 做 兩 個 小 時 的 練 習 。 EOS\n", - "translation: 我 每 天 做 兩 個 小 時 的 運 動 。\n", - "\n", - "BOS i do n't want to fail my exams . EOS\n", - "BOS 我 不 想 不 及 格 。 EOS\n", - "translation: 我 不 想 考 试 失 败 。\n", - "\n", - "BOS i was n't quite sure what to say . EOS\n", - "BOS 我 不 太 確 定 要 說 什 麼 。 EOS\n", - "translation: 我 不 太 確 定 要 說 什 麼 。\n", - "\n", - "BOS tom wo n't let you in his house . EOS\n", - "BOS 汤 姆 不 会 让 你 进 他 的 屋 子 。 EOS\n", - "translation: 汤 姆 不 会 让 你 进 他 的 房 子 。\n", - "\n", - "BOS the school is five kilometers from my home . EOS\n", - "BOS 學 校 離 我 家 有 五 公 里 遠 。 EOS\n", - "translation: 學 校 有 五 十 公 公 公 車 公 車 。\n", - "\n", - "BOS london 's climate differs from that of tokyo . EOS\n", - "BOS 伦 敦 的 气 候 和 东 京 的 不 同 。 EOS\n", - "translation: 倫 敦 的 不 和 東 京 的 不 同 地 看 起 。\n", - "\n", - "BOS your parents did n't come , did they ? EOS\n", - "BOS 你 的 父 母 沒 來 , 是 嗎 ? EOS\n", - "translation: 你 父 母 不 是 嗎 ?\n", - "\n", - "BOS excuse me for opening your letter by mistake . EOS\n", - "BOS 對 不 起 , 我 錯 開 了 你 的 信 。 EOS\n", - "translation: 对 不 起 , 把 你 的 錯 開 了 。\n", - "\n", - "BOS you do n't have to answer right away . EOS\n", - "BOS 你 不 用 马 上 回 答 。 EOS\n", - "translation: 你 不 用 跑 的 答 案 。\n", - "\n", - "BOS she did n't like living in the city . EOS\n", - "BOS 她 不 喜 歡 住 在 城 市 裡 。 EOS\n", - "translation: 她 不 喜 歡 住 在 城 市 裡 。\n", - "\n", - "BOS the number of cars is on the increase . EOS\n", - "BOS 汽 车 的 数 量 在 增 长 。 EOS\n", - "translation: 汽 车 的 数 量 在 增 长 。\n", - "\n", - "BOS i have n't seen her since last month . EOS\n", - "BOS 我 從 上 個 月 開 始 就 沒 有 看 到 她 了 。 EOS\n", - "translation: 上 個 月 我 沒 有 見 她 。\n", - "\n", - "BOS tom did n't want to talk to anyone . EOS\n", - "BOS 汤 姆 不 想 跟 任 何 人 说 话 。 EOS\n", - "translation: 汤 姆 不 想 跟 任 何 人 说 话 。\n", - "\n", - "BOS what time does the train arrive at yokohama ? EOS\n", - "BOS 火 车 什 么 时 候 到 横 滨 ? EOS\n", - "translation: 火 车 什 么 时 候 到 横 滨 ?\n", - "\n", - "BOS you 're not going in the right direction . EOS\n", - "BOS 你 要 南 UNK 北 UNK 了 。 EOS\n", - "translation: 你 在 一 點 方 不 要 往 右 邊 。\n", - "\n", - "BOS he postponed leaving for hokkaido until next month . EOS\n", - "BOS 他 延 遲 到 下 個 月 去 北 海 道 。 EOS\n", - "translation: 他 設 法 從 下 個 月 開 始 去 北 海 道 。\n", - "\n", - "BOS at first , i thought i was sick . EOS\n", - "BOS 一 开 始 , 我 以 为 我 病 了 。 EOS\n", - "translation: 起 初 , 我 覺 得 很 生 病 。\n", - "\n", - "BOS i promised him that i would come today . EOS\n", - "BOS 我 答 应 他 我 今 天 会 来 。 EOS\n", - "translation: 我 答 应 他 我 今 天 会 来 。\n", - "\n", - "BOS we had three tries and failed each time . EOS\n", - "BOS 我 们 试 了 三 次 , 都 失 败 了 。 EOS\n", - "translation: 我 们 来 试 了 三 次 , 都 没 有 时 间 失 败 了 。\n", - "\n", - "BOS i still prefer to write letters by hand . EOS\n", - "BOS 我 更 喜 欢 用 手 写 信 。 EOS\n", - "translation: 我 更 喜 欢 用 手 写 信 。\n", - "\n", - "BOS it 's no good trying to UNK her . EOS\n", - "BOS 試 圖 勸 她 是 沒 有 用 的 。 EOS\n", - "translation: 試 圖 勸 她 是 沒 有 用 的 。\n", - "\n", - "BOS they did n't know what to do first . EOS\n", - "BOS 他 們 不 知 道 先 做 什 麼 。 EOS\n", - "translation: 他 們 不 知 道 先 做 什 麼 。\n", - "\n", - "BOS some of my friends can speak english well . EOS\n", - "BOS 我 的 一 些 朋 友 英 语 说 得 很 好 。 EOS\n", - "translation: 我 的 一 些 朋 友 會 說 得 很 好 。\n", - "\n", - "BOS i want to go to see a movie . EOS\n", - "BOS 我 要 去 看 電 影 。 EOS\n", - "translation: 我 要 去 看 電 影 。\n", - "\n", - "BOS to UNK is human , to forgive divine . EOS\n", - "BOS 人 皆 有 錯 , 唯 聖 者 能 UNK 。 EOS\n", - "translation: 人 皆 有 錯 , 唯 聖 者 能 原 微 乎 能 被 切 。\n", - "\n", - "BOS tom has loved mary for a long time . EOS\n", - "BOS 汤 姆 爱 玛 丽 很 久 了 。 EOS\n", - "translation: 汤 姆 爱 玛 丽 很 久 了 。\n", - "\n", - "BOS it is n't necessary to answer that letter . EOS\n", - "BOS 沒 有 必 要 回 那 封 信 。 EOS\n", - "translation: 沒 有 必 要 回 信 。\n", - "\n", - "BOS it is high time you were in bed . EOS\n", - "BOS 你 早 该 睡 了 。 EOS\n", - "translation: 時 間 你 在 床 時 間 很 高 。\n", - "\n", - "BOS tom seems to be much UNK than me . EOS\n", - "BOS 汤 姆 看 来 比 我 高 兴 。 EOS\n", - "translation: 湯 姆 似 乎 比 賽 也 好 。\n", - "\n", - "BOS i 've had to do everything by myself . EOS\n", - "BOS 我 必 须 靠 自 己 做 所 有 事 。 EOS\n", - "translation: 我 必 须 查 一 切 代 做 。\n", - "\n", - "BOS what do you think i 've been doing ? EOS\n", - "BOS 你 觉 得 我 之 前 在 做 什 么 ? EOS\n", - "translation: 你 覺 得 我 在 做 什 麼 ?\n", - "\n", - "BOS we are in the UNK of UNK energy . EOS\n", - "BOS 我 們 身 在 原 子 能 時 代 。 EOS\n", - "translation: 我 们 在 严 肃 地 方 面 中 受 夠 了 。\n", - "\n", - "BOS we failed due to a lack of UNK . EOS\n", - "BOS 我 們 因 缺 乏 準 備 而 失 敗 了 。 EOS\n", - "translation: 我 们 被 滾 长 不 走 了 。\n", - "\n", - "BOS i 'm getting more and more gray hair . EOS\n", - "BOS 我 的 白 髮 越 來 越 多 。 EOS\n", - "translation: 我 將 清 楚 和 更 多 的 白 髮 。\n", - "\n", - "BOS we have to find out where tom is . EOS\n", - "BOS 我 们 必 须 查 明 汤 姆 在 哪 里 。 EOS\n", - "translation: 我 们 必 须 查 明 汤 姆 在 哪 里 。\n", - "\n", - "BOS i 'll never forget what you told me . EOS\n", - "BOS 我 將 永 遠 不 會 忘 記 你 告 訴 過 我 的 話 。 EOS\n", - "translation: 我 永 遠 不 會 忘 記 你 告 訴 我 的 話 。\n", - "\n", - "BOS i did n't like beer at that time . EOS\n", - "BOS 那 时 候 我 不 喜 欢 啤 酒 。 EOS\n", - "translation: 那 時 我 不 喜 歡 那 個 啤 酒 。\n", - "\n", - "BOS you ought not to have UNK the secret . EOS\n", - "BOS 你 本 不 该 透 露 秘 密 的 。 EOS\n", - "translation: 你 不 该 透 客 秘 密 。\n", - "\n", - "BOS i 'm afraid you have the wrong number . EOS\n", - "BOS 我 恐 怕 您 打 错 电 话 了 。 EOS\n", - "translation: 我 怕 你 有 零 錢 。\n", - "\n", - "BOS my sister has made remarkable progress in english . EOS\n", - "BOS 我 妹 妹 的 英 语 有 了 明 显 的 进 步 。 EOS\n", - "translation: 我 妹 妹 的 英 语 有 了 顯 的 進 步 。\n", - "\n", - "BOS you had better wait until the police come . EOS\n", - "BOS 你 最 好 等 到 警 察 前 来 。 EOS\n", - "translation: 你 最 好 等 到 警 察 前 來 。\n", - "\n", - "BOS in UNK with tokyo , london is small . EOS\n", - "BOS 和 东 京 比 , 伦 敦 很 小 。 EOS\n", - "translation: 在 倫 敦 和 東 京 正 當 小 時 。\n", - "\n", - "BOS science begins when you ask why and how . EOS\n", - "BOS 為 何 如 何 ? 你 疑 問 的 當 下 就 是 科 學 的 開 端 。 EOS\n", - "translation: 問 你 何 你 何 時 開 始 。\n", - "\n", - "BOS can i use your dictionary for a minute ? EOS\n", - "BOS 我 能 用 一 下 你 的 字 典 吗 ? EOS\n", - "translation: 我 可 以 用 你 的 字 典 嗎 ?\n", - "\n", - "BOS do you have this in a bigger size ? EOS\n", - "BOS 你 有 比 這 個 再 大 一 點 的 尺 寸 嗎 ? EOS\n", - "translation: 你 有 比 較 大 的 尺 寸 嗎 ?\n", - "\n", - "BOS i do n't know where tom was going . EOS\n", - "BOS 我 不 知 道 汤 姆 往 哪 去 了 。 EOS\n", - "translation: 我 不 知 道 湯 姆 要 去 哪 裡 。\n", - "\n", - "BOS i saw a dirty dog enter the garden . EOS\n", - "BOS 我 看 见 一 条 脏 狗 进 了 花 园 。 EOS\n", - "translation: 我 看 见 一 条 脏 狗 进 了 花 园 。\n", - "\n", - "BOS you have a really good sense of direction . EOS\n", - "BOS 你 的 方 向 感 很 好 。 EOS\n", - "translation: 你 有 幽 默 感 。\n", - "\n", - "BOS i have to stay in bed all day . EOS\n", - "BOS 我 不 得 不 一 整 天 都 待 在 床 上 。 EOS\n", - "translation: 我 得 不 一 整 天 都 呆 在 床 上 。\n", - "\n", - "BOS i hope i can see you at christmas . EOS\n", - "BOS 我 期 望 能 在 圣 诞 节 见 到 你 。 EOS\n", - "translation: 我 希 望 能 在 圣 诞 节 见 你 。\n", - "\n", - "BOS she goes to a girls ' high school . EOS\n", - "BOS 她 上 女 子 高 中 。 EOS\n", - "translation: 她 上 個 高 中 女 孩 上 同 一 樣 高 。\n", - "\n", - "BOS i ca n't believe tom is getting married . EOS\n", - "BOS 我 不 能 相 信 汤 姆 要 结 婚 了 。 EOS\n", - "translation: 我 不 能 相 信 汤 姆 结 婚 了 。\n", - "\n", - "BOS that just does n't make sense to me . EOS\n", - "BOS 那 只 是 對 我 來 說 沒 有 意 義 。 EOS\n", - "translation: 那 只 是 對 我 來 說 沒 有 意 見 。\n", - "\n", - "BOS i 'd like to pay by credit card . EOS\n", - "BOS 我 想 用 信 用 卡 支 付 。 EOS\n", - "translation: 我 想 用 信 用 卡 支 付 。\n", - "\n", - "BOS will you tell me why you like her ? EOS\n", - "BOS 你 能 告 诉 我 你 为 什 么 喜 欢 她 吗 ? EOS\n", - "translation: 你 能 告 诉 我 她 为 什 么 喜 欢 的 ?\n", - "\n", - "BOS i ca n't figure out what he means . EOS\n", - "BOS 我 不 懂 他 的 意 思 。 EOS\n", - "translation: 我 不 了 解 他 在 善 什 麼 事 。\n", - "\n", - "BOS he told me the story of his life . EOS\n", - "BOS 他 给 我 讲 述 了 他 的 一 生 。 EOS\n", - "translation: 他 告 訴 我 的 故 事 。\n", - "\n", - "BOS i 'll miss you when you 're gone . EOS\n", - "BOS 你 走 後 , 我 會 想 念 你 的 。 EOS\n", - "translation: 當 你 想 離 開 的 時 候 , 我 就 會 想 念 你 。\n", - "\n", - "BOS can you imagine walking around on the moon ? EOS\n", - "BOS 你 可 以 想 象 在 月 球 上 行 走 吗 ? EOS\n", - "translation: 你 可 以 在 月 穿 乘 坐 巴 士 嗎 ?\n", - "\n", - "BOS it 's easy for monkeys to climb trees . EOS\n", - "BOS 猴 子 爬 树 容 易 。 EOS\n", - "translation: 猴 子 爬 树 容 易 。\n", - "\n", - "BOS you are the master of your own UNK . EOS\n", - "BOS 你 才 是 自 己 命 运 的 主 人 。 EOS\n", - "translation: 你 们 自 己 做 其 他 人 努 力 。\n", - "\n", - "BOS air quality has UNK these past few years . EOS\n", - "BOS 这 些 年 空 气 质 量 恶 化 了 。 EOS\n", - "translation: 這 些 年 空 間 很 多 年 輕 三 年 了 。\n", - "\n", - "BOS he has UNK , so he works hard . EOS\n", - "BOS 他 有 抱 負 , 所 以 他 很 努 力 工 作 。 EOS\n", - "translation: 他 有 抱 負 , 所 以 他 很 努 力 工 作 。\n", - "\n", - "BOS you 're really brave , are n't you ? EOS\n", - "BOS 你 很 勇 敢 , 不 是 嗎 ? EOS\n", - "translation: 你 很 勇 敢 , 不 是 嗎 ?\n", - "\n", - "BOS tom could n't tell mary everything he knew . EOS\n", - "BOS 汤 姆 不 能 告 诉 玛 丽 他 知 道 的 所 有 事 。 EOS\n", - "translation: 汤 姆 不 能 告 诉 玛 丽 他 知 道 。\n", - "\n", - "BOS he lost a fortune in the stock market . EOS\n", - "BOS 他 玩 股 票 UNK 了 。 EOS\n", - "translation: 他 在 市 中 心 臟 患 。\n", - "\n", - "BOS she left her son a lot of money . EOS\n", - "BOS 她 留 了 很 多 钱 给 她 儿 子 。 EOS\n", - "translation: 她 留 给 她 儿 子 很 多 钱 。\n", - "\n", - "BOS the only thing i have now are memories . EOS\n", - "BOS 我 现 在 仅 有 的 东 西 就 是 我 的 记 忆 了 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 我 现 在 仅 有 的 东 西 是 我 现 在 的 记 忆 了 。\n", - "\n", - "BOS my boss assigned the hard job to me . EOS\n", - "BOS 我 老 板 把 艰 巨 的 任 务 指 派 给 了 我 。 EOS\n", - "translation: 我 老 板 把 艰 巨 的 工 作 了 我 的 工 作 。\n", - "\n", - "BOS do n't forget to put out the fire . EOS\n", - "BOS 不 要 忘 了 熄 火 。 EOS\n", - "translation: 不 要 忘 了 火 災 禍 。\n", - "\n", - "BOS i do n't want him to touch me . EOS\n", - "BOS 我 不 想 被 他 感 动 。 EOS\n", - "translation: 我 不 想 收 取 笑 他 。\n", - "\n", - "BOS he helped me to get over the difficulties . EOS\n", - "BOS 他 帮 助 我 克 服 了 困 难 。 EOS\n", - "translation: 他 幫 助 我 克 服 這 個 難 劃 。\n", - "\n", - "BOS i never thought it would come to this . EOS\n", - "BOS 我 从 没 想 过 它 会 变 成 这 样 。 EOS\n", - "translation: 我 从 来 不 这 么 说 过 。\n", - "\n", - "BOS i 'm planning to stay at the hotel . EOS\n", - "BOS 我 打 算 待 在 旅 館 裡 。 EOS\n", - "translation: 我 打 算 留 在 旅 馆 待 。\n", - "\n", - "BOS UNK , it 's going to rain tomorrow . EOS\n", - "BOS 明 天 肯 定 会 下 雨 。 EOS\n", - "translation: 明 天 天 快 要 下 雨 了 。\n", - "\n", - "BOS in esperanto there are only UNK grammar rules . EOS\n", - "BOS 世 界 語 只 有 1 6 個 語 法 規 則 。 EOS\n", - "translation: 德 語 只 有 1 9 6 個 語 對 方 語 姐 談 。\n", - "\n", - "BOS it turned out that the rumor was false . EOS\n", - "BOS 谣 言 [ 最 后 ] 证 明 是 假 的 。 EOS\n", - "translation: 谣 言 [ 最 后 ] 证 明 是 假 的 。\n", - "\n", - "BOS i guess i have n't made myself clear . EOS\n", - "BOS 我 想 我 沒 有 把 話 說 清 楚 。 EOS\n", - "translation: 我 猜 想 沒 有 把 話 給 我 們 。\n", - "\n", - "BOS you should 've rejected such an UNK proposal . EOS\n", - "BOS 你 本 该 拒 绝 一 个 那 么 不 公 平 的 提 议 。 EOS\n", - "translation: 你 不 该 这 么 忙 的 建 议 。\n", - "\n", - "BOS i think i 'm going to go now . EOS\n", - "BOS 我 认 为 我 现 在 该 走 了 。 EOS\n", - "translation: 我 认 为 我 现 在 该 走 了 。\n", - "\n", - "BOS i 'd like to have cake for dessert . EOS\n", - "BOS 我 想 吃 蛋 糕 當 點 心 。 EOS\n", - "translation: 我 想 吃 蛋 糕 。\n", - "\n", - "BOS you do n't have to take an examination . EOS\n", - "BOS 你 不 需 要 考 试 。 EOS\n", - "translation: 你 不 必 考 试 碰 考 试 。\n", - "\n", - "BOS i wish that i could speak french better . EOS\n", - "BOS 我 希 望 我 能 说 法 语 说 得 更 好 。 EOS\n", - "translation: 我 希 望 我 能 分 熟 。\n", - "\n", - "BOS do n't forget to take the UNK UNK . EOS\n", - "BOS 别 忘 了 带 上 急 救 箱 。 EOS\n", - "translation: 不 要 忘 了 關 合 理 。\n", - "\n", - "BOS she wants to know who sent the flowers . EOS\n", - "BOS 她 想 知 道 是 谁 送 的 花 。 EOS\n", - "translation: 她 想 知 道 這 個 花 園 裡 的 誰 。\n", - "\n", - "BOS do you guys want to go with me ? EOS\n", - "BOS 你 們 要 和 我 一 起 去 嗎 ? EOS\n", - "translation: 你 们 这 些 家 伙 和 我 一 起 去 吗 ?\n", - "\n", - "BOS her grandmother lived to be UNK years old . EOS\n", - "BOS 她 的 祖 母 活 到 了 8 8 岁 。 EOS\n", - "translation: 她 的 祖 母 活 住 在 大 約 。\n", - "\n", - "BOS his mother did n't want to do it . EOS\n", - "BOS 他 的 母 親 不 想 做 。 EOS\n", - "translation: 他 的 母 親 不 想 做 。\n", - "\n", - "BOS may i see your boarding pass , please ? EOS\n", - "BOS 請 讓 我 看 看 您 的 登 機 證 好 嗎 ? EOS\n", - "translation: 請 您 的 登 記 你 的 登 機 會 好 嗎 ?\n", - "\n", - "BOS the telephone was invented in UNK by bell . EOS\n", - "BOS 電 話 於 1 8 7 6 年 由 貝 爾 所 發 明 。 EOS\n", - "translation: 电 话 是 由 贝 尔 发 明 的 。\n", - "\n", - "BOS i ca n't make out what he wants . EOS\n", - "BOS 我 不 明 白 他 想 要 什 么 。 EOS\n", - "translation: 我 不 能 让 他 想 出 什 么 。\n", - "\n", - "BOS you really are rude , are n't you ? EOS\n", - "BOS 你 真 的 很 粗 魯 , 不 是 嗎 ? EOS\n", - "translation: 你 真 的 好 嗎 , 不 是 嗎 ?\n", - "\n", - "BOS could you teach me how to play the piano ? EOS\n", - "BOS 您 能 教 我 弹 钢 琴 吗 ? EOS\n", - "translation: 你 能 教 我 弹 钢 琴 吗 ?\n", - "\n", - "BOS would you please have a look at these papers ? EOS\n", - "BOS 請 你 看 看 這 些 文 件 。 EOS\n", - "translation: 你 可 以 仔 细 看 一 張 文 件 嗎 ?\n", - "\n", - "BOS it is definite that he will go to america . EOS\n", - "BOS 他 肯 定 要 去 美 国 。 EOS\n", - "translation: 他 一 定 是 去 美 国 。\n", - "\n", - "BOS which do you like better , spring or UNK ? EOS\n", - "BOS 春 天 和 秋 天 , 你 更 喜 欢 哪 个 ? EOS\n", - "translation: 春 天 和 秋 天 , 你 更 喜 欢 哪 个 ?\n", - "\n", - "BOS i always thought that tom was a bit different . EOS\n", - "BOS 我 以 前 总 认 为 汤 姆 是 有 一 些 与 众 不 同 的 。 EOS\n", - "translation: 我 以 前 总 认 为 汤 姆 不 同 样 有 点 。\n", - "\n", - "BOS she was holding a small parasol in her hand . EOS\n", - "BOS 她 手 里 握 着 一 把 小 阳 伞 。 EOS\n", - "translation: 她 握 着 一 把 小 阳 伞 。\n", - "\n", - "BOS he does n't UNK that he 's UNK deaf . EOS\n", - "BOS 他 不 知 道 他 自 己 五 音 不 全 。 EOS\n", - "translation: 他 不 知 道 他 為 什 麼 看 不 到 。\n", - "\n", - "BOS he looks a bit tired , does n't he ? EOS\n", - "BOS 他 看 起 來 有 點 累 , 不 是 嗎 ? EOS\n", - "translation: 他 看 起 來 有 點 累 , 不 是 嗎 ?\n", - "\n", - "BOS we 'll be in boston for another three weeks . EOS\n", - "BOS 我 們 還 會 在 波 士 頓 待 三 個 月 。 EOS\n", - "translation: 我 們 在 波 士 顿 一 次 待 三 個 月 份 。\n", - "\n", - "BOS it would take forever for me to explain everything . EOS\n", - "BOS 要 都 解 释 的 话 , 需 要 一 辈 子 的 时 间 。 EOS\n", - "translation: 把 所 有 的 人 都 会 努 力 地 解 我 所 做 的 。\n", - "\n", - "BOS i 'd like a glass of water , please . EOS\n", - "BOS 請 給 我 一 杯 水 。 EOS\n", - "translation: 請 給 我 一 杯 水 。\n", - "\n", - "BOS you can drive a car , ca n't you ? EOS\n", - "BOS 你 會 開 車 , 不 是 嗎 ? EOS\n", - "translation: 你 会 开 车 吗 ?\n", - "\n", - "BOS you ought to have come to see me yesterday . EOS\n", - "BOS 你 昨 天 應 該 來 看 我 的 。 EOS\n", - "translation: 你 昨 天 應 該 來 看 我 。\n", - "\n", - "BOS tom told me that he had lost his textbook . EOS\n", - "BOS 汤 姆 告 诉 我 他 丢 了 课 本 。 EOS\n", - "translation: 汤 姆 告 诉 我 他 丢 了 课 程 。\n", - "\n", - "BOS you ca n't understand this sentence , can you ? EOS\n", - "BOS 你 不 懂 这 句 句 子 , 不 是 吗 ? EOS\n", - "translation: 你 不 了 解 這 句 話 , 不 是 嗎 ?\n", - "\n", - "BOS it 's a nice day , is n't it ? EOS\n", - "BOS 美 丽 的 一 天 , 不 是 吗 ? EOS\n", - "translation: 天 氣 很 好 , 不 是 嗎 ?\n", - "\n", - "BOS i should have known better than to call him . EOS\n", - "BOS 早 知 道 我 不 應 該 打 電 話 給 他 。 EOS\n", - "translation: 我 應 該 知 道 他 的 否 要 求 。\n", - "\n", - "BOS they arrived in osaka at the beginning of may . EOS\n", - "BOS 他 们 五 月 初 到 了 大 阪 。 EOS\n", - "translation: 他 們 在 大 阪 到 達 大 阪 。\n", - "\n", - "BOS there are a lot of eggs in the box . EOS\n", - "BOS 这 个 盒 子 里 有 很 多 蛋 。 EOS\n", - "translation: 盒 子 裡 有 很 多 蛋 。\n", - "\n", - "BOS i often use UNK to access my computers UNK . EOS\n", - "BOS 我 经 常 使 用 S S UNK 来 远 程 连 接 到 我 的 电 脑 。 EOS\n", - "translation: 我 经 常 使 用 S S S S S 来 说 远 的 电 脑 。\n", - "\n", - "BOS he 's already too far away to hear us . EOS\n", - "BOS 他 已 經 離 得 太 遠 聽 不 到 我 們 了 。 EOS\n", - "translation: 他 已 經 離 開 了 我 們 很 久 了 。\n", - "\n", - "BOS he rushed into the room with his coat on . EOS\n", - "BOS 他 穿 着 衣 服 冲 进 房 间 。 EOS\n", - "translation: 他 急 忙 穿 著 他 的 外 套 。\n", - "\n", - "BOS he wrote this book at the age of twenty . EOS\n", - "BOS 他 在 2 0 岁 的 时 候 写 了 这 本 书 。 EOS\n", - "translation: 他 在 2 0 岁 的 时 候 写 了 这 本 书 。\n", - "\n", - "BOS could you put this report into italian for me ? EOS\n", - "BOS 你 可 以 為 我 把 這 份 報 告 翻 譯 成 意 大 利 文 嗎 ? EOS\n", - "translation: 你 能 把 這 份 報 告 付 的 音 訊 息 嗎 ?\n", - "\n", - "BOS i 'll take him with me to the hospital . EOS\n", - "BOS 我 會 帶 他 跟 我 一 起 去 醫 院 。 EOS\n", - "translation: 我 會 和 他 到 醫 院 。\n", - "\n", - "BOS i ca n't UNK the UNK of the problem . EOS\n", - "BOS 我 无 法 找 到 问 题 的 根 源 。 EOS\n", - "translation: 我 不 能 找 到 這 個 問 題 。\n", - "\n", - "BOS she was asked to write her name in ink . EOS\n", - "BOS 她 被 要 求 用 墨 水 写 下 她 的 名 字 。 EOS\n", - "translation: 她 被 要 求 用 墨 水 写 下 她 的 名 字 。\n", - "\n", - "BOS prices are double what they were two years ago . EOS\n", - "BOS 價 格 是 兩 年 前 的 兩 倍 。 EOS\n", - "translation: 價 格 是 兩 年 前 的 兩 倍 。\n", - "\n", - "BOS are you saying tom 's hiding something from us ? EOS\n", - "BOS 你 说 T o m 对 我 们 隐 藏 了 一 些 事 情 ? EOS\n", - "translation: 你 在 别 说 T o m 隐 藏 了 一 些 人 嗎 ?\n", - "\n", - "BOS i got over the difficulty with my UNK UNK . EOS\n", - "BOS 我 UNK UNK 性 克 服 了 困 难 。 EOS\n", - "translation: 我 很 難 對 我 的 相 處 。\n", - "\n", - "BOS what 's your favorite place to vacation in japan ? EOS\n", - "BOS 你 最 喜 欢 去 日 本 的 什 么 地 方 度 假 ? EOS\n", - "translation: 你 最 喜 歡 哪 裡 度 假 ?\n", - "\n", - "BOS hurry up , or you will miss the train . EOS\n", - "BOS 快 点 , 不 然 你 就 要 错 过 火 车 了 。 EOS\n", - "translation: 快 點 , 你 會 遲 到 了 火 車 。\n", - "\n", - "BOS tom can swim faster than anyone else i know . EOS\n", - "BOS 汤 姆 是 我 认 识 的 人 当 中 游 泳 最 快 的 。 EOS\n", - "translation: 汤 姆 能 游 泳 最 快 认 识 我 所 知 。\n", - "\n", - "BOS she discovered that she had run out of salt . EOS\n", - "BOS 她 发 现 她 已 经 断 盐 了 。 EOS\n", - "translation: 她 发 现 她 已 经 断 盐 了 。\n", - "\n", - "BOS tom told me that his father had passed away . EOS\n", - "BOS 汤 姆 告 诉 我 他 父 亲 去 世 了 。 EOS\n", - "translation: 汤 姆 告 诉 我 他 父 亲 要 往 那 条 世 了 。\n", - "\n", - "BOS is it ok if i go out with tom ? EOS\n", - "BOS 我 跟 汤 姆 外 出 行 吗 ? EOS\n", - "translation: 我 跟 T o m 離 開 嗎 ?\n", - "\n", - "BOS we speak the same language , do n't we ? EOS\n", - "BOS 我 們 說 的 是 同 樣 的 語 言 , 不 是 嗎 ? EOS\n", - "translation: 我 们 在 谈 谈 谈 论 人 吧 ?\n", - "\n", - "BOS i 'm sorry i did n't make myself clear . EOS\n", - "BOS 對 不 起 , 我 沒 講 清 楚 。 EOS\n", - "translation: 對 不 起 , 我 沒 有 讓 別 人 說 話 。\n", - "\n", - "BOS i want a UNK . i need to relax . EOS\n", - "BOS 我 想 要 按 摩 。 我 需 要 放 松 。 EOS\n", - "translation: 我 要 一 下 , 我 需 要 用 放 休 假 。\n", - "\n", - "BOS how come you know so much about japanese history ? EOS\n", - "BOS 你 為 什 麼 知 道 這 麼 多 的 日 本 歷 史 ? EOS\n", - "translation: 你 们 怎 么 来 这 么 多 高 ?\n", - "\n", - "BOS i 'd like to send this package to japan . EOS\n", - "BOS 我 想 把 這 個 包 裹 寄 到 日 本 。 EOS\n", - "translation: 我 想 把 這 個 包 裹 寄 到 日 本 。\n", - "\n", - "BOS he loves her . she loves him , too . EOS\n", - "BOS 他 愛 她 。 她 也 愛 他 。 EOS\n", - "translation: 他 愛 她 , 她 也 愛 他 了 。\n", - "\n", - "BOS i will not allow you to use my pen . EOS\n", - "BOS 我 不 允 许 你 用 我 的 钢 笔 。 EOS\n", - "translation: 我 不 会 让 你 用 我 的 钢 笔 。\n", - "\n", - "BOS tom could 've figured that out without any help . EOS\n", - "BOS 汤 姆 能 不 依 靠 任 何 帮 助 解 决 那 事 。 EOS\n", - "translation: 汤 姆 不 能 依 靠 任 何 噪 音 。\n", - "\n", - "BOS a great number of books are published every year . EOS\n", - "BOS 每 年 都 有 大 量 新 书 出 版 。 EOS\n", - "translation: 每 年 都 有 一 本 新 西 班 出 版 書 。\n", - "\n", - "BOS when you hurt others , you also hurt yourself . EOS\n", - "BOS 你 若 是 傷 害 別 人 , 你 也 會 傷 害 到 自 己 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 當 你 為 別 人 , 你 感 到 傷 害 了 你 。\n", - "\n", - "BOS it is less UNK today than it was yesterday . EOS\n", - "BOS 今 天 不 比 昨 天 UNK 熱 。 EOS\n", - "translation: 今 天 的 不 比 昨 天 的 那 天 氣 更 不 好 。\n", - "\n", - "BOS he will not be able to do the work . EOS\n", - "BOS 他 没 能 力 做 这 个 工 作 。 EOS\n", - "translation: 他 不 能 力 而 为 。\n", - "\n", - "BOS i 'm glad we hired you for this job . EOS\n", - "BOS 我 很 高 兴 我 们 录 用 了 你 来 担 任 这 份 工 作 。 EOS\n", - "translation: 我 很 高 興 讓 我 們 擔 心 這 份 工 作 。\n", - "\n", - "BOS tom , i want you to handle this one . EOS\n", - "BOS 汤 姆 , 我 想 要 你 来 操 作 这 一 个 。 EOS\n", - "translation: 汤 姆 , 我 想 让 你 来 操 作 这 一 个 。\n", - "\n", - "BOS he is doing very well considering he UNK experience . EOS\n", - "BOS 考 虑 到 他 缺 乏 经 验 , 他 做 得 [ 已 经 ] 非 常 好 了 。 EOS\n", - "translation: 他 在 考 试 干 育 活 得 [ 最 好 取 決 於 功 。\n", - "\n", - "BOS he looked around , but he saw no one . EOS\n", - "BOS 他 看 向 四 周 , 但 沒 看 到 任 何 人 。 EOS\n", - "translation: 他 看 到 四 周 , 但 沒 看 見 任 何 人 。\n", - "\n", - "BOS if you do your best , you will succeed . EOS\n", - "BOS 如 果 你 盡 力 而 為 , 你 就 會 成 功 。 EOS\n", - "translation: 如 果 你 盡 力 而 為 , 你 會 成 功 。\n", - "\n", - "BOS some people felt that tom 's behavior was UNK . EOS\n", - "BOS 一 部 分 人 感 觉 T o m 的 行 为 举 止 不 太 合 适 。 EOS\n", - "translation: 有 些 人 感 覺 到 T o m 的 行 為 。\n", - "\n", - "BOS do n't look a gift horse in the mouth . EOS\n", - "BOS 不 要 對 人 家 送 的 禮 物 挑 三 UNK 四 , 嫌 東 嫌 西 的 。 EOS\n", - "translation: 獲 人 贈 馬 , 休 看 馬 口 。\n", - "\n", - "BOS the strong wind UNK that a storm is coming . EOS\n", - "BOS 強 風 暗 示 著 即 將 到 來 的 暴 雨 。 EOS\n", - "translation: 強 風 暗 示 著 即 將 到 來 的 暴 雨 。\n", - "\n", - "BOS air is to us what water is to fish . EOS\n", - "BOS 空 气 对 人 来 说 就 是 水 对 鱼 的 意 义 。 EOS\n", - "translation: 空 气 对 水 对 水 对 水 很 少 。\n", - "\n", - "BOS the sun was shining , yet it was cold . EOS\n", - "BOS 虽 然 有 阳 光 照 射 , 但 还 是 很 冷 。 EOS\n", - "translation: 虽 然 有 阳 光 客 很 冷 , 然 氣 轉 生 。\n", - "\n", - "BOS it 's not a road , but a path . EOS\n", - "BOS 它 不 是 一 條 路 , 而 是 一 條 小 UNK 。 EOS\n", - "translation: 这 不 是 一 條 路 , 而 是 一 條 小 路 。\n", - "\n", - "BOS mastering a foreign language UNK a lot of patience . EOS\n", - "BOS 学 好 一 门 外 语 需 要 坚 UNK 不 拔 的 UNK 力 。 EOS\n", - "translation: 精 通 一 種 外 語 需 要 耐 性 。\n", - "\n", - "BOS my father will often read the newspaper during meals . EOS\n", - "BOS 我 父 亲 常 在 吃 饭 时 看 报 纸 。 EOS\n", - "translation: 我 爸 会 在 吃 饭 时 读 报 纸 。\n", - "\n", - "BOS it was foolish of you to accept his offer . EOS\n", - "BOS 你 真 笨 去 接 受 他 的 提 議 。 EOS\n", - "translation: 你 真 笨 去 接 受 他 的 提 議 。\n", - "\n", - "BOS i am looking forward to hearing from you soon . EOS\n", - "BOS 我 期 待 很 快 就 能 收 到 你 的 信 。 EOS\n", - "translation: 我 期 待 很 快 就 能 收 到 你 的 信 。\n", - "\n", - "BOS it 's not something i 'm very good at . EOS\n", - "BOS 这 不 是 我 所 擅 长 的 事 。 EOS\n", - "translation: 我 当 心 区 分 的 一 点 意 。\n", - "\n", - "BOS a lot of people swim here in the summer . EOS\n", - "BOS 许 多 人 夏 天 在 这 里 游 泳 。 EOS\n", - "translation: 许 多 人 夏 天 在 这 里 游 泳 。\n", - "\n", - "BOS because he 's sick , he ca n't come . EOS\n", - "BOS 因 為 他 生 病 了 , 所 以 他 不 能 來 。 EOS\n", - "translation: 因 為 他 病 了 , 所 以 他 不 能 來 。\n", - "\n", - "BOS research on the causes of cancer is very expensive . EOS\n", - "BOS 有 關 癌 症 成 因 的 研 究 耗 費 UNK 巨 。 EOS\n", - "translation: 有 關 癌 症 成 因 的 研 究 耗 費 住 了 。\n", - "\n", - "BOS this is the place where the battle took place . EOS\n", - "BOS 这 是 战 斗 发 生 的 地 方 。 EOS\n", - "translation: 这 是 战 斗 发 生 的 地 方 。\n", - "\n", - "BOS you can go or stay , as you wish . EOS\n", - "BOS 你 走 或 留 , 随 你 高 兴 。 EOS\n", - "translation: 你 可 以 依 靠 你 一 樣 或 留 下 去 。\n", - "\n", - "BOS the teacher has a great influence on his UNK . EOS\n", - "BOS 这 个 教 授 对 他 的 学 生 有 很 大 的 影 响 力 。 EOS\n", - "translation: 老 師 有 一 個 好 數 學 生 的 影 響 。\n", - "\n", - "BOS you 'll soon get accustomed to this cold weather . EOS\n", - "BOS 你 很 快 就 會 習 慣 這 種 冷 天 氣 。 EOS\n", - "translation: 你 很 快 就 會 習 慣 這 個 天 氣 。\n", - "\n", - "BOS it was lucky for you that you found it . EOS\n", - "BOS 你 很 幸 運 找 到 了 它 。 EOS\n", - "translation: 对 你 来 说 来 说 变 容 易 了 。\n", - "\n", - "BOS i have a friend whose father is a teacher . EOS\n", - "BOS 我 有 一 個 朋 友 , 他 的 父 親 是 老 師 。 EOS\n", - "translation: 我 有 一 個 朋 友 當 老 師 。\n", - "\n", - "BOS do n't get off the train till it stops . EOS\n", - "BOS 列 车 停 下 前 别 下 车 。 EOS\n", - "translation: 火 車 不 在 雪 停 下 來 之 間 。\n", - "\n", - "BOS which one of the two brothers did you see ? EOS\n", - "BOS 你 见 到 的 是 两 兄 弟 中 的 哪 一 个 ? EOS\n", - "translation: 你 们 两 个 兄 弟 中 见 到 哪 个 ?\n", - "\n", - "BOS i 'm fairly certain tom lives on park street . EOS\n", - "BOS 我 很 确 定 汤 姆 住 在 公 园 街 。 EOS\n", - "translation: 我 很 确 定 汤 姆 住 在 公 园 街 。\n", - "\n", - "BOS let 's draw lots to decide who goes first . EOS\n", - "BOS 来 抽 签 决 定 谁 先 走 吧 。 EOS\n", - "translation: 来 抽 海 道 谁 试 吧 。\n", - "\n", - "BOS i brought up two kids all on my own . EOS\n", - "BOS 我 一 個 人 把 兩 個 小 孩 扶 養 長 大 。 EOS\n", - "translation: 我 跟 两 个 孩 子 带 起 来 。\n", - "\n", - "BOS the house i bought is pretty far from downtown . EOS\n", - "BOS 我 買 的 房 子 離 市 中 心 比 較 遠 。 EOS\n", - "translation: 我 買 的 房 子 在 市 中 心 是 在 同 年 的 。\n", - "\n", - "BOS his office is past the bank on your left . EOS\n", - "BOS 经 过 银 行 , 左 边 就 是 他 的 办 公 室 了 。 EOS\n", - "translation: 他 的 辦 公 室 在 银 行 了 。\n", - "\n", - "BOS i want you guys to do me a favor . EOS\n", - "BOS 我 想 要 大 家 伙 帮 我 个 忙 。 EOS\n", - "translation: 我 想 要 你 们 这 个 人 帮 我 一 个 。\n", - "\n", - "BOS we should n't expect too much help from tom . EOS\n", - "BOS 我 們 不 該 期 望 從 T o m 那 得 到 太 多 幫 助 。 EOS\n", - "translation: 我 们 不 该 听 得 不 太 多 。\n", - "\n", - "BOS you had better get away from here at once . EOS\n", - "BOS 你 最 好 立 刻 離 開 這 裡 。 EOS\n", - "translation: 你 最 好 立 刻 離 開 這 裡 。\n", - "\n", - "BOS my father is too busy to take a walk . EOS\n", - "BOS 我 父 親 太 忙 而 無 法 去 散 步 。 EOS\n", - "translation: 我 父 親 太 忙 而 無 法 去 散 步 。\n", - "\n", - "BOS do n't move , or i 'll shoot you . EOS\n", - "BOS 別 動 , 不 然 我 就 開 槍 射 你 。 EOS\n", - "translation: 別 被 動 , 我 不 動 貌 蒙 蔽 了 。\n", - "\n", - "BOS i thought you had to get up by UNK . EOS\n", - "BOS 我 以 为 你 要 7 点 半 起 床 。 EOS\n", - "translation: 我 觉 得 你 该 在 开 门 。\n", - "\n", - "BOS i do n't know if he can come tonight . EOS\n", - "BOS 我 不 知 道 他 今 晚 會 不 會 來 。 EOS\n", - "translation: 我 不 知 道 他 今 晚 會 不 會 來 。\n", - "\n", - "BOS any UNK , if it is sincere , is UNK . EOS\n", - "BOS 任 何 情 绪 , 只 要 它 是 真 诚 的 , 就 说 明 它 是 发 自 内 心 的 自 然 流 露 。 EOS\n", - "translation: 如 果 那 有 話 , 那 把 它 是 真 的 。\n", - "\n", - "BOS you are no better at remembering things than i am . EOS\n", - "BOS 你 记 事 情 的 能 力 并 不 比 我 好 多 少 。 EOS\n", - "translation: 你 记 不 好 懂 事 情 使 用 少 。\n", - "\n", - "BOS whether you succeed or not depends on your own efforts . EOS\n", - "BOS 你 成 功 与 否 取 决 于 你 自 身 的 努 力 。 EOS\n", - "translation: 你 不 成 功 地 与 你 自 己 的 努 力 地 工 作 。\n", - "\n", - "BOS you 've been late for school more often than before . EOS\n", - "BOS 你 比 以 前 更 容 易 上 課 遲 到 了 。 EOS\n", - "translation: 你 在 比 以 前 學 校 遲 到 你 還 要 更 晚 上 學 習 。\n", - "\n", - "BOS give him an UNK and he 'll take a yard . EOS\n", - "BOS 得 寸 进 尺 。 EOS\n", - "translation: 给 他 留 个 院 子 和 他 一 个 石 頭 。\n", - "\n", - "BOS if you see a mistake , then please correct it . EOS\n", - "BOS 如 果 你 发 现 错 误 , 那 就 请 你 纠 正 它 。 EOS\n", - "translation: 如 果 你 看 到 错 误 , 那 种 是 真 正 的 。\n", - "\n", - "BOS tom , i want to have a chat with you . EOS\n", - "BOS T o m , 我 想 和 你 談 談 。 EOS\n", - "translation: 汤 姆 , 我 想 和 你 谈 。\n", - "\n", - "BOS tom wrote his name in the sand with a stick . EOS\n", - "BOS 汤 姆 用 UNK 子 在 沙 上 写 了 他 的 名 字 。 EOS\n", - "translation: 汤 姆 写 给 他 的 条 带 下 5 条 。\n", - "\n", - "BOS it was not long before we met again by chance . EOS\n", - "BOS 没 多 久 , 我 们 又 碰 巧 遇 到 了 。 EOS\n", - "translation: 我 们 不 久 以 前 再 见 到 的 機 會 太 久 了 。\n", - "\n", - "BOS the prince fell in love with a UNK 's daughter . EOS\n", - "BOS 王 子 愛 上 了 一 個 UNK 夫 的 女 兒 。 EOS\n", - "translation: 王 子 愛 上 了 雙 女 兒 。\n", - "\n", - "BOS they UNK to UNK as the father of english poetry . EOS\n", - "BOS 他 們 視 UNK UNK 為 英 詩 之 父 。 EOS\n", - "translation: 他 們 視 為 父 親 做 西 裝 滿 為 英 國 父 親 。\n", - "\n", - "BOS tom made a list of places he wants to visit . EOS\n", - "BOS 汤 姆 把 他 想 去 的 地 方 列 成 了 一 张 清 单 。 EOS\n", - "translation: 汤 姆 想 到 他 想 去 巴 黎 。\n", - "\n", - "BOS she followed him home to find out where he lived . EOS\n", - "BOS 她 跟 他 到 家 , 以 知 道 他 住 哪 。 EOS\n", - "translation: 她 跟 他 到 家 , 以 知 道 他 住 哪 。\n", - "\n", - "BOS people usually do n't like what they do n't understand . EOS\n", - "BOS 人 们 通 常 不 喜 欢 他 们 不 理 解 的 事 物 。 EOS\n", - "translation: 人 們 通 常 不 喜 歡 他 們 所 做 的 事 。\n", - "\n", - "BOS a good cook does n't throw out yesterday 's soup . EOS\n", - "BOS 一 個 好 的 廚 師 不 會 丟 掉 昨 天 的 湯 。 EOS\n", - "translation: 昨 天 至 少 不 要 出 去 湯 的 湯 。\n", - "\n", - "BOS the weather was so cold that the lake UNK over . EOS\n", - "BOS 天 冷 得 足 以 让 湖 结 冰 。 EOS\n", - "translation: 天 氣 很 冷 地 區 。\n", - "\n", - "BOS i have neither seen nor heard of such a thing . EOS\n", - "BOS 我 没 见 过 也 没 听 过 这 样 的 事 。 EOS\n", - "translation: 我 一 直 听 到 那 种 事 情 。\n", - "\n", - "BOS i do n't mind if it 's hot and spicy . EOS\n", - "BOS 辣 点 儿 没 关 系 。 EOS\n", - "translation: 辣 点 儿 没 关 系 。\n", - "\n", - "BOS she studied abroad in order to brush up her english . EOS\n", - "BOS 她 在 國 外 學 習 以 便 提 升 她 的 英 語 。 EOS\n", - "translation: 她 在 國 外 學 習 以 便 提 升 她 的 英 語 。\n", - "\n", - "BOS it took me three days to read through this book . EOS\n", - "BOS 它 花 了 我 三 天 时 间 去 阅 读 这 本 书 。 EOS\n", - "translation: 它 花 了 三 天 時 間 讀 書 。\n", - "\n", - "BOS tom did better this time than he did last time . EOS\n", - "BOS 汤 姆 这 次 做 得 比 上 次 好 。 EOS\n", - "translation: 汤 姆 做 这 次 最 好 的 时 候 跟 他 做 这 次 。\n", - "\n", - "BOS tom does n't know whether mary is happy or not . EOS\n", - "BOS 汤 姆 不 知 道 玛 丽 是 高 兴 呢 , 还 是 不 高 兴 。 EOS\n", - "translation: 汤 姆 不 知 道 玛 丽 是 高 兴 呢 , 还 是 不 高 兴 。\n", - "\n", - "BOS tom often reads when his children are n't at home . EOS\n", - "BOS 汤 姆 经 常 在 孩 子 们 不 在 家 时 阅 读 。 EOS\n", - "translation: 汤 姆 经 常 在 孩 子 们 不 在 家 时 阅 读 。\n", - "\n", - "BOS how long would it take to swim across the river ? EOS\n", - "BOS 游 过 这 条 河 要 多 久 ? EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 游 过 难 以 入 河 要 多 久 ?\n", - "\n", - "BOS maybe i 'll go , and maybe i wo n't . EOS\n", - "BOS 也 許 我 會 去 , 也 許 我 不 會 。 EOS\n", - "translation: 也 許 我 會 去 , 也 不 會 去 。\n", - "\n", - "BOS i vowed that i would never speak to her again . EOS\n", - "BOS 我 發 誓 再 也 不 跟 她 說 話 了 。 EOS\n", - "translation: 我 發 誓 再 也 不 再 談 論 她 了 。\n", - "\n", - "BOS there are two UNK in the number `` UNK . '' EOS\n", - "BOS 2 0 1 0 这 个 数 字 里 有 两 个 零 。 EOS\n", - "translation: “ 两 个 乘 客 有 两 个 零 錢 。 ”\n", - "\n", - "BOS they came up with a plan after a long discussion . EOS\n", - "BOS 他 们 终 于 在 漫 长 的 讨 论 之 后 得 出 了 一 个 计 划 。 EOS\n", - "translation: 他 們 终 于 在 長 大 考 试 的 时 候 离 开 了 一 個 地 计 划 台 问 员 。\n", - "\n", - "BOS he studies english , but he 's also studying german . EOS\n", - "BOS 他 学 英 语 , 但 他 也 学 德 语 。 EOS\n", - "translation: 他 會 學 習 英 語 , 但 他 也 不 會 在 德 語 。\n", - "\n", - "BOS in the UNK period , UNK parties were very popular . EOS\n", - "BOS 在 江 戶 時 代 賞 月 的 宴 會 非 常 受 歡 迎 。 EOS\n", - "translation: 在 江 七 點 鐘 的 時 候 , 但 是 對 雙 胞 胎 害 怕 歡 迎 。\n", - "\n", - "BOS i do n't go in for that sort of thing . EOS\n", - "BOS 我 讨 厌 那 种 事 。 EOS\n", - "translation: 我 讨 厌 那 种 事 情 。\n", - "\n", - "BOS tom is very good at doing things with his hands . EOS\n", - "BOS 汤 姆 善 于 动 手 做 事 。 EOS\n", - "translation: 汤 姆 在 做 他 的 事 很 好 。\n", - "\n", - "BOS there are seven men and four women in my section . EOS\n", - "BOS 在 我 的 部 门 里 有 七 男 四 女 。 EOS\n", - "translation: 在 四 月 光 四 十 七 歲 的 房 子 裡 。\n", - "\n", - "BOS i do n't expect that they will support my view . EOS\n", - "BOS 我 不 期 望 , 他 们 能 够 支 持 我 的 观 点 。 EOS\n", - "translation: 我 不 期 望 他 们 能 够 换 衣 间 。\n", - "\n", - "BOS he did n't say a word to me all day . EOS\n", - "BOS 他 一 天 也 没 跟 我 说 一 句 话 。 EOS\n", - "translation: 他 不 說 話 , 我 每 天 都 不 說 謊 。\n", - "\n", - "BOS she 's busy now and ca n't speak to you . EOS\n", - "BOS 她 現 在 忙 , 沒 有 辦 法 跟 你 們 說 話 。 EOS\n", - "translation: 她 現 在 忙 , 不 能 跟 你 說 話 。\n", - "\n", - "BOS my uncle comes to see me from time to time . EOS\n", - "BOS 我 叔 叔 偶 爾 來 看 我 。 EOS\n", - "translation: 我 叔 叔 偶 爾 來 看 我 。\n", - "\n", - "BOS i do n't feel like taking a walk this morning . EOS\n", - "BOS 我 今 天 早 上 不 想 散 步 。 EOS\n", - "translation: 今 天 早 上 我 想 散 步 。\n", - "\n", - "BOS i took him to the most expensive restaurant on campus . EOS\n", - "BOS 我 把 他 带 到 校 区 里 最 贵 的 餐 馆 去 了 。 EOS\n", - "translation: 我 帶 他 到 最 大 的 餐 廳 裡 。\n", - "\n", - "BOS do you think that he is equal to the task ? EOS\n", - "BOS 你 认 为 他 能 够 胜 任 这 个 任 务 吗 ? EOS\n", - "translation: 你 覺 得 他 可 以 提 前 夠 的 嗎 ?\n", - "\n", - "BOS the beach is an UNK place for children to play . EOS\n", - "BOS 海 滩 是 一 个 供 孩 子 们 玩 乐 的 理 想 场 所 。 EOS\n", - "translation: 海 滩 是 一 个 供 孩 子 们 玩 乐 的 办 。\n", - "\n", - "BOS it seems that most people only UNK in the summer . EOS\n", - "BOS 人 們 似 乎 只 在 夏 天 烤 肉 。 EOS\n", - "translation: 这 看 起 来 像 个 人 只 现 象 。\n", - "\n", - "BOS i do not for a moment think you are wrong . EOS\n", - "BOS 我 从 没 认 为 你 错 了 。 EOS\n", - "translation: 我 不 認 為 你 錯 了 。\n", - "\n", - "BOS he wishes he had gone to the theater last night . EOS\n", - "BOS 昨 晚 他 希 望 他 去 了 剧 场 。 EOS\n", - "translation: 他 希 望 他 去 剧 场 。\n", - "\n", - "BOS my hands were shaking too much to thread the needle . EOS\n", - "BOS 我 的 手 UNK 得 太 厉 害 , 没 法 穿 针 了 。 EOS\n", - "translation: 我 的 手 得 太 厉 害 , 以 至 少 變 又 穿 针 了 。\n", - "\n", - "BOS tom and mary even always wear the same color clothes . EOS\n", - "BOS 汤 姆 和 玛 丽 甚 至 经 常 穿 同 样 颜 色 的 衣 服 。 EOS\n", - "translation: 汤 姆 和 玛 丽 甚 至 少 穿 同 样 颜 色 的 衣 服 。\n", - "\n", - "BOS you made the mistake on purpose , did n't you ? EOS\n", - "BOS 你 故 意 犯 這 個 錯 , 是 嗎 ? EOS\n", - "translation: 你 犯 了 目 标 , 不 是 嗎 ?\n", - "\n", - "BOS every great writer seems to have been interested in english . EOS\n", - "BOS 每 一 個 偉 大 的 作 家 似 乎 已 經 對 英 語 感 興 趣 。 EOS\n", - "translation: 每 一 個 偉 大 的 作 家 似 乎 已 經 對 英 語 感 興 趣 。\n", - "\n", - "BOS every time i went to his place , he was studying . EOS\n", - "BOS 每 次 我 去 他 住 處 , 他 都 在 讀 書 。 EOS\n", - "translation: 我 每 次 去 他 住 書 , 他 都 在 讀 書 。\n", - "\n", - "BOS you do n't go to school on sunday , do you ? EOS\n", - "BOS 你 週 日 不 上 學 , 對 嗎 ? EOS\n", - "translation: 你 週 日 不 去 上 學 嗎 ?\n", - "\n", - "BOS i always enjoy listening to classical music in my free time . EOS\n", - "BOS 有 空 的 时 候 , 我 总 喜 欢 听 古 典 音 乐 。 EOS\n", - "translation: 我 的 观 點 起 來 表 示 的 時 候 , 他 的 資 性 都 很 有 空 。\n", - "\n", - "BOS i am used to hearing the train pass by my house . EOS\n", - "BOS 我 已 经 习 惯 了 家 门 口 过 火 车 的 声 音 了 。 EOS\n", - "translation: 我 听 到 车 外 通 过 了 伤 的 消 息 。\n", - "\n", - "BOS i can speak chinese , but i ca n't read chinese . EOS\n", - "BOS 我 會 說 中 文 , 但 是 我 不 會 讀 中 文 。 EOS\n", - "translation: 我 會 說 中 文 , 但 是 我 不 會 讀 中 文 。\n", - "\n", - "BOS i used to eat pizza , but now i do n't . EOS\n", - "BOS 我 以 前 吃 披 萨 , 但 现 在 不 了 。 EOS\n", - "translation: 我 以 前 吃 披 萨 , 但 现 在 不 吃 披 薩 。\n", - "\n", - "BOS only one third of the members turned up at the meeting . EOS\n", - "BOS 仅 三 分 之 一 的 成 员 出 席 了 会 议 。 EOS\n", - "translation: 仅 仅 有 三 個 人 會 議 的 成 為 這 場 會 議 立 醫 生 立 刻 。\n", - "\n", - "BOS i should have tried out this electric UNK before buying it . EOS\n", - "BOS 我 本 该 在 买 下 这 个 电 动 UNK 须 刀 之 前 试 一 下 的 。 EOS\n", - "translation: 我 该 在 买 下 这 个 电 动 物 。\n", - "\n", - "BOS i ca n't get at the exact meaning of the sentence . EOS\n", - "BOS 我 抓 不 到 句 子 的 确 切 含 义 。 EOS\n", - "translation: 我 不 能 在 乎 確 種 句 子 的 意 思 。\n", - "\n", - "BOS he quickly made friends with the new boy on the UNK . EOS\n", - "BOS 他 很 快 便 与 小 区 里 新 来 的 男 孩 交 上 了 朋 友 。 EOS\n", - "translation: 他 很 快 樂 地 跟 這 個 男 孩 交 上 了 朋 友 見 。\n", - "\n", - "BOS feel free to get yourself a drink if you are thirsty . EOS\n", - "BOS 觉 得 渴 了 就 喝 点 。 EOS\n", - "translation: 要 花 很 多 時 間 間 喝 心 嗎 ?\n", - "\n", - "BOS how long does it take to go to okinawa by plane ? EOS\n", - "BOS 坐 飛 機 去 UNK 繩 要 花 多 長 時 間 ? EOS\n", - "translation: 坐 登 山 後 坐 哪 裡 ?\n", - "\n", - "BOS to tell the truth , i do n't agree with you . EOS\n", - "BOS 实 话 说 , 我 不 赞 成 你 。 EOS\n", - "translation: 告 訴 我 不 要 相 關 你 的 意 見 。\n", - "\n", - "BOS do you know if my father is still in the office ? EOS\n", - "BOS 你 知 道 我 父 親 是 否 還 在 辦 公 室 嗎 ? EOS\n", - "translation: 你 知 道 我 父 親 在 辦 公 室 嗎 ?\n", - "\n", - "BOS tom added both his and mary 's name to the list . EOS\n", - "BOS 汤 姆 将 他 自 己 和 玛 丽 的 名 字 添 加 到 了 名 单 上 。 EOS\n", - "translation: 汤 姆 将 他 和 玛 丽 的 名 字 添 加 到 玛 丽 的 名 单 上 。\n", - "\n", - "BOS you should not have lent the money to such a person . EOS\n", - "BOS 你 不 應 該 借 錢 給 這 樣 的 人 。 EOS\n", - "translation: 你 不 應 該 借 個 人 的 , 那 麼 那 麼 你 為 這 樣 子 的 。\n", - "\n", - "BOS the child had no UNK on although it was very cold . EOS\n", - "BOS 尽 管 天 气 很 冷 , 孩 子 却 没 有 大 衣 穿 。 EOS\n", - "translation: 尽 管 天 气 不 好 像 很 冷 。\n", - "\n", - "BOS all of you are familiar with the truth of the story . EOS\n", - "BOS 你 們 所 有 的 人 都 熟 悉 這 個 故 事 的 真 相 。 EOS\n", - "translation: 你 們 所 有 的 人 都 熟 悉 這 個 故 事 對 真 相 。\n", - "\n", - "BOS i 'm glad that i did n't buy something like this . EOS\n", - "BOS 我 很 高 兴 没 有 买 这 样 的 东 西 。 EOS\n", - "translation: 我 很 高 興 没 能 买 这 个 东 西 。\n", - "\n", - "BOS i had hardly left home when it began to rain heavily . EOS\n", - "BOS 當 雨 開 始 下 得 很 大 的 時 候 , 我 幾 乎 不 能 出 門 了 。 EOS\n", - "translation: 當 雨 開 始 下 得 很 大 的 時 候 離 開 。\n", - "\n", - "BOS let 's talk over a cup of tea , shall we ? EOS\n", - "BOS 我 们 用 喝 茶 的 时 间 谈 谈 , 好 吗 ? EOS\n", - "translation: 我 们 用 少 谈 谈 谈 谈 吧 , 好 吗 ?\n", - "\n", - "BOS i feel as if i 've UNK up from a UNK . EOS\n", - "BOS 我 覺 得 我 好 像 從 惡 夢 中 驚 醒 。 EOS\n", - "translation: 我 覺 得 我 好 像 被 外 操 作 。\n", - "\n", - "BOS i 'm sure tom wo n't have any trouble finding us . EOS\n", - "BOS 我 确 定 汤 姆 找 到 我 们 没 有 任 何 问 题 。 EOS\n", - "translation: 我 確 定 湯 姆 不 準 備 我 們 都 找 到 了 。\n", - "\n", - "BOS tom is in prison for a UNK he did n't UNK . EOS\n", - "BOS 汤 姆 为 他 不 认 的 罪 进 了 监 狱 。 EOS\n", - "translation: 汤 姆 在 他 不 当 里 。\n", - "\n", - "BOS a bicycle will UNK if you leave it in the rain . EOS\n", - "BOS 如 果 你 把 自 行 車 留 在 雨 中 , 它 會 生 UNK 的 。 EOS\n", - "translation: 如 果 你 离 开 的 自 行 车 , 一 口 下 雨 会 干 了 。\n", - "\n", - "BOS there must be a way to arrive at a UNK solution . EOS\n", - "BOS 必 须 有 外 交 解 决 的 途 径 。 EOS\n", - "translation: 必 须 有 交 解 决 的 交 解 决 。\n", - "\n", - "BOS there was only one UNK on duty when the UNK started . EOS\n", - "BOS 暴 動 開 始 時 只 有 一 位 監 獄 長 值 班 。 EOS\n", - "translation: 差 不 多 1 9 0 個 人 在 幾 個 月 起 床 。\n", - "\n", - "BOS tom UNK out the towel and hung it up to dry . EOS\n", - "BOS 汤 姆 UNK 干 毛 巾 挂 起 来 UNK 干 。 EOS\n", - "translation: 汤 姆 把 毛 巾 挂 起 来 的 地 方 放 在 大 。\n", - "\n", - "BOS he wore a UNK so that no one could recognize him . EOS\n", - "BOS 他 戴 著 面 具 以 至 於 沒 有 人 認 出 他 。 EOS\n", - "translation: 他 穿 了 那 么 多 女 人 無 法 認 出 他 的 看 來 。\n", - "\n", - "BOS france is running a welfare state it can no longer afford . EOS\n", - "BOS 法 國 是 一 個 福 利 國 家 , 但 它 卻 不 再 能 夠 負 擔 得 起 了 。 EOS\n", - "translation: 法 國 是 一 個 福 利 國 家 , 但 它 卻 沒 有 辦 法 。\n", - "\n", - "BOS a bird in the hand is worth two in the bush . EOS\n", - "BOS 一 鳥 在 手 勝 過 二 鳥 在 林 。 EOS\n", - "translation: 一 鳥 在 手 勝 過 二 鳥 在 林 。\n", - "\n", - "BOS people who will lie for you , will lie to you . EOS\n", - "BOS 会 为 你 说 谎 的 人 , 就 会 对 你 说 谎 。 EOS\n", - "translation: 人 會 說 你 為 甚 麼 , 你 會 講 謊 。\n", - "\n", - "BOS i 'll drop by the post office on the way home . EOS\n", - "BOS 我 会 在 回 家 的 路 上 顺 便 去 邮 局 。 EOS\n", - "translation: 我 会 在 回 家 的 路 上 。\n", - "\n", - "BOS can you give me a ride to the office on wednesday ? EOS\n", - "BOS 周 三 你 可 以 载 我 到 办 公 室 吗 ? EOS\n", - "translation: 周 三 你 可 以 载 我 到 办 公 室 吗 ?\n", - "\n", - "BOS like it or not , we have to attend that meeting . EOS\n", - "BOS 不 管 喜 不 喜 歡 , 我 們 都 得 參 加 那 個 會 議 。 EOS\n", - "translation: 那 天 , 我 们 不 起 来 的 会 议 。\n", - "\n", - "BOS i go to the office by bicycle except on rainy days . EOS\n", - "BOS 除 了 雨 天 , 我 都 是 骑 车 去 上 班 的 。 EOS\n", - "translation: 除 了 雨 天 , 我 都 在 上 班 。\n", - "\n", - "BOS let me read the paper when you have finished with it . EOS\n", - "BOS 报 纸 看 完 后 借 我 看 下 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 讓 我 看 你 的 醫 院 。\n", - "\n", - "BOS he UNK a fortune in stock UNK during the last UNK . EOS\n", - "BOS 他 在 上 个 景 气 时 期 炒 股 UNK 下 了 一 笔 钱 。 EOS\n", - "translation: 他 在 校 遇 見 時 間 很 危 險 。\n", - "\n", - "BOS it cost me ten thousand yen to have my television set repaired . EOS\n", - "BOS 把 我 的 電 視 機 修 好 花 了 我 一 萬 日 元 。 EOS\n", - "translation: 把 我 的 電 視 機 拿 大 了 十 0 日 元 買 它 花 板 。\n", - "\n", - "BOS as soon as the bell rang the teacher came into the classroom . EOS\n", - "BOS 鐘 聲 一 響 起 , 老 師 就 走 進 了 教 室 。 EOS\n", - "translation: 老 師 進 了 教 堂 。\n", - "\n", - "BOS quite by chance , i met my old friend in the airport . EOS\n", - "BOS 很 幸 运 地 , 我 在 机 场 遇 到 了 我 的 老 朋 友 。 EOS\n", - "translation: 很 幸 运 , 我 在 机 场 遇 到 了 老 朋 友 。\n", - "\n", - "BOS do n't you think it 's strange that he 's not here ? EOS\n", - "BOS 他 不 在 这 儿 你 不 觉 得 这 很 奇 怪 吗 ? EOS\n", - "translation: 你 不 認 為 這 裡 的 美 國 嗎 ?\n", - "\n", - "BOS the leaves of the trees in the garden have turned completely red . EOS\n", - "BOS 花 园 里 树 上 的 叶 子 已 经 完 全 变 红 了 。 EOS\n", - "translation: 花 園 裡 的 树 被 樹 絆 住 了 。\n", - "\n", - "BOS it is not easy to catch a hare with your UNK hands . EOS\n", - "BOS 空 手 赤 拳 抓 野 兔 並 不 容 易 。 EOS\n", - "translation: 空 手 赤 拳 抓 野 兔 並 不 容 易 的 抓 印 度 。\n", - "\n", - "BOS she employed a private detective to keep a watch on her husband . EOS\n", - "BOS 她 僱 了 一 個 私 人 UNK 探 看 守 她 的 丈 夫 。 EOS\n", - "translation: 她 僱 用 一 個 私 人 探 看 望 她 的 丈 夫 。\n", - "\n", - "BOS i do n't know if he would have done it for me . EOS\n", - "BOS 我 不 知 道 他 是 否 已 经 为 我 做 好 了 。 EOS\n", - "translation: 我 不 知 道 他 為 何 如 何 做 完 成 我 的 事 。\n", - "\n", - "BOS excuse me , i have to get off at the next stop . EOS\n", - "BOS 对 不 起 , 我 要 在 下 一 站 下 。 EOS\n", - "translation: 对 不 起 , 我 不 在 下 一 站 下 车 里 出 去 。\n", - "\n", - "BOS i 'm now rich enough to afford to get anything i want . EOS\n", - "BOS 我 现 在 富 得 能 买 我 想 要 的 任 何 东 西 。 EOS\n", - "translation: 我 现 在 已 经 想 找 够 了 什 么 。\n", - "\n", - "BOS to the best of my knowledge , the rumor is not true . EOS\n", - "BOS 据 我 所 知 , 这 个 谣 言 不 是 真 的 。 EOS\n", - "translation: 我 所 知 道 的 , 这 是 真 的 只 是 认 为 这 样 的 人 。\n", - "\n", - "BOS it 's quite difficult to master french in 2 or 3 years . EOS\n", - "BOS 很 难 在 2 、 3 年 内 掌 握 法 语 。 EOS\n", - "translation: 很 难 在 2 、 3 年 内 掌 握 法 语 。\n", - "\n", - "BOS `` where 's your book ? '' `` on the table . '' EOS\n", - "BOS 「 你 的 書 在 哪 ? 」 「 在 桌 上 。 」 EOS\n", - "translation: “ 你 的 書 在 哪 裡 ? ” “ 它 在 桌 上 ? ”\n", - "\n", - "BOS they fine you in singapore if you throw trash in the streets . EOS\n", - "BOS 在 新 加 坡 的 街 道 上 扔 垃 圾 会 被 UNK 款 。 EOS\n", - "translation: 在 新 加 坡 的 街 道 上 扔 垃 圾 会 对 你 来 说 。\n", - "\n", - "BOS it was difficult for him to hide his pride in his success . EOS\n", - "BOS 他 很 难 掩 饰 对 自 己 成 功 的 骄 傲 。 EOS\n", - "translation: 他 很 難 把 他 的 成 功 歸 咎 於 小 的 人 。\n", - "\n", - "BOS as soon as she opened the door , a cat ran out . EOS\n", - "BOS 她 一 開 門 , 一 隻 貓 就 跑 了 出 來 。 EOS\n", - "translation: 她 一 邊 開 門 後 , 一 隻 貓 一 邊 開 始 。\n", - "\n", - "BOS you should n't say that kind of thing when children are around . EOS\n", - "BOS 孩 子 们 在 旁 边 的 时 候 , 你 不 应 该 说 那 种 事 。 EOS\n", - "translation: 當 你 不 應 該 說 實 話 。\n", - "\n", - "BOS i told tom that i thought his house needed to be painted . EOS\n", - "BOS 我 告 诉 汤 姆 我 认 为 他 的 房 子 要 刷 漆 。 EOS\n", - "translation: 我 告 诉 汤 姆 我 认 为 他 的 房 子 要 刷 漆 。\n", - "\n", - "BOS step out of the car and place your hands behind your back . EOS\n", - "BOS 下 车 , 把 手 放 在 背 后 。 EOS\n", - "translation: 走 進 了 你 的 車 和 手 。\n", - "\n", - "BOS i ca n't take the place of her as an english teacher . EOS\n", - "BOS 我 无 法 取 代 她 做 英 语 老 师 。 EOS\n", - "translation: 我 無 法 讓 她 的 老 師 訂 一 下 。\n", - "\n", - "BOS if he is innocent , it follows that his wife is guilty . EOS\n", - "BOS 如 果 他 是 清 白 的 , 那 他 妻 子 就 有 罪 。 EOS\n", - "translation: 如 果 他 是 清 白 的 , 那 他 妻 子 就 有 罪 。\n", - "\n", - "BOS a couch potato is something that i do n't want to be . EOS\n", - "BOS 我 不 想 成 為 整 天 泡 在 沙 發 上 看 電 視 的 人 。 EOS\n", - "translation: 我 长 的 长 时 间 不 想 成 为 海 。\n", - "\n", - "BOS in case of an emergency , get in touch with my UNK . EOS\n", - "BOS 万 一 有 紧 急 情 况 , 联 系 我 的 代 理 人 。 EOS\n", - "translation: 在 我 的 急 情 況 下 , 可 以 對 著 我 的 急 情 況 度 。\n", - "\n", - "BOS according to tv news , there was a plane crash in india . EOS\n", - "BOS 根 据 电 视 新 闻 , 一 架 飞 机 在 印 度 坠 毁 了 。 EOS\n", - "translation: 根 據 看 電 視 在 印 度 上 的 那 裡 的 困 難 。\n", - "\n", - "BOS it took me a little more time than usually to fall asleep . EOS\n", - "BOS 我 花 了 比 平 常 多 一 點 的 時 間 入 睡 。 EOS\n", - "translation: 我 花 了 比 平 常 多 一 點 的 時 間 結 婚 。\n", - "\n", - "BOS my brother is not as tall as i was two years ago . EOS\n", - "BOS 我 弟 弟 没 我 两 年 前 高 。 EOS\n", - "translation: 我 哥 哥 不 和 我 兩 年 前 都 公 高 。\n", - "\n", - "BOS since i had met him once before , i recognized him right away . EOS\n", - "BOS 由 於 我 以 前 見 過 他 一 次 , 所 以 我 馬 上 就 認 出 他 了 。 EOS\n", - "translation: 在 他 那 時 見 到 他 , 我 就 逃 交 遇 見 了 他 。\n", - "\n", - "BOS no other mountain in the world is as tall as mt . UNK . EOS\n", - "BOS 世 界 上 任 何 山 UNK 都 达 不 到 珠 UNK 朗 瑪 UNK 的 高 度 。 EOS\n", - "translation: 世 界 上 的 山 頭 髮 愈 。\n", - "\n", - "BOS he always left the problem of his children 's education to his wife . EOS\n", - "BOS 他 總 是 把 孩 子 的 教 育 問 題 留 給 他 的 妻 子 。 EOS\n", - "translation: 他 總 是 留 在 他 的 妻 子 教 育 問 題 。\n", - "\n", - "BOS why do n't you wait here while i finish what i 'm doing ? EOS\n", - "BOS 为 什 么 你 不 在 这 里 等 到 我 做 完 为 止 ? EOS\n", - "translation: 你 为 什 么 不 在 这 儿 等 我 做 完 成 你 的 事 ?\n", - "\n", - "BOS london , where i live , used to be famous for its fog . EOS\n", - "BOS 我 住 的 地 方 - 倫 敦 , 從 前 以 霧 聞 名 。 EOS\n", - "translation: 倫 敦 後 , 我 以 古 錢 還 在 哪 裡 。\n", - "\n", - "BOS this is where i want to live for the rest of my life . EOS\n", - "BOS 這 裡 是 我 餘 生 想 待 的 地 方 EOS\n", - "translation: 这 是 我 继 续 住 的 人 。\n", - "\n", - "BOS `` the phone is ringing . '' `` i 'll get it . '' EOS\n", - "BOS “ 电 话 响 了 。 ” “ 我 来 接 。 ” EOS\n", - "translation: “ 电 话 响 了 。 ” “ 我 来 接 。 ”\n", - "\n", - "BOS when i was a child , i used to swim in that pond . EOS\n", - "BOS 当 我 还 是 个 孩 子 的 时 候 , 我 在 这 个 泳 池 里 游 过 泳 。 EOS\n", - "translation: 當 我 到 這 個 孩 子 長 的 時 候 , 我 在 這 個 孩 子 游 泳 池 裡 游 得 到 底 到 底 者 裡 游 到 底 覺 得 到 底 者 。\n", - "\n", - "BOS tom told mary he could n't do what she asked him to do . EOS\n", - "BOS 汤 姆 告 诉 玛 丽 他 不 能 做 她 要 他 做 的 事 。 EOS\n", - "translation: 汤 姆 告 诉 玛 丽 他 不 能 做 什 么 。\n", - "\n", - "BOS sorry , but can you show me the way to the next village ? EOS\n", - "BOS 能 不 能 麻 烦 你 告 诉 我 去 邻 村 怎 么 走 ? EOS\n", - "translation: 對 不 起 , 我 可 以 告 訴 你 的 村 莊 或 在 這 個 人 好 人 嗎 ?\n", - "\n", - "BOS you look tired . you ought to rest for an hour or two . EOS\n", - "BOS 你 看 起 來 很 累 。 你 應 該 休 息 一 兩 個 小 時 。 EOS\n", - "translation: 你 看 起 來 很 累 , 以 前 该 休 息 一 兩 個 小 時 。\n", - "\n", - "BOS he 's not such a great writer and i think he knows it . EOS\n", - "BOS 他 不 是 那 么 出 色 的 作 家 我 想 他 知 道 这 一 点 。 EOS\n", - "translation: 他 不 是 那 么 大 的 作 家 伙 认 为 我 想 起 。\n", - "\n", - "BOS i know it 's time to go , but i want to stay longer . EOS\n", - "BOS 我 知 道 該 走 了 , 但 我 想 留 久 一 點 。 EOS\n", - "translation: 我 知 道 該 留 下 , 但 我 想 不 去 。\n", - "\n", - "BOS tom does n't quite get it . could you explain it to him again ? EOS\n", - "BOS 汤 姆 不 大 明 白 。 你 能 再 跟 他 解 释 一 遍 吗 ? EOS\n", - "translation: 汤 姆 不 太 认 识 他 了 吗 ?\n", - "\n", - "BOS we 're out of tissue paper , so i need to go buy some . EOS\n", - "BOS 衛 生 紙 用 完 了 , 我 必 須 去 買 。 EOS\n", - "translation: 衛 生 紙 用 完 了 , 我 必 須 出 去 。\n", - "\n", - "BOS i 'll lend you the book as soon as i 'm done reading it . EOS\n", - "BOS 我 一 把 这 本 书 读 完 了 就 借 给 你 。 EOS\n", - "translation: 我 立 刻 回 信 給 你 。\n", - "\n", - "BOS we did not expect him to finish the task in so short a time . EOS\n", - "BOS 我 们 没 指 望 过 他 在 那 么 短 的 时 间 里 完 成 工 作 。 EOS\n", - "translation: 我 们 没 有 期 望 到 他 做 完 成 的 事 。\n", - "\n", - "BOS i would rather live by myself than do as he tells me to do . EOS\n", - "BOS 我 寧 願 自 己 獨 立 生 活 也 不 要 他 來 指 使 我 。 EOS\n", - "translation: 我 寧 願 自 己 獨 立 生 活 也 不 要 他 來 指 使 我 。\n", - "\n", - "BOS mary has a bad back . it 's hard for her to lift things . EOS\n", - "BOS 瑪 麗 的 背 不 好 , 她 很 難 把 東 西 舉 起 來 。 EOS\n", - "translation: 玛 丽 对 她 来 说 的 体 重 健 康 太 差 了 。\n", - "\n", - "BOS you 're going to wreck your eyesight if you play games all the time . EOS\n", - "BOS 要 是 你 老 打 游 戏 的 话 , 你 的 视 力 会 下 降 的 。 EOS\n", - "translation: 要 是 你 老 先 下 次 戲 劇 , 你 的 视 力 。\n", - "\n", - "BOS if you heard her speak english , you would take her for an american . EOS\n", - "BOS 如 果 你 听 到 她 讲 的 英 语 , 你 会 以 为 她 是 美 国 人 呢 。 EOS\n", - "translation: 如 果 你 听 到 她 讲 的 英 语 , 你 会 为 她 是 美 国 人 呢 。\n", - "\n", - "BOS had he known what was about to happen , he would have changed his plan . EOS\n", - "BOS 要 是 他 知 道 会 发 生 什 么 , 他 就 会 改 变 计 划 。 EOS\n", - "translation: 他 知 道 会 发 生 什 么 , 尽 管 他 会 改 变 计 划 。\n", - "\n", - "BOS the ages of the two children put together was equivalent to that of their father . EOS\n", - "BOS 两 个 孩 子 的 年 龄 加 起 来 和 他 们 的 父 亲 相 当 。 EOS\n", - "translation: 两 个 孩 子 的 年 龄 加 起 来 很 大 的 父 亲 。\n", - "\n", - "BOS tom wrote mary a long letter , but he did n't send it to her . EOS\n", - "BOS 汤 姆 给 玛 丽 写 了 封 长 信 , 可 是 没 有 寄 给 她 。 EOS\n", - "translation: 汤 姆 给 玛 丽 写 信 , 但 他 没 有 遇 到 。\n", - "\n", - "BOS it says in the bible , `` man shall not live on bread alone . '' EOS\n", - "BOS 圣 经 里 有 一 句 话 , 叫 做 “ 人 不 能 只 靠 面 包 生 活 ” 。 EOS\n", - "translation: 外 面 說 一 個 人 可 以 不 用 的 男 人 依 靠 面 。\n", - "\n", - "BOS `` where were you ? '' `` i was at a friend 's house . '' EOS\n", - "BOS “ 你 在 哪 里 ? ” “ 我 在 一 个 朋 友 家 。 ” EOS\n", - "translation: “ 你 在 哪 里 ? ” “ 我 在 一 个 朋 友 家 。 ”\n", - "\n", - "BOS i was nine years old when i asked my mom if UNK UNK really UNK . EOS\n", - "BOS 我 九 岁 的 时 候 问 我 妈 妈 圣 诞 老 人 是 否 真 的 存 在 。 EOS\n", - "translation: 當 我 在 倫 敦 的 年 紀 時 候 , 我 照 顧 望 了 你 的 老 師 。\n", - "\n", - "BOS there are some UNK , but all in all , it 's a good book . EOS\n", - "BOS 雖 然 有 一 些 印 刷 錯 誤 , 但 大 致 上 說 來 , 這 是 一 本 好 書 。 EOS\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "translation: 雖 然 有 一 些 印 度 , 但 是 它 有 一 本 小 說 一 本 小 書 。\n", - "\n", - "BOS at UNK today , our usual restaurant was closed because of a funeral in the family . EOS\n", - "BOS 今 天 午 餐 時 間 , 我 們 常 去 的 飯 館 關 門 了 , 因 為 他 們 家 在 辦 喪 事 。 EOS\n", - "translation: 今 天 午 餐 送 到 的 餐 , 因 為 我 們 的 家 人 們 家 在 辦 法 度 。\n", - "\n", - "BOS if you do n't have anything nice to say , do n't say anything at all . EOS\n", - "BOS 如 果 你 没 好 话 说 , 那 就 什 么 都 别 说 。 EOS\n", - "translation: 如 果 你 不 是 話 , 那 麼 好 地 说 話 就 不 好 了 。\n", - "\n", - "BOS `` where have you been ? '' `` i 've been to the barber 's . '' EOS\n", - "BOS 你 去 哪 儿 了 ? 我 去 了 理 发 店 。 EOS\n", - "translation: “ 你 去 哪 儿 了 ? ” “ 我 去 了 理 发 店 。 ”\n", - "\n", - "BOS `` he 'd like to have a coffee after work . '' `` i would too . '' EOS\n", - "BOS `` 他 想 在 下 班 後 喝 杯 咖 啡 。 `` `` 我 也 想 。 `` EOS\n", - "translation: “ 他 想 睡 点 觉 。 ” “ 我 也 不 起 工 作 。 ”\n", - "\n", - "BOS this is a secret just between you and me , so do n't let it slip out . EOS\n", - "BOS 这 只 是 你 和 我 之 间 的 秘 密 , 所 以 不 要 让 它 流 出 去 。 EOS\n", - "translation: 这 是 我 们 之 间 的 秘 密 , 这 只 是 不 要 让 你 身 。\n", - "\n", - "BOS i want a UNK phone , but i do n't have enough money to pay for one . EOS\n", - "BOS 我 想 要 一 支 手 機 , 但 是 我 沒 有 足 夠 的 錢 買 一 支 。 EOS\n", - "translation: 我 想 要 一 支 票 , 但 我 没 有 足 够 的 钱 。\n", - "\n", - "BOS after asking for my key at the front desk , i took the elevator to my floor . EOS\n", - "BOS 我 到 櫃 檯 拿 了 鑰 匙 , 然 後 就 乘 電 梯 去 了 我 房 間 的 樓 層 。 EOS\n", - "translation: 在 門 後 , 我 的 鑰 匙 , 門 在 桌 上 了 八 樓 見 。\n", - "\n", - "BOS `` why are you going to japan ? '' `` to attend a conference in tokyo . '' EOS\n", - "BOS “ 你 去 日 本 干 嘛 ? ” “ 去 东 京 参 加 一 个 会 议 。 ” EOS\n", - "translation: “ 你 去 日 本 干 嘛 ? ” “ 去 东 京 参 加 一 个 会 议 。 ”\n", - "\n", - "BOS i hope i will have a chance to see you next time i 'm in new york . EOS\n", - "BOS 希 望 下 次 我 在 纽 约 还 可 以 有 机 会 见 到 你 。 EOS\n", - "translation: 我 希 望 在 下 次 纽 约 可 以 有 机 会 见 到 你 。\n", - "\n", - "BOS it would take me too much time to explain to you why it 's not going to work . EOS\n", - "BOS 给 你 解 释 这 为 什 么 行 不 通 要 花 很 多 时 间 。 EOS\n", - "translation: 你 為 何 如 何 要 花 錢 給 我 。\n", - "\n", - "BOS i 've had a UNK throat since this morning . i wonder if i 've caught a cold . EOS\n", - "BOS 早 上 起 来 , 嗓 子 变 得 很 沙 UNK , 我 想 是 不 是 感 冒 了 。 EOS\n", - "translation: 今 天 早 上 我 只 有 只 是 對 待 着 。\n", - "\n", - "BOS my parents usually speak to each other in french , even though my mother is a native english speaker . EOS\n", - "BOS 我 父 母 通 常 用 法 语 对 话 , 即 使 我 母 亲 的 母 语 是 英 语 。 EOS\n", - "translation: 我 父 母 通 常 用 法 语 对 话 , 即 使 我 母 亲 的 母 语 是 英 语 的 教 育 典 语 的 人 。\n", - "\n", - "BOS `` will you have some more coffee ? '' `` no , thanks . i 've had enough . '' EOS\n", - "BOS “ 你 想 再 来 点 咖 啡 吗 ? ” “ 不 , 谢 谢 。 我 够 了 。 ” EOS\n", - "translation: “ 你 比 我 来 点 咖 啡 吗 ? ” “ 不 会 吃 过 。 ”\n", - "\n", - "BOS i do n't have a lot of work , but it 's enough to keep me in the office this week . EOS\n", - "BOS 其 实 我 工 作 并 不 多 , 但 足 以 让 我 这 周 在 办 公 室 里 忙 着 了 。 EOS\n", - "translation: 这 周 我 没 有 做 好 多 课 , 但 我 不 要 在 这 个 上 班 在 办 公 室 里 忙 地 方 法 。\n", - "<<<<<<< finished evaluate, cost 1500.0574 seconds\n" - ] - } - ], - "source": [ - "# 预测\n", - "# 加载模型\n", - "model.load_state_dict(torch.load(SAVE_FILE))\n", - "# 开始预测\n", - "print(\">>>>>>> start evaluate\")\n", - "evaluate_start = time.time()\n", - "evaluate(data, model) \n", - "print(f\"<<<<<<< finished evaluate, cost {time.time()-evaluate_start:.4f} seconds\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "参考资料:\n", - "\n", - "1.transformer原理: http://jalammar.github.io/illustrated-transformer/\n", - "\n", - "2.中文版本:https://www.kesci.com/home/project/5e8dc0ed95b029002caa19c3\n", - "\n", - "2.论文:https://arxiv.org/pdf/1706.03762.pdf" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid character in identifier (<ipython-input-2-1bf4ef7e2c33>, line 6)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"<ipython-input-2-1bf4ef7e2c33>\"\u001b[0;36m, line \u001b[0;32m6\u001b[0m\n\u001b[0;31m \u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid character in identifier\n" - ] - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.6" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": false, - "sideBar": true, - "skip_h1_title": true, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": true, - "toc_position": { - "height": "calc(100% - 180px)", - "left": "10px", - "top": "150px", - "width": "256px" - }, - "toc_section_display": true, - "toc_window_display": false - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}