{ "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", "> **其中的`TODO`内容即为待完成的部分**\n", "\n", "我们的数据集非常小,只有一万多个句子的训练数据,从结果来看训练出来的模型在测试集上的表现其实已经算还可以了。 \n", "如果想得到更好的效果,则需要更大的数据量并进行更多的训练迭代次数,感兴趣(并且有硬件条件)的同学可以进行尝试。 " ] }, { "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$)**再把隐藏层映射为自然语言序列,从而使我们可以解决各种问题,如情感分类、命名实体识别、语义关系抽取、摘要生成、机器翻译等等。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<img src=\"./imgs/intuition.jpg\" width=650>" ] }, { "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": "markdown", "metadata": {}, "source": [ "<img src=\"./imgs/encoder.jpg\" width=550>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 0. 先准备好输入的数据" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# import pdb\n", "# from IPython.core.interactiveshell import InteractiveShell\n", "\n", "# InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "code", "execution_count": 2, "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\n", "\n", "from langconv import Converter" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import jieba" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 初始化参数设置\n", "UNK = 1 # 未登录词的标识符对应的词典id\n", "PAD = 0 # padding占位符对应的词典id\n", "BATCH_SIZE = 128 # 每批次训练数据数量\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": 5, "metadata": {}, "outputs": [], "source": [ "def seq_padding(X, padding=PAD):\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", " return np.array([\n", " np.concatenate([x, [padding] * (ML - len(x))]) if len(x) < ML else x for x in X\n", " ])\n", "\n", "def cht_to_chs(sent):\n", " sent = Converter(\"zh-hans\").convert(sent)\n", " sent.encode(\"utf-8\")\n", " return sent" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "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 = \\\n", " self.build_dict(self.train_en)\n", " self.cn_word_dict, self.cn_total_words, self.cn_index_dict = \\\n", " self.build_dict(self.train_cn)\n", "\n", " # id化\n", " self.train_en, self.train_cn = self.word2id(self.train_en, self.train_cn, self.en_word_dict, self.cn_word_dict)\n", " self.dev_en, self.dev_cn = self.word2id(self.dev_en, self.dev_cn, self.en_word_dict, self.cn_word_dict)\n", "\n", " # 划分batch + padding + mask\n", " self.train_data = self.split_batch(self.train_en, self.train_cn, BATCH_SIZE)\n", " self.dev_data = self.split_batch(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", " # TODO ...\n", " with open(path, mode=\"r\", encoding=\"utf-8\") as f:\n", " \n", " for line in f.readlines():\n", " sent_en, sent_cn = line.strip().split(\"\\t\")\n", " sent_en = sent_en.lower()\n", " sent_cn = cht_to_chs(sent_cn)\n", " sent_en = [\"BOS\"] + word_tokenize(sent_en) + [\"EOS\"]\n", " # sent_cn = \" \".join([char for char in sent_cn])\n", " # sent_cn = [\"BOS\"] + word_tokenize(sent_cn) + [\"EOS\"]\n", " sent_cn = [\"BOS\"] + [word for word in jieba.cut(sent_cn)] + [\"EOS\"]\n", " en.append(sent_en)\n", " cn.append(sent_cn)\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 word2id(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", " \n", " # TODO: 将翻译前(英文)数据和翻译后(中文)数据都转换为id表示的形式\n", " out_en_ids = [[en_dict.get(word, UNK) for word in sent] for sent in en]\n", " out_cn_ids = [[cn_dict.get(word, UNK) for word 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", " # TODO: 对翻译前(英文)数据和翻译后(中文)数据都按此基准进行排序\n", " out_en_ids = [out_en_ids[idx] for idx in sorted_index]\n", " out_cn_ids = [out_cn_ids[idx] for idx in sorted_index]\n", " \n", " return out_en_ids, out_cn_ids\n", "\n", " def split_batch(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": 7, "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": 8, "metadata": {}, "outputs": [], "source": [ "# 导入依赖库\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 9, "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)\n", " position.unsqueeze_(1)\n", " # 这里幂运算太多,我们使用exp和log来转换实现公式中pos下面要除以的分母(由于是分母,要注意带负号)\n", " div_term = torch.exp(torch.arange(0., d_model, 2, device=DEVICE) * (- math.log(1e4) / d_model))\n", " div_term.unsqueeze_(0)\n", " \n", " # TODO: 根据公式,计算各个位置在各embedding维度上的位置纹理值,存放到pe矩阵中\n", " pe[:, 0 : : 2] = torch.sin(torch.mm(position, div_term))\n", " pe[:, 1 : : 2] = torch.cos(torch.mm(position, div_term))\n", " \n", " # 加1个维度,使得pe维度变为:1×max_len×embedding维度\n", " # (方便后续与一个batch的句子所有词的embedding批量相加)\n", " 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": 10, "metadata": { "scrolled": false }, "outputs": [ { "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(torch.zeros(1, 100, 16, device=DEVICE))\n", "plt.figure(figsize=(10,10))\n", "sns.heatmap(positional_encoding.squeeze().to(\"cpu\"))\n", "plt.title(\"Sinusoidal Function\")\n", "plt.xlabel(\"hidden dimension\")\n", "plt.ylabel(\"sequence length\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "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(torch.zeros(1, 100, 20, device=DEVICE))\n", "y = y.to(\"cpu\").numpy()\n", "plt.plot(np.arange(100), y[0, :, 4:8])\n", "plt.legend([\"dim %d\" % p for p in [4,5,6,7]])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. self attention(自注意力机制)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<img src=\"./imgs/attention_0.jpg\">\n", "\n", "<img src=\"./imgs/attention_1.jpg\">" ] }, { "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": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def clones(module, N):\n", " \"\"\"\n", " 克隆模型块,克隆的模型块参数不共享\n", " \"\"\"\n", " return nn.ModuleList([\n", " copy.deepcopy(module) for _ in range(N)\n", " ])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def attention(query, key, value, mask=None, dropout=None):\n", " # 将query矩阵的最后一个维度值作为d_k\n", " d_k = query.size(-1)\n", " \n", " # TODO: 将key的最后两个维度互换(转置),才能与query矩阵相乘,乘完了还要除以d_k开根号\n", " scores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(d_k)\n", " \n", " # 如果存在要进行mask的内容,则将那些为0的部分替换成一个很大的负数\n", " if mask is not None:\n", " scores = scores.masked_fill(mask == 0, -1e9)\n", " \n", " # TODO: 将mask后的attention矩阵按照最后一个维度进行softmax\n", " p_attn = F.softmax(scores, dim=-1)\n", " \n", " # 如果dropout参数设置为非空,则进行dropout操作\n", " if dropout is not None:\n", " p_attn = dropout(p_attn)\n", " # 最后返回注意力矩阵跟value的乘积,以及注意力矩阵\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 = [\n", " 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", " ]\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": "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": "markdown", "metadata": {}, "source": [ "### 3. Attention Mask" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<img src=\"./imgs/attention_mask.jpg\">" ] }, { "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-Head Attention`):** \n", "> 注意:这里的`Attention Mask`是加在`Scale`和`Softmax`之间 \n", " \n", "<img src=\"./imgs/attention_mask2.jpg\">" ] }, { "cell_type": "code", "execution_count": 14, "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=PAD):\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", "> 注:有关Batch Normalization和Layer Normalization的区别可参考如下文章——https://zhuanlan.zhihu.com/p/33173246" ] }, { "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))`**" ] }, { "cell_type": "code", "execution_count": 15, "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))\n", " self.b_2 = nn.Parameter(torch.zeros(features))\n", " # 平滑项\n", " self.eps = eps\n", "\n", " def forward(self, x):\n", " # TODO: 请利用init中的成员变量实现LayerNorm层的功能\n", " # 按最后一个维度计算均值和方差\n", " mean = x.mean(dim=-1, keepdim=True)\n", " std = x.std(dim=-1, keepdim=True)\n", " # mean = x.mean(dim=[-2, -1], keepdim=True)\n", " # std = x.std(dim=[-2, -1], keepdim=True)\n", " \n", " # TODO: 返回Layer Norm的结果\n", " x = (x - mean) / torch.sqrt(std ** 2 + self.eps)\n", " return self.a_2 * x + self.b_2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "以上是`LayerNormalization`的实现,其实PyTorch里面已经集成好了`nn.LayerNorm`,这里实现出来是为了学习其中的原理。而实际中,为了代码简洁,可以直接使用PyTorch里面实现好的函数。" ] }, { "cell_type": "code", "execution_count": 16, "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", " # TODO: 请利用init中的成员变量实现LayerNorm和残差连接的功能\n", " # 返回Layer Norm和残差连接后结果\n", " x_ = self.norm(x)\n", " x_ = sublayer(x_)\n", " x_ = self.dropout(x_)\n", " return x + 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": "markdown", "metadata": {}, "source": [ "$Feed Forward$(前馈网络)层其实就是两层线性映射并用激活函数激活" ] }, { "cell_type": "code", "execution_count": 17, "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", " # TODO: 请利用init中的成员变量实现Feed Forward层的功能\n", " x = self.w_1(x)\n", " x = F.relu(x)\n", " x = self.dropout(x)\n", " x = self.w_2(x)\n", " return x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$Encoder$ 由 $N=6$ 个相同的层组成。" ] }, { "cell_type": "code", "execution_count": 18, "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", " 使用循环连续encoder 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": 19, "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": "markdown", "metadata": {}, "source": [ "<img src=\"./imgs/decoder.jpg\">" ] }, { "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", "\n", "<img src=\"./imgs/attention.png\">" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "class Decoder(nn.Module):\n", " def __init__(self, layer, N):\n", " super(Decoder, self).__init__()\n", " # TODO: 参照EncoderLayer完成成员变量定义\n", " self.layers = clones(layer, N)\n", " self.norm = LayerNorm(layer.size)\n", " \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", " \n", " # TODO: 参照EncoderLayer完成DecoderLayer的forwark函数\n", " # Self-Attention:注意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:注意context-attention的q为decoder hidden,而k和v为encoder hidden\n", " x = self.sublayer[1](x, lambda x: self.self_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": 21, "metadata": {}, "outputs": [], "source": [ "def subsequent_mask(size):\n", " \"Mask out subsequent positions.\"\n", " # 设定subsequent_mask矩阵的shape\n", " attn_shape = (1, size, size)\n", " \n", " # TODO: 生成一个右上角(不含主对角线)为全1,左下角(含主对角线)为全0的subsequent_mask矩阵\n", " subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8')\n", " \n", " # TODO: 返回一个右上角(不含主对角线)为全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", "<img src=\"./imgs/subsequent_mask.png\" width=450> \n", "就是在decoder层的self-Attention中,由于生成 $s_i$ 时, $s_{i+1}$ 并没有产生,所以不能有 $s_i$ 和 $s_{i+1}$ 的关联系数,即只有下三角矩阵有系数,即下图中**`黄色部分`**。" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "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])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 四. Transformer模型\n", " \n", "最后,我们把 $Encoder$ 和 $Decoder$ 组成 $Transformer$ 模型" ] }, { "cell_type": "code", "execution_count": 23, "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": 24, "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": 25, "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": 26, "metadata": {}, "outputs": [], "source": [ "class LabelSmoothing(nn.Module):\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", " assert x.size(1) == self.size\n", " true_dist = x.data.clone()\n", " true_dist.fill_(self.smoothing / (self.size - 2))\n", " true_dist.scatter_(1, target.data.unsqueeze(1), self.confidence)\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": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "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 0x1ae1acabcc0>" ] }, "execution_count": 27, "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", "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])))\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": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x1ae1ad08c18>]" ] }, "execution_count": 28, "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": 29, "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": 30, "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": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<matplotlib.legend.Legend at 0x1ae1ac797b8>" ] }, "execution_count": 31, "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": 32, "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)\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", " \n", " # TODO: 如果当前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", " \n", " print()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Building prefix dict from the default dictionary ...\n", "Loading model from cache C:\\Users\\zhaoyin\\AppData\\Local\\Temp\\jieba.cache\n", "Loading model cost 0.671 seconds.\n", "Prefix dict has been built successfully.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "src_vocab 5493\n", "tgt_vocab 8891\n", ">>>>>>> start train\n", "Epoch 0 Batch: 0 Loss: 9.105930 Tokens per Sec: 3.324124s\n", "Epoch 0 Batch: 50 Loss: 8.387567 Tokens per Sec: 4.534472s\n", "Epoch 0 Batch: 100 Loss: 7.252555 Tokens per Sec: 4.673973s\n", ">>>>> Evaluate\n", "Epoch 0 Batch: 0 Loss: 7.137813 Tokens per Sec: 5.073301s\n", "<<<<< Evaluate loss: 7.240277\n", "****** Save model done... ******\n", "\n", "Epoch 1 Batch: 0 Loss: 7.094948 Tokens per Sec: 3.403295s\n", "Epoch 1 Batch: 50 Loss: 6.683394 Tokens per Sec: 4.084515s\n", "Epoch 1 Batch: 100 Loss: 5.023854 Tokens per Sec: 4.711493s\n", ">>>>> Evaluate\n", "Epoch 1 Batch: 0 Loss: 5.243171 Tokens per Sec: 5.851396s\n", "<<<<< Evaluate loss: 5.401658\n", "****** Save model done... ******\n", "\n", "Epoch 2 Batch: 0 Loss: 5.213239 Tokens per Sec: 4.604129s\n", "Epoch 2 Batch: 50 Loss: 5.531209 Tokens per Sec: 4.514883s\n", "Epoch 2 Batch: 100 Loss: 4.024418 Tokens per Sec: 4.404521s\n", ">>>>> Evaluate\n", "Epoch 2 Batch: 0 Loss: 4.434865 Tokens per Sec: 5.589915s\n", "<<<<< Evaluate loss: 4.651397\n", "****** Save model done... ******\n", "\n", "Epoch 3 Batch: 0 Loss: 4.501679 Tokens per Sec: 2.875640s\n", "Epoch 3 Batch: 50 Loss: 5.123200 Tokens per Sec: 4.188322s\n", "Epoch 3 Batch: 100 Loss: 3.488214 Tokens per Sec: 4.016763s\n", ">>>>> Evaluate\n", "Epoch 3 Batch: 0 Loss: 3.984941 Tokens per Sec: 5.861357s\n", "<<<<< Evaluate loss: 4.233747\n", "****** Save model done... ******\n", "\n", "Epoch 4 Batch: 0 Loss: 4.112163 Tokens per Sec: 4.412643s\n", "Epoch 4 Batch: 50 Loss: 4.832376 Tokens per Sec: 4.370541s\n", "Epoch 4 Batch: 100 Loss: 3.216594 Tokens per Sec: 4.445467s\n", ">>>>> Evaluate\n", "Epoch 4 Batch: 0 Loss: 3.692791 Tokens per Sec: 5.222989s\n", "<<<<< Evaluate loss: 3.966115\n", "****** Save model done... ******\n", "\n", "Epoch 5 Batch: 0 Loss: 3.792884 Tokens per Sec: 4.337679s\n", "Epoch 5 Batch: 50 Loss: 4.607012 Tokens per Sec: 4.390675s\n", "Epoch 5 Batch: 100 Loss: 2.935966 Tokens per Sec: 4.399763s\n", ">>>>> Evaluate\n", "Epoch 5 Batch: 0 Loss: 3.453375 Tokens per Sec: 5.218188s\n", "<<<<< Evaluate loss: 3.727801\n", "****** Save model done... ******\n", "\n", "Epoch 6 Batch: 0 Loss: 3.469191 Tokens per Sec: 4.271831s\n", "Epoch 6 Batch: 50 Loss: 4.308656 Tokens per Sec: 4.273580s\n", "Epoch 6 Batch: 100 Loss: 2.688043 Tokens per Sec: 4.289345s\n", ">>>>> Evaluate\n", "Epoch 6 Batch: 0 Loss: 3.197007 Tokens per Sec: 5.105017s\n", "<<<<< Evaluate loss: 3.449455\n", "****** Save model done... ******\n", "\n", "Epoch 7 Batch: 0 Loss: 3.193341 Tokens per Sec: 4.088928s\n", "Epoch 7 Batch: 50 Loss: 4.022792 Tokens per Sec: 4.163295s\n", "Epoch 7 Batch: 100 Loss: 2.486821 Tokens per Sec: 4.288801s\n", ">>>>> Evaluate\n", "Epoch 7 Batch: 0 Loss: 2.937138 Tokens per Sec: 5.408878s\n", "<<<<< Evaluate loss: 3.209516\n", "****** Save model done... ******\n", "\n", "Epoch 8 Batch: 0 Loss: 2.957216 Tokens per Sec: 4.475900s\n", "Epoch 8 Batch: 50 Loss: 3.751640 Tokens per Sec: 4.246696s\n", "Epoch 8 Batch: 100 Loss: 2.306933 Tokens per Sec: 4.257862s\n", ">>>>> Evaluate\n", "Epoch 8 Batch: 0 Loss: 2.679171 Tokens per Sec: 4.761996s\n", "<<<<< Evaluate loss: 2.950925\n", "****** Save model done... ******\n", "\n", "Epoch 9 Batch: 0 Loss: 2.750524 Tokens per Sec: 3.798084s\n", "Epoch 9 Batch: 50 Loss: 3.535913 Tokens per Sec: 4.198269s\n", "Epoch 9 Batch: 100 Loss: 2.025831 Tokens per Sec: 4.151899s\n", ">>>>> Evaluate\n", "Epoch 9 Batch: 0 Loss: 2.496418 Tokens per Sec: 5.205459s\n", "<<<<< Evaluate loss: 2.839650\n", "****** Save model done... ******\n", "\n", "Epoch 10 Batch: 0 Loss: 2.508332 Tokens per Sec: 4.389148s\n", "Epoch 10 Batch: 50 Loss: 3.318365 Tokens per Sec: 4.096386s\n", "Epoch 10 Batch: 100 Loss: 1.782393 Tokens per Sec: 4.291425s\n", ">>>>> Evaluate\n", "Epoch 10 Batch: 0 Loss: 2.187259 Tokens per Sec: 5.230821s\n", "<<<<< Evaluate loss: 2.500114\n", "****** Save model done... ******\n", "\n", "Epoch 11 Batch: 0 Loss: 2.188256 Tokens per Sec: 4.333352s\n", "Epoch 11 Batch: 50 Loss: 3.061605 Tokens per Sec: 4.291587s\n", "Epoch 11 Batch: 100 Loss: 1.454905 Tokens per Sec: 4.311479s\n", ">>>>> Evaluate\n", "Epoch 11 Batch: 0 Loss: 1.953551 Tokens per Sec: 5.250120s\n", "<<<<< Evaluate loss: 2.230738\n", "****** Save model done... ******\n", "\n", "Epoch 12 Batch: 0 Loss: 1.913924 Tokens per Sec: 4.304558s\n", "Epoch 12 Batch: 50 Loss: 2.774508 Tokens per Sec: 4.273604s\n", "Epoch 12 Batch: 100 Loss: 1.368217 Tokens per Sec: 4.311036s\n", ">>>>> Evaluate\n", "Epoch 12 Batch: 0 Loss: 1.774327 Tokens per Sec: 5.303254s\n", "<<<<< Evaluate loss: 2.036781\n", "****** Save model done... ******\n", "\n", "Epoch 13 Batch: 0 Loss: 1.662678 Tokens per Sec: 4.353627s\n", "Epoch 13 Batch: 50 Loss: 2.530543 Tokens per Sec: 4.268252s\n", "Epoch 13 Batch: 100 Loss: 1.182938 Tokens per Sec: 4.314280s\n", ">>>>> Evaluate\n", "Epoch 13 Batch: 0 Loss: 1.519026 Tokens per Sec: 5.126008s\n", "<<<<< Evaluate loss: 1.811156\n", "****** Save model done... ******\n", "\n", "Epoch 14 Batch: 0 Loss: 1.525679 Tokens per Sec: 4.342776s\n", "Epoch 14 Batch: 50 Loss: 2.268190 Tokens per Sec: 4.276060s\n", "Epoch 14 Batch: 100 Loss: 0.980691 Tokens per Sec: 4.321665s\n", ">>>>> Evaluate\n", "Epoch 14 Batch: 0 Loss: 1.348393 Tokens per Sec: 5.312212s\n", "<<<<< Evaluate loss: 1.557718\n", "****** Save model done... ******\n", "\n", "Epoch 15 Batch: 0 Loss: 1.242002 Tokens per Sec: 4.408941s\n", "Epoch 15 Batch: 50 Loss: 2.056310 Tokens per Sec: 4.221250s\n", "Epoch 15 Batch: 100 Loss: 0.822441 Tokens per Sec: 4.184717s\n", ">>>>> Evaluate\n", "Epoch 15 Batch: 0 Loss: 1.178185 Tokens per Sec: 4.996583s\n", "<<<<< Evaluate loss: 1.391403\n", "****** Save model done... ******\n", "\n", "Epoch 16 Batch: 0 Loss: 1.216137 Tokens per Sec: 3.918345s\n", "Epoch 16 Batch: 50 Loss: 1.884149 Tokens per Sec: 3.322989s\n", "Epoch 16 Batch: 100 Loss: 0.727839 Tokens per Sec: 4.063023s\n", ">>>>> Evaluate\n", "Epoch 16 Batch: 0 Loss: 1.062453 Tokens per Sec: 5.396961s\n", "<<<<< Evaluate loss: 1.271602\n", "****** Save model done... ******\n", "\n", "Epoch 17 Batch: 0 Loss: 0.896827 Tokens per Sec: 4.460572s\n", "Epoch 17 Batch: 50 Loss: 1.682933 Tokens per Sec: 4.147093s\n", "Epoch 17 Batch: 100 Loss: 0.694505 Tokens per Sec: 3.344105s\n", ">>>>> Evaluate\n", "Epoch 17 Batch: 0 Loss: 0.968311 Tokens per Sec: 5.383595s\n", "<<<<< Evaluate loss: 1.184774\n", "****** Save model done... ******\n", "\n", "Epoch 18 Batch: 0 Loss: 0.856281 Tokens per Sec: 4.146495s\n", "Epoch 18 Batch: 50 Loss: 1.455320 Tokens per Sec: 4.080305s\n", "Epoch 18 Batch: 100 Loss: 0.578020 Tokens per Sec: 4.256463s\n", ">>>>> Evaluate\n", "Epoch 18 Batch: 0 Loss: 0.870534 Tokens per Sec: 4.984805s\n", "<<<<< Evaluate loss: 1.068869\n", "****** Save model done... ******\n", "\n", "Epoch 19 Batch: 0 Loss: 0.755294 Tokens per Sec: 4.357033s\n", "Epoch 19 Batch: 50 Loss: 1.334139 Tokens per Sec: 4.223355s\n", "Epoch 19 Batch: 100 Loss: 0.488411 Tokens per Sec: 4.377473s\n", ">>>>> Evaluate\n", "Epoch 19 Batch: 0 Loss: 0.744269 Tokens per Sec: 4.898569s\n", "<<<<< Evaluate loss: 0.926316\n", "****** Save model done... ******\n", "\n", "<<<<<<< finished train, cost 590.1297 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": 34, "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", " # TODO: 打印待翻译的英文句子\n", " en_sent = \" \".join([data.en_index_dict[w] for w in data.dev_en[i]])\n", " print(\"\\n\" + en_sent)\n", " \n", " # TODO: 打印对应的中文句子答案\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))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "scrolled": false }, "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 真 UNK 。 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 UNK 。 EOS\n", "translation: UNK 被 吓 到 了 。\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 UNK 了 。 EOS\n", "translation: 我 在 这个 时候 一直 在 工作 。\n", "\n", "BOS i ate UNK . EOS\n", "BOS 我 吃 了 UNK 。 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 人 UNK UNK 。 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 UNK 是 孩子 。 EOS\n", "translation: 他们 是 孩子 的 孩子 。\n", "\n", "BOS i played tennis . EOS\n", "BOS 我 打网球 了 。 EOS\n", "translation: 我 打 了 网球 。\n", "\n", "BOS he gave in . EOS\n", "BOS 他 UNK 了 . 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 UNK 我 一个 . EOS\n", "translation: 把 我 锁 在 一个 小偷 前面 。\n", "\n", "BOS she kept working . EOS\n", "BOS 她 UNK 地 工作 。 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 UNK , 白费 UNK 。 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 有人 在 UNK 。 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 UNK 。 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 。 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 小心 UNK 。 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 UNK UNK 。 EOS\n", "translation: UNK UNK 。\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 是 酸 的 。 EOS\n", "translation: UNK 是 酸 的 。\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 我 很 UNK 。 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 你 UNK 正确 。 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: 这 把 椅子 UNK 。\n", "\n", "BOS it 's pretty heavy . EOS\n", "BOS 它 UNK 。 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 我 喜欢 UNK 。 EOS\n", "translation: 我 喜欢 那个 音乐 。\n", "\n", "BOS tom had no children . EOS\n", "BOS Tom 没有 孩子 。 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", "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 UNK 了 一个 错 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 最近 UNK 已经 下降 。 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 他们 慢慢 UNK 前进 。 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: 轮胎 UNK 了 。\n", "\n", "BOS where are you now ? EOS\n", "BOS 你 现在 在 哪里 呢 ? EOS\n", "translation: 你 现在 在 哪里 ?\n", "\n", "BOS life is very hard . EOS\n", "BOS 人生 UNK 。 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 他 听到 了 UNK 。 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 我 真是 UNK 。 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 UNK 了 。 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: 他 的 UNK 曾 曾经 吗 ?\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 这 只 UNK 味道 很 好 。 EOS\n", "translation: 这 只 UNK 味道 很 好 。\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 三 的 UNK 是 UNK 。 EOS\n", "translation: 在 UNK 被 UNK 。\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 离 我 的 UNK 一点 。 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 。 EOS\n", "translation: 我们 还 没有 被 UNK 。\n", "\n", "BOS tom can run fast . EOS\n", "BOS Tom 可以 跑 得 很快 。 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 那个 男人 最终 UNK 了 他 的 罪行 。 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 别 被 UNK 了 。 EOS\n", "translation: 别 被 UNK 。\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 UNK 。 EOS\n", "translation: 我 应该 UNK 。\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 我 做事 该 UNK 。 EOS\n", "translation: 我 应该 UNK 。\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 UNK 了 。 EOS\n", "translation: UNK 了 。\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 我 喉咙 很 干 。 EOS\n", "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 汤姆 UNK 。 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 你 认识 我 吗 ?\n", "\n", "BOS it is too late . EOS\n", "BOS 太晚 了 。 EOS\n", "translation: 太晚 了 。\n", "\n", "BOS do you study english ? EOS\n", "BOS UNK 英语 吗 ? 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: 它 UNK 。\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 按 UNK UNK 。 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 我 知道 我 的 UNK 。 EOS\n", "translation: 我 知道 我 的 UNK 。\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 我 喜欢 UNK 。 EOS\n", "translation: 我 喜欢 那个 音乐 。\n", "\n", "BOS the lake was frozen . EOS\n", "BOS 湖 UNK 了 。 EOS\n", "translation: 湖 UNK 了 。\n", "\n", "BOS she especially likes music . EOS\n", "BOS 她 UNK 音乐 。 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 圣诞节 是 12 月 25 日 。 EOS\n", "translation: 圣诞节 是 12 月 25 日 。\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 我 喜欢 UNK 。 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 我 UNK 了 。 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 英语 是 UNK 。 EOS\n", "translation: 英语 UNK UNK 。\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 你 的 建议 似乎 是 UNK 的 。 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 汤姆 UNK 一个 人 独处 。 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 UNK 。 EOS\n", "translation: 他 把 他 父亲 的 父亲 声音 搞 丢 了 。\n", "\n", "BOS she hit the ball hard . EOS\n", "BOS 她 UNK 地 拍 了 球 。 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 我 UNK 了 三 美元 。 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 他们 使 10 UNK UNK UNK 了 EOS\n", "translation: 他们 在 暴风雨 损坏 了 。\n", "\n", "BOS everything went according to plan . EOS\n", "BOS 一切 UNK 进行 。 EOS\n", "translation: 所有 的 人 都 必须 进行 。\n", "\n", "BOS is one thousand yen enough ? EOS\n", "BOS 1000 日元 UNK ? EOS\n", "translation: 这 是 活 的 吗 ?\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 美国 与 加拿大 UNK 。 EOS\n", "translation: 美国 与 加拿大 UNK 。\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", "translation: 泪水 沿着 我 的 UNK 流 了 下来 。\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 我 16 岁 了 。 EOS\n", "translation: 我 16 了 十美元 的 老 。\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 汤姆 昨天 UNK 回来 了 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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: 汤姆 被 UNK 了 。\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 我会 UNK 。 EOS\n", "translation: 我会 在 沙发 上 。\n", "\n", "BOS he left without saying goodbye . EOS\n", "BOS 他 UNK 。 EOS\n", "translation: 他 没有 说 再见 了 。\n", "\n", "BOS he disappeared without a trace . EOS\n", "BOS 他 消失 了 , UNK UNK UNK 。 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 那些 UNK 现在 都 到 哪里 去 了 ? 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 UNK 年龄 UNK 是 罪行 。 EOS\n", "translation: UNK UNK UNK 。\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 你 UNK 有空 吗 ? EOS\n", "translation: 你 明天 晚上 有空 吗 ?\n", "\n", "BOS i ca n't meet you . EOS\n", "BOS UNK 你 。 EOS\n", "translation: 我 无法 见到 你 。\n", "\n", "BOS she UNK a motorcycle well . EOS\n", "BOS 她 骑 摩托车 的 UNK 不错 ! 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 大多数 男生 喜欢 UNK 。 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 我们 从 印度 进口 UNK 。 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 我 六 UNK 高 。 EOS\n", "translation: 我 在 周一 到 了 棵 厌烦 。\n", "\n", "BOS where can you get tickets ? EOS\n", "BOS 在 哪里 可以 买 到 UNK ? 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 我 需要 一本 UNK 字典 。 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 他 UNK 忘 。 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 行动 比 语言 更 UNK 。 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 她 是 一个 很 好 的 UNK 。 EOS\n", "translation: 她 是 个 很 好 的 无情 。\n", "\n", "BOS he walked past the house . EOS\n", "BOS 他 UNK 这栋 房子 。 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: UNK 值得 一游 。\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 UNK 你 的 学生 UNK 。 EOS\n", "translation: 把 你 的 学生 放在 这栋 。\n", "\n", "BOS hope is not a UNK . EOS\n", "BOS 希望 不是 一种 策略 。 EOS\n", "translation: 希望 不 在 UNK 。\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 我 住 在 UNK 。 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", "translation: 你 不是 个 懦夫 。\n", "\n", "BOS wash your hands before eating . EOS\n", "BOS UNK UNK 洗手 。 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 我能 看到 UNK 。 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 这个 UNK ? 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 我会 开车 到 UNK 。 EOS\n", "translation: 我会 开车 去 UNK 。\n", "\n", "BOS guess what he told me . EOS\n", "BOS UNK 他 告诉 了 我 什么 。 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 非常 UNK 。 EOS\n", "translation: 我 的 UNK 被 UNK 。\n", "\n", "BOS she spoke through an interpreter . EOS\n", "BOS 她 UNK UNK UNK 发言 。 EOS\n", "translation: 她 UNK UNK UNK 。\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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 UNK 看 情况 。 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 她 死 于 UNK 。 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 这个 人 UNK 的 。 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 Tom 正在 喝 苹果汁 。 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 我 确实 喜欢 我 的 UNK 。 EOS\n", "translation: 我 十分 喜欢 我 的 UNK 。\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 那 是 UNK 的 想法 。 EOS\n", "translation: 那 是 UNK 的 想法 。\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: UNK 是 由 蚊子 传染 的 。\n", "\n", "BOS bring me a dry towel . EOS\n", "BOS 给 我 一条 干 UNK 。 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 请 UNK 。 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 人们 需要 UNK UNK 。 EOS\n", "translation: 人 需要 UNK 。\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 他 UNK 了 那个 信封 。 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: 他 把 一次 股票 UNK 了 。\n", "\n", "BOS the boy UNK the dark . EOS\n", "BOS 这个 男孩 害怕 UNK 。 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 。 EOS\n", "translation: UNK 。\n", "\n", "BOS we must UNK energy demand . EOS\n", "BOS 我们 必须 UNK UNK 。 EOS\n", "translation: 我们 必须 UNK 。\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 她 穿着 UNK 。 EOS\n", "translation: 她 穿着 UNK 。\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 请 仔细 UNK 。 EOS\n", "translation: 请 仔细 UNK 。\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: 我们 去 了 UNK 。\n", "\n", "BOS we ordered too much food . EOS\n", "BOS 我们 UNK 食物 了 。 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", "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 妈妈 煮 了 UNK 蛋 。 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 的 的 人 。 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 我 听到 UNK 了 。 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 你 咖啡 UNK 太多 了 。 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 一个 UNK 教 了 他 西班牙文 。 EOS\n", "translation: UNK 被 他 生病 了 。\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 UNK 方式 说 。 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 我该 取消 UNK 吗 ? 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 我 爱 UNK 。 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 Tom 躲 在 桌子 底下 。 EOS\n", "translation: 别理 汤姆 。\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 你 UNK 多少 ? EOS\n", "translation: 你 到底 怎么回事 啊 ?\n", "\n", "BOS mary is pregnant with twins . EOS\n", "BOS 玛丽 UNK 了 双胞胎 。 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 现在 该 你 UNK 。 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 过 UNK 。 EOS\n", "translation: 伦敦 被 UNK 了 。\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 为了 正当 目的 可以 UNK 。 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 超过 UNK 男孩 去 了 那里 。 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 请 UNK 他 UNK 。 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 她 是 UNK 。 EOS\n", "translation: 她 UNK UNK 。\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 她 用 一个 微笑 UNK 了 我 。 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 你 最 喜欢 的 UNK 是 什么 ? 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 它 UNK 像 冰 一样 。 EOS\n", "translation: 天 变得 很 冷 。\n", "\n", "BOS his house is somewhere about here . EOS\n", "BOS 他家 在 这儿 UNK 。 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 我 把 它 忘 在 UNK 了 。 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 让 我们 休息 10 分钟 。 EOS\n", "translation: 让 我们 在 10 分钟 休息 一下 。\n", "\n", "BOS so you give up , right ? EOS\n", "BOS 所以 你 放弃 了 , 是 吗 ? EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 UNK 有 医生 吗 ? EOS\n", "translation: 医生 有 医生 吗 ?\n", "\n", "BOS there is no place like home . EOS\n", "BOS UNK 窝 不如 自己 的 UNK 。 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: 她 UNK 让 他 工作 。\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 我出 了 UNK 。 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 这 UNK 我 想 的 一样 。 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 他 UNK 驾驶 着 。 EOS\n", "translation: 他 UNK 了 驾驶 着 。\n", "\n", "BOS the history class starts at nine . EOS\n", "BOS UNK 九点 开始 。 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 她 是 UNK 去 上海 的 。 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 你 看到 的 这些 UNK 玫瑰 。 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 让 我们 叫 这 只 狗 UNK 。 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 您 为什么 惩罚 他们 ? EOS\n", "translation: 你 是 什么 人 让 汤姆 的 人 呢 ?\n", "\n", "BOS tom has known mary since UNK . EOS\n", "BOS 汤姆 UNK 就 认识 玛丽 了 。 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 我 在 箱根 UNK 。 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", "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 它 UNK UNK 爆炸 了 。 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 老虎 从 动物园 中 UNK 了 。 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 汤姆 填写 了 UNK 。 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 他们 在 他们 的 UNK 里 种植 草莓 。 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 我们 都 为 Tom UNK 。 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 哪条 路 UNK 市政厅 ? 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 不要 在 教室 上 人 讲话 。\n", "\n", "BOS our baseball team is very strong . EOS\n", "BOS 我们 的 UNK 很强 。 EOS\n", "translation: 我们 的 UNK 非常 强壮 。\n", "\n", "BOS UNK , you 'll never know . EOS\n", "BOS UNK , 你 永远 不会 知道 。 EOS\n", "translation: UNK , 你 永远 不会 知道 。\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 我 UNK 辞职 。 EOS\n", "translation: 我 没 通过 错误 。\n", "\n", "BOS tom always UNK out of tune . EOS\n", "BOS 汤姆 唱歌 总 UNK 。 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 我 早餐 通常 吃 得 很 UNK 。 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: 蜜蜂 UNK 可以 是 非常 痛苦 的 。\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 没有 你 我 UNK 。 EOS\n", "translation: 我 不 太 生活 。\n", "\n", "BOS send for a doctor at once . EOS\n", "BOS 立即 UNK 。 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 她 UNK 这笔 钱 。 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 UNK 在 UNK UNK 中 。 EOS\n", "translation: 鱼 在 UNK 生活 消费 新鲜 的 文章 。\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 你 UNK 在家 吗 ? 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 我 必须 赶上 UNK 火车 。 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 我 对 你 的 UNK 感到 惊讶 。 EOS\n", "translation: 我 对 你 的 UNK 感到 惊讶 。\n", "\n", "BOS the news of his death spread . EOS\n", "BOS 他 去世 的 消息 UNK 来 了 。 EOS\n", "translation: 他 的 消息 消息 消息 消息 起来 了 。\n", "\n", "BOS he was laughed at in public . EOS\n", "BOS 他 在 UNK 面前 被 嘲笑 。 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 她 用 一条 毯子 把 自己 UNK 。 EOS\n", "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 她 UNK UNK 。 EOS\n", "translation: 她 没有 人生 会 被 她 。\n", "\n", "BOS look it up in your dictionary . EOS\n", "BOS UNK 你 的 字典 。 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: 我 对 你 毫无 UNK 。\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 我们 几乎 被 UNK 了 。 EOS\n", "translation: 我们 被 UNK 了 。\n", "\n", "BOS they go to church on sunday . EOS\n", "BOS 他们 UNK 上 教堂 。 EOS\n", "translation: 他们 在 周日 去 做礼拜 。\n", "\n", "BOS when water freezes it becomes ice . EOS\n", "BOS 水 UNK 后 , 变成 冰 。 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: 她 一直 在 UNK 。\n", "\n", "BOS his advice did n't help much . EOS\n", "BOS 他 的 忠告 没 UNK 太大 的 作用 。 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 我 买 了 一辆 红色 的 UNK 。 EOS\n", "translation: 我 买 了 一辆 红色 的 自行车 和 唱片 。\n", "\n", "BOS there were two pieces of cake . EOS\n", "BOS UNK UNK 蛋糕 。 EOS\n", "translation: 这 只 蛋糕 有点 麻烦 。\n", "\n", "BOS do you really believe in ghosts ? EOS\n", "BOS 你 真的 相信 鬼 吗 ? EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 你 相信 鬼 存在 吗 ?\n", "\n", "BOS the threat to UNK was ended . EOS\n", "BOS 对 UNK 的 威胁 结束 了 。 EOS\n", "translation: 令 我 的 大 UNK 了 。\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: 老 是 UNK 的 。\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 UNK 。 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 我 UNK 有 抽烟 了 。 EOS\n", "translation: 我 没有 UNK 。\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 UNK , 十年 少 。 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 我 和 我 爸爸 玩 UNK 。 EOS\n", "translation: 我 和 我 父亲 一起 洗澡 。\n", "\n", "BOS i think i made a mistake . EOS\n", "BOS 我 认为 UNK 了 个 错 。 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 他们 被 老师 UNK 了 。 EOS\n", "translation: 他们 被 老师 被 抚养 被 老师 的 声音 。\n", "\n", "BOS she was absorbed in the UNK . EOS\n", "BOS 她 UNK 了 UNK 。 EOS\n", "translation: 她 被 UNK 了 。\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 我会 给 你 开个 UNK 。 EOS\n", "translation: 我会 给 你 开个 UNK 。\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", "translation: 我 失去 了 它 。\n", "\n", "BOS the UNK is in the UNK . EOS\n", "BOS UNK 在 UNK 里 。 EOS\n", "translation: UNK UNK UNK 。\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 伦敦 UNK 著名 。 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 显然 地 他 UNK 了 谎 。 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 他 UNK 自己 的 UNK 。 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 等到 UNK 变成 绿色 。 EOS\n", "translation: 等到 等到 UNK 。\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 我们 向 UNK 小屋 走 去 。 EOS\n", "translation: 我们 立刻 爬 上 了 桌子 。\n", "\n", "BOS this car is easy to handle . EOS\n", "BOS 这辆 车 很 容易 UNK 。 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 我 十年 前 参观 了 UNK 。 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 巴士 早 了 UNK 。 EOS\n", "translation: 公车 十分钟 后 在 迟 了 。\n", "\n", "BOS the men are wearing short UNK . EOS\n", "BOS 男人 们 穿着 短袖 UNK 。 EOS\n", "translation: 男人 们 穿着 短袖 UNK 。\n", "\n", "BOS she is going to UNK UNK . EOS\n", "BOS 她 将 去 UNK 。 EOS\n", "translation: 她 将 考虑 到 UNK 。\n", "\n", "BOS people grow more UNK with age . EOS\n", "BOS 人会 随着 年龄 的 增长 而 更加 地 UNK 。 EOS\n", "translation: 人 在 UNK 更 高 。\n", "\n", "BOS is everything going ok at work ? EOS\n", "BOS 工作 UNK 吗 ? EOS\n", "translation: 做 什么 事 要 去 工作 ?\n", "\n", "BOS the cottage was clean and UNK . EOS\n", "BOS 小屋 干净 又 UNK 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 小屋 干净 又 UNK 。\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 你 最 喜欢 的 UNK 应用 是 什么 ? EOS\n", "translation: 你 最 喜欢 的 鞋子 ?\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: 我 比 汤姆 更 高 的 钱 。\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: UNK 下跌 了 。\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 UNK 代表 联合国 。 EOS\n", "translation: UNK 代表 联合国 。\n", "\n", "BOS she gave me this UNK UNK . EOS\n", "BOS 她 给 了 我 这个 光碟 。 EOS\n", "translation: 她 给 我 这 UNK 了 。\n", "\n", "BOS would you please come again later ? EOS\n", "BOS 请 您 稍后 UNK 好 吗 ? 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 除了 UNK 我 看不见 任何 东西 。 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 她 非常 UNK 和 耐心 。 EOS\n", "translation: 她 非常 UNK 和 耐心 。\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 她 尽可能 UNK 跑 。 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: 让 我 UNK 。\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 我 仅仅 是 在 和 Tom 交谈 。 EOS\n", "translation: 我 只是 跟 汤姆 说话 的 事 。\n", "\n", "BOS she fainted when she saw blood . EOS\n", "BOS 她 看见 血 就 UNK 了 。 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 UNK UNK UNK 吗 ? 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 谁 UNK 她 什么 时候 结婚 ? 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", "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 她 对 她 的 未来 感到 没有 UNK 。 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 你 确定 你 的 资料 UNK 吗 ? EOS\n", "translation: 你 确定 你 的 资料 没有 吗 ?\n", "\n", "BOS UNK ideas into practice is difficult . EOS\n", "BOS 把 想法 UNK 是 困难 的 。 EOS\n", "translation: UNK 是 免费 的 。\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 不要 UNK 这本 杂志 。 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 汤姆 被 警察 UNK 。 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 UNK UNK 。 EOS\n", "translation: UNK UNK 。\n", "\n", "BOS absolutely nothing is permanent in life . EOS\n", "BOS 生活 中 绝对 没有 什么 是 UNK 的 。 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 UNK 。 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 他 UNK 哈姆雷特 的 UNK 。 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 我 的 UNK 了 毛病 。 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 他们 全都 被 他 的 笑话 UNK 了 。 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 我 现在 30 岁 了 。 EOS\n", "translation: 我 现在 30 岁 了 。\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 的 UNK 。 EOS\n", "translation: 我 是 UNK 的 。\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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 他 在 UNK 不是 很 严格 。 EOS\n", "translation: 他 不是 UNK 。\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 你 一般 UNK 吃 什么 ? 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 UNK 著名 的 UNK 。 EOS\n", "translation: UNK UNK UNK 。\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 女人 往往 比 男人 UNK 更长 。 EOS\n", "translation: 女人 往往 比 男人 UNK 更长 。\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 有股 UNK 的 味道 。 EOS\n", "translation: 咳嗽 UNK 有股 UNK 的 味道 。\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 最 UNK 前来 这里 。 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 她 UNK 说 出来 。 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 这 张票 的 UNK 是 三天 。 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 嫉妒 是 谋杀 的 UNK 。 EOS\n", "translation: 嫉妒 是 谋杀 的 UNK 。\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 我 在 考试 UNK 了 些 错 。 EOS\n", "translation: 我 为 这个 错误 很 难 考试 。\n", "\n", "BOS move the chair UNK to the desk . EOS\n", "BOS 把 椅子 UNK UNK 靠近 桌子 。 EOS\n", "translation: 把 椅子 UNK UNK 在 桌子 上 。\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", "translation: 我 不 担心 风险 。\n", "\n", "BOS i 'm as hungry as a horse . EOS\n", "BOS 我 饿 得 像 UNK 。 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 我 把 钱 放入 UNK 里 。 EOS\n", "translation: 我 把 钱 放入 在 这条 数字 。\n", "\n", "BOS have you ever climbed mt . UNK ? EOS\n", "BOS 你 曾 爬 过 UNK 吗 ? EOS\n", "translation: 你 曾 爬 过 过 吗 ?\n", "\n", "BOS my mother made me take some medicine . EOS\n", "BOS 我 妈妈 让 我 吃 UNK 。 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 她 几乎 UNK 英语 。 EOS\n", "translation: 她 UNK 使 英语 病倒 了 。\n", "\n", "BOS i will take you for a swim . EOS\n", "BOS 我会 UNK 游泳 。 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 她 UNK 着 一张 纸 。 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 我 被 交通堵塞 耽搁 了 。 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 请 UNK 看着 我 的 手提箱 。 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 我 听到 了 UNK 。 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 是 最好 的 UNK 。 EOS\n", "translation: UNK 是 最好 的 。\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 一个 UNK 也 看不到 。 EOS\n", "translation: UNK UNK 。\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 因为 喝酒 UNK , 所以 我 生病 了 。 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 没有 必要 做 的 事 。\n", "\n", "BOS i buy UNK every sunday after church . EOS\n", "BOS 我 每个 星期日 礼拜 完 都 买 UNK UNK 。 EOS\n", "translation: 我 每天 在 周日 跑步 的 时候 在 海滩 上 玩 。\n", "\n", "BOS do you have change for a dollar ? EOS\n", "BOS 你 有 零钱 换 UNK UNK 吗 ? EOS\n", "translation: 你 有 零钱 换 UNK 吗 ?\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 我 和 她 有 UNK UNK 。 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 UNK UNK 。 EOS\n", "translation: UNK 无法 入睡 。\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 从 UNK 把 植物 UNK 。 EOS\n", "translation: UNK UNK UNK 。\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 UNK 在 墙上 。 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 UNK UNK 很 好 。 EOS\n", "translation: UNK 有点 无聊 。\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 入场费 一个 人 10 美元 。 EOS\n", "translation: 入场费 一个 人 十美元 。\n", "\n", "BOS could you wrap this UNK , please ? EOS\n", "BOS 请 你 UNK 包装 好 吗 ? 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 UNK 几天 拜访 了 她家 。 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 汤姆 急 UNK 知道 结果 。 EOS\n", "translation: 汤姆 急 。\n", "\n", "BOS father bought me the latest model motorcycle . EOS\n", "BOS 父亲 给 我 买 了 UNK 的 摩托车 。 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 喜欢 在 非洲 的 大 UNK 。 EOS\n", "translation: UNK 和 非洲 有 著名 的 老 。\n", "\n", "BOS i am not always free on sundays . EOS\n", "BOS 我 星期日 并 不 总是 有空 。 EOS\n", "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: 许多 人 被 UNK 被 被 战争 被 被 被 被 被 杀 。\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 了 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 有人 UNK 了 我 的 鞋 。 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 UNK 的 评论 UNK UNK 。 EOS\n", "translation: 这个 评论 被 UNK 。\n", "\n", "BOS my aunt made me a new skirt . EOS\n", "BOS 我 UNK 做 了 一条 新 裙子 给 我 。 EOS\n", "translation: 我 阿姨 为 我 做 了 一件 新 衣服 。\n", "\n", "BOS your UNK means a lot to me . EOS\n", "BOS 你 的 UNK 对 我 来说 意义 重大 。 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 我 还 UNK 到 他 的 信 。 EOS\n", "translation: 我 还 没 听见 他 的 信 。\n", "\n", "BOS in UNK , many flowers come out . EOS\n", "BOS 许多 花 在 UNK 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 她 是 Tom 的 姐姐 。 EOS\n", "translation: 她 是 Tom 的 姐姐 。\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 你 必须 在 六点钟 时 从 UNK 出发 。 EOS\n", "translation: 你 必须 在 六点钟 前 回家 。\n", "\n", "BOS UNK UNK a great amount of water . EOS\n", "BOS UNK 需要 消耗 的 大量 水 。 EOS\n", "translation: UNK 对 水 有 信心 。\n", "\n", "BOS i 'm going to take my car . EOS\n", "BOS 我 将 UNK 我 的 车 。 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: 整个 国家 被 大雪 复盖 了 。\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 你们 UNK UNK 没意思 。 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 你 想 睡 哪 UNK ? EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 UNK 下跌 了 。 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 想象 一下 , 假如 你 有 一台 时光 UNK 。 EOS\n", "translation: 想象 你 在 这台 洗衣机 。\n", "\n", "BOS i took a day off last week . EOS\n", "BOS 上周 UNK 了 一天 的 假 。 EOS\n", "translation: 我 去年 在 去年 睡觉 了 。\n", "\n", "BOS french has many more UNK than japanese . EOS\n", "BOS 法语 的 UNK 比 日语 的 UNK 。 EOS\n", "translation: 许多 人 比 日本 更 有 很多 人 的 时间 。\n", "\n", "BOS imagination affects every part of our lives . EOS\n", "BOS 想像力 影响 着 我们 生活 的 UNK 。 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 我们 应该 了解 UNK 的 规则 。 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 狗 的 UNK UNK 。 EOS\n", "translation: 狗 的 金丝雀 是 UNK 的 。\n", "\n", "BOS why are you so mean to me ? EOS\n", "BOS 你 为什么 对 我 这么 UNK ? 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", "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 他们 正 UNK 要 杀害 国王 。 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 他 去世 的 消息 UNK 各地 。 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: 我 今天 早上 7 点 起床 。\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: UNK 比 你 的 牙齿 而 整理 一辆 计程车 。\n", "\n", "BOS we took strong UNK to prevent it . EOS\n", "BOS 我们 采取 了 UNK 的 UNK 。 EOS\n", "translation: 我们 采取 了 UNK 的 。\n", "\n", "BOS UNK is a city in new zealand . EOS\n", "BOS UNK 是 一座 新西兰 的 城市 。 EOS\n", "translation: UNK 是 一座 新西兰 的 城市 。\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 罗马 以 其 UNK 建筑 而 闻名 。 EOS\n", "translation: 罗马 以 其 UNK 而 UNK 。\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 您 最好 穿 一件 UNK 。 EOS\n", "translation: 你 最好 在 UNK 。\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 UNK 在 这里 直到 我 回来 。 EOS\n", "translation: 请 在 这儿 直到 我 回来 。\n", "\n", "BOS the man kept talking for an hour . EOS\n", "BOS 这个 男人 UNK 说 了 一个 小时 的话 。 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 UNK 吸引 了 孩子 们 的 注意 。 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 政治家 从来不 告诉 我们 他们 的 UNK 。 EOS\n", "translation: UNK 盯 着 别人 看 的 声音 。\n", "\n", "BOS i 'm three years younger than you . EOS\n", "BOS 我 比 你 小 三岁 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 她 UNK 给 一位 老太太 。 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 他们 每年 冬季 去 UNK 滑雪 。 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 我 在 UNK UNK 。 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 你 应该 给 他 看看 这 UNK 。 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: 病人 随时 可以 UNK 。\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 我们 成功 UNK 了 河 。 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 让 我们 边 喝咖啡 UNK 。 EOS\n", "translation: 让 我们 再 开心 点儿 课 。\n", "\n", "BOS very few people live to be 100 . EOS\n", "BOS 很少 人活 到 100 岁 。 EOS\n", "translation: 很少 人 习惯 10 年 。\n", "\n", "BOS i could n't answer all the questions . EOS\n", "BOS 我 无法回答 所有 问题 。 EOS\n", "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: 你 在 UNK 多久 了 ?\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: UNK 在 UNK 长大 。\n", "\n", "BOS he hit his head against a rock . EOS\n", "BOS 他 的 头 UNK 了 一块 岩石 。 EOS\n", "translation: 他 承认 了 他 的 CD 播放机 。\n", "\n", "BOS i bought this book at UNK bookstore . EOS\n", "BOS 我 在 UNK UNK 那里 买 了 这 本书 。 EOS\n", "translation: 我 在 那里 买 了 这 本书 。\n", "\n", "BOS i will live in sasayama next year . EOS\n", "BOS 我 明年 UNK 在 筱山 。 EOS\n", "translation: 我 明年 会 住 在 筱山 。\n", "\n", "BOS she made a mess of the work . EOS\n", "BOS 她 工作 做 得 UNK 。 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 UNK 于 UNK 年 爆发 。 EOS\n", "translation: 地震 之后 我 被 UNK 了 。\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 UNK 有 一只 猫 。 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 我 UNK 了 他 的 电话号码 。 EOS\n", "translation: 我 把 他 的 电话号码 起 了 。\n", "\n", "BOS he arrived at school exactly on time . EOS\n", "BOS 他 刚好 准时 UNK 。 EOS\n", "translation: 他 从 学校 结束 了 。\n", "\n", "BOS there are too many things to do ! EOS\n", "BOS 要 做 的 UNK 了 ! 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 我 父亲 在 他 UNK 时 结婚 了 。 EOS\n", "translation: 我 父亲 以 他 的 声音 而 结婚 了 。\n", "\n", "BOS she carried that habit to her UNK . EOS\n", "BOS 她 到 死 都 UNK 那个 习惯 。 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 他 UNK 拒绝 让 我 进去 。 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 你 的 学校 离 你家 UNK 吗 ? 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 起初 我 UNK 他 说 的话 。 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 她 很快 地 把 衬衫 UNK 。 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 从 UNK 开始 一直 下雨 。 EOS\n", "translation: 从 UNK 一直 在 UNK 。\n", "\n", "BOS you can rely upon his being punctual . EOS\n", "BOS 你 可以 UNK , 他会 准时 的 。 EOS\n", "translation: 你 可以 UNK 到 他 的 错误 。\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 他 擦 去 了 UNK 的 UNK 。 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 社会 UNK 是 UNK 的 医生 。 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 我会 为 这次 行动 UNK 起 UNK 。 EOS\n", "translation: 我 必须 拔除 杂草 。\n", "\n", "BOS do you want to speak to tom ? EOS\n", "BOS 你 想 跟 汤姆 说话 吗 ? EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 你 想 跟 汤姆 说话 吗 ?\n", "\n", "BOS what 's the capital city of UNK ? EOS\n", "BOS UNK 的 首都 是 什么 ? 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 她 答应 UNK 见 他 ? 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 我 没有 参与 UNK 。 EOS\n", "translation: 我 没有 参与 这个 比赛 。\n", "\n", "BOS hang on till i get to you . EOS\n", "BOS UNK 直到 我 找到 你 。 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", "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 我 的 眼睛 进 了 些 UNK 。 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 UNK 了 一间 有 车库 的 房子 。 EOS\n", "translation: 我 在 一个 小 村庄 里 被 偷 了 一个 小 房子 。\n", "\n", "BOS the admission is ten dollars a person . EOS\n", "BOS UNK 一个 人 十美元 。 EOS\n", "translation: 入场费 一个 人 十美元 。\n", "\n", "BOS the guy with a UNK is tom . EOS\n", "BOS UNK 的 是 汤姆 。 EOS\n", "translation: 那家伙 是 Tom 的 人 。\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 地 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 UNK 电梯 到 五楼 。 EOS\n", "translation: 沿着 红绿灯 前 到 五楼 。\n", "\n", "BOS the police will look into the case . EOS\n", "BOS 警察 会 调查 这起 UNK 。 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 我 免费 得到 这个 CD 播放机 。 EOS\n", "translation: 我 免费 得到 了 这个 CD 播放机 。\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 我 看见 远处 有 UNK 。 EOS\n", "translation: 我 看见 远处 有 UNK 。\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 飞行员 用 UNK 与 机场 沟通 。 EOS\n", "translation: UNK 和 护照 UNK 。\n", "\n", "BOS kyoto is famous for its old temples . EOS\n", "BOS 京都 以 UNK 有名 。 EOS\n", "translation: 京都 以 优异 的 老 港口 。\n", "\n", "BOS tom cut himself with his knife yesterday . EOS\n", "BOS 汤姆 昨天 用 UNK 到 自己 了 。 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: 他 UNK 让 我们 觉得 他 的 故事 \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 这个 海滩 是 UNK 的 天堂 。 EOS\n", "translation: 这个 海滩 是 由 湿 的 。\n", "\n", "BOS she knows how to do the UNK . EOS\n", "BOS 她 知道 怎么 游 UNK 。 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: 我 被 他 在 UNK 上 被 杀 。\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 拍照片 UNK 不够 亮 。 EOS\n", "translation: UNK UNK UNK 。\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 我 改 了 一下 我 的 网站 的 UNK 。 EOS\n", "translation: 我 改 了 一下 我 的 版面设计 。\n", "\n", "BOS where did you have your picture taken ? EOS\n", "BOS 你 从 哪里 照 的 UNK ? 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 他 一点一点 UNK 好 。 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 这些 女孩 UNK 其中 一个 被 留下来 了 。 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 这门 从 里面 被 UNK 了 。 EOS\n", "translation: 这 是 在 文件 上 锁 着 的 。\n", "\n", "BOS can you translate this song for me ? EOS\n", "BOS 你 能 为 我 翻译 这 首歌 吗 ? EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 你 能 把 它 给 我 看 吗 ?\n", "\n", "BOS a card was UNK to the gift . EOS\n", "BOS 一张 卡片 被 UNK 在 了 礼物 上 。 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 点 30 分 的 车 。 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 他 和 他 的 儿子 放风筝 了 。 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 UNK 好像 非常 漂亮 。 EOS\n", "translation: UNK 似乎 似乎 很 美 。\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 我们 为 她 举办 了 一个 UNK 。 EOS\n", "translation: 我们 反对 她 的 派对 。\n", "\n", "BOS he gave me whatever help i needed . EOS\n", "BOS 他 给 了 我 任何 我 需要 的 帮助 。 EOS\n", "translation: 他 给 了 我 任何 我 需要 的 东西 。\n", "\n", "BOS we 're waiting for the right time . EOS\n", "BOS 我们 在 等 对 的 UNK 。 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 五年 太 UNK 而 无法 等待 。 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 我 想 成为 UNK 的 人 。 EOS\n", "translation: 我 想 找到 一位 老实人 。\n", "\n", "BOS tom has been struck by lightning three times . EOS\n", "BOS 汤姆 被 闪电 UNK 过 三次 。 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: 汤姆 在 UNK 中 , 但 汤姆 没 UNK 。\n", "\n", "BOS my baby began crying , asking for milk . EOS\n", "BOS 我 的 宝宝 开始 哭 了 , 他 想要 UNK 。 EOS\n", "translation: 我 的 孩子 开始 哭 了 。\n", "\n", "BOS my parents ' UNK went through the war . EOS\n", "BOS 我 父母 那 UNK 经历 过 战争 。 EOS\n", "translation: 我 父母 的 父母 UNK UNK 了 。\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: 我 觉得 UNK 一直 想 大叫 。\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 要 下雨 了 , 我 UNK 。 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 我 确定 汤姆 会 UNK 。 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 UNK 一张 纸 给 我 。 EOS\n", "translation: 请 在 纸 上 一张 纸 。\n", "\n", "BOS what do you think of tom 's cooking ? EOS\n", "BOS 你 觉得 Tom 的 厨艺 如何 ? EOS\n", "translation: 你 认为 汤姆 买 什么 ?\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 的 UNK 。 EOS\n", "translation: 这个 孩子 UNK 有 UNK 。\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 们 在 黑暗 下 UNK 。 EOS\n", "translation: 汤姆 从 他 的 UNK 到 了 。\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: 我 昨晚 有点 UNK 。\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 我会 带 你 到 UNK 。 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 大量 生产 UNK 许多 UNK 的 价格 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: UNK UNK 有 大量 的 石油 。\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 我累 得 再也 UNK 了 。 EOS\n", "translation: 我 厌倦 吃快餐 了 。\n", "\n", "BOS the UNK means of travel is by plane . EOS\n", "BOS 旅行 最快 的 方式 是 乘飞机 。 EOS\n", "translation: UNK UNK UNK UNK 。\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 他 从 UNK UNK 书 。 EOS\n", "translation: 他 从 书 得到 了 一本 关于 新书 的 的 的 。\n", "\n", "BOS i 'm getting off at the next stop . 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 UNK UNK was blind , deaf and UNK . EOS\n", "BOS UNK UNK , 耳聋 , 又 UNK 。 EOS\n", "translation: UNK 是 UNK 的 UNK 。\n", "\n", "BOS the sum of 5 and 3 is 8 . EOS\n", "BOS 五 和 三 的 总和 是 八 。 EOS\n", "translation: 三 的 纽扣 比 5 点钟 。\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 你 新书 的 UNK 是 什么 ? 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 我 不想 UNK 。 EOS\n", "translation: 我 不想 UNK 。\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 学校 离 我家 有 UNK 远 。 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 对不起 , 我 UNK 了 你 的 信 。 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 了 。 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 我 更 喜欢 UNK 写信 。 EOS\n", "translation: 我 更 愿意 写信 。\n", "\n", "BOS it 's no good trying to UNK her . EOS\n", "BOS 试图 劝 她 是 没有 用 的 。 EOS\n", "translation: 她 没有 对 她 的 UNK 感到 很 好 。\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 UNK 能 UNK 。 EOS\n", "translation: UNK UNK 是 他 的 错 。\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: 汤姆 看来 UNK 了 我 。\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 我们 UNK UNK 时代 。 EOS\n", "translation: 我们 在 UNK 被 被 UNK 。\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 我们 必须 UNK 汤姆 在 哪里 。 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 你 本 不该 UNK 秘密 的 。 EOS\n", "translation: 你 不 应该 在 秘密 的 。\n", "\n", "BOS i 'm afraid you have the wrong number . EOS\n", "BOS 我 恐怕 您 UNK 电话 了 。 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: 在 东京 和 东京 UNK 。\n", "\n", "BOS science begins when you ask why and how . EOS\n", "BOS 为何 如何 ? 你 疑问 的 UNK 就是 科学 的 开端 。 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 你 有 比 这个 UNK 一点 的 尺寸 吗 ? EOS\n", "translation: 你 有 UNK 吗 ?\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 我 看见 一条 UNK 了 花园 。 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 她 上 UNK 高中 。 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 他 给 我 UNK 了 他 的 一生 。 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 这些 年 UNK 恶化 了 。 EOS\n", "translation: 这些 数字 中 有 三十个 起 起 起 之一 。\n", "\n", "BOS he has UNK , so he works hard . EOS\n", "BOS 他 有 UNK , 所以 他 很 努力 工作 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 他 UNK 了 他 很 辛苦 。\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: 他 UNK 驾驶 着 的 苦味 。\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", "translation: 我 只 现在 做 的 东西 是 有 什么 。\n", "\n", "BOS my boss assigned the hard job to me . EOS\n", "BOS 我 老板 把 UNK 的 任务 指派 给 了 我 。 EOS\n", "translation: 我 的 老板 让 我 做 了 一套 。\n", "\n", "BOS do n't forget to put out the fire . EOS\n", "BOS 不要 忘 了 UNK 。 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 世界语 只有 16 个 语法 规则 。 EOS\n", "translation: 世界语 只有 16 个 语法 规则 。\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 别忘了 UNK UNK 。 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 她 的 祖母 活到 了 UNK 岁 。 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 请 让 我 看看 您 的 登机 UNK 吗 ? EOS\n", "translation: 请 看看 我 的 态度 到 你 的 登机 吗 ?\n", "\n", "BOS the telephone was invented in UNK by bell . EOS\n", "BOS 电话 于 UNK 年 由 贝尔 所 发明 。 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 他 不 知道 他 自己 UNK 。 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 汤姆 告诉 我 他 丢 了 UNK 。 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 他们 五月 UNK 了 大坂 。 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 我 经常 使用 UNK 来 UNK 连接 到 我 的 电脑 。 EOS\n", "translation: 我 常常 与 我 的 电脑 。\n", "\n", "BOS he 's already too far away to hear us . EOS\n", "BOS 他 已经 UNK UNK 听 不到 我们 了 。 EOS\n", "translation: 他 已经 UNK 了 。\n", "\n", "BOS he rushed into the room with his coat on . EOS\n", "BOS 他 穿着 衣服 UNK 进 房间 。 EOS\n", "translation: 他 急忙 地 把 她 的 房间 加 上 。\n", "\n", "BOS he wrote this book at the age of twenty . EOS\n", "BOS 他 在 20 岁 的 时候 写 了 这 本书 。 EOS\n", "translation: 他 写 了 这 本书 。\n", "\n", "BOS could you put this report into italian for me ? EOS\n", "BOS 你 可以 为 我 把 这份 报告 翻译成 UNK 吗 ? EOS\n", "translation: 你 能 把 这份 报告 翻译成 UNK 吗 ?\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 我 无法 找到 问题 的 UNK 。 EOS\n", "translation: 我 无法 UNK 。\n", "\n", "BOS she was asked to write her name in ink . EOS\n", "BOS 她 被 要求 用 UNK 写下 她 的 名字 。 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 你 说 Tom 对 我们 隐藏 了 一些 事情 ? EOS\n", "translation: 你 说 汤姆 说 了 什么 吗 ?\n", "\n", "BOS i got over the difficulty with my UNK UNK . EOS\n", "BOS 我 UNK UNK 克服 了 困难 。 EOS\n", "translation: 我 UNK UNK UNK 。\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 汤姆 是 我 认识 的 人 UNK 游泳 最快 的 。 EOS\n", "translation: 汤姆 游泳 游得 比 我 好 。\n", "\n", "BOS she discovered that she had run out of salt . EOS\n", "BOS 她 发现 她 已经 UNK 了 。 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: 我 对 汤姆 有多远 ?\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 我 想要 UNK 。 我 需要 放松 。 EOS\n", "translation: 我 想 另 一个 UNK 。\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 我 很 高兴 我们 UNK 了 你 来 担任 这份 工作 。 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 一部分 人 感觉 Tom 的 行为 举止 UNK 合适 。 EOS\n", "translation: 有些 人 觉得 汤姆 的 行为 举止 被 嘲笑 。\n", "\n", "BOS do n't look a gift horse in the mouth . EOS\n", "BOS 不要 对 人家 送 的 礼物 UNK , UNK UNK 的 。 EOS\n", "translation: 不要 把 一条 浴巾 。\n", "\n", "BOS the strong wind UNK that a storm is coming . EOS\n", "BOS UNK UNK 即将 到来 的 UNK 。 EOS\n", "translation: UNK 被 暴风雨 损坏 了 。\n", "\n", "BOS air is to us what water is to fish . EOS\n", "BOS 空气 UNK 来说 就是 水对 鱼 的 意义 。 EOS\n", "translation: 空气 是 一个 空间 给 我们 的 食物 。\n", "\n", "BOS the sun was shining , yet it was cold . EOS\n", "BOS 虽然 有 阳光 UNK , 但 还是 很 冷 。 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 的 UNK 。 EOS\n", "translation: 精通 一种 外语 有 许多 意义 。\n", "\n", "BOS my father will often read the newspaper during meals . EOS\n", "BOS 我 父亲 常在 吃饭 UNK 报纸 。 EOS\n", "translation: 我 父亲 常在 看 报纸 。\n", "\n", "BOS it was foolish of you to accept his offer . EOS\n", "BOS 你 UNK 去 接受 他 的 提议 。 EOS\n", "translation: 你 UNK 得 像 他 的 提议 。\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 的 研究 UNK UNK UNK 。 EOS\n", "translation: UNK UNK UNK UNK 。\n", "\n", "BOS this is the place where the battle took place . EOS\n", "BOS 这是 战斗 发生 的 地方 。 EOS\n", "translation: 这是 20 的 地方 快用 完 了 。\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 这个 教授 对 他 的 学生 有 很大 的 UNK 。 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 列车 停下 UNK 下车 。 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 来 UNK 决定 谁 先 走 吧 。 EOS\n", "translation: 让 我们 在 家庭 开始 。\n", "\n", "BOS i brought up two kids all on my own . EOS\n", "BOS 我 一个 人 把 两个 小孩 UNK 长大 。 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 我 想要 UNK 帮 我 个 忙 。 EOS\n", "translation: 我 想 你 帮 我 一个 人去 。\n", "\n", "BOS we should n't expect too much help from tom . EOS\n", "BOS 我们 不该 期望 从 Tom 那 得到 太 多 帮助 。 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 我 父亲 UNK 而 无法 去 散步 。 EOS\n", "translation: 我 父亲 无法 尽可能 地 散步 。\n", "\n", "BOS do n't move , or i 'll shoot you . EOS\n", "BOS 别动 , 不然 我 就 UNK UNK 你 。 EOS\n", "translation: 我 不 , 你 停下来 抽烟 。\n", "\n", "BOS i thought you had to get up by UNK . EOS\n", "BOS 我 以为 你 要 7 点半 起床 。 EOS\n", "translation: 我 想 你 UNK 。\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 任何 情绪 , 只要 它 是 UNK 的 , 就 说明 它 是 UNK 的 自然 流露 。 EOS\n", "translation: 如果 它 有 植物 , 它 。\n", "\n", "BOS you are no better at remembering things than i am . EOS\n", "BOS 你 记 事情 的 能力 UNK 我 好 多少 。 EOS\n", "translation: 你 没 比 我 更 高 的 事情 。\n", "\n", "BOS whether you succeed or not depends on your own efforts . EOS\n", "BOS 你 成功 UNK 取决于 你 自身 的 努力 。 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 UNK 。 EOS\n", "translation: 把 他 的 大 挂 到 一个 好 的 小 院子 。\n", "\n", "BOS if you see a mistake , then please correct it . EOS\n", "BOS 如果 你 UNK , 那 就 请 你 UNK 它 。 EOS\n", "translation: 如果 你 脸红 了 , 那 就 错 。\n", "\n", "BOS tom , i want to have a chat with you . EOS\n", "BOS Tom , 我 想 和 你 谈谈 。 EOS\n", "translation: 汤姆 , 我 想 跟 你 一起 一个 约会 。\n", "\n", "BOS tom wrote his name in the sand with a stick . EOS\n", "BOS 汤姆 用 UNK 在 UNK 写 了 他 的 名字 。 EOS\n", "translation: 汤姆 把 他 的 名字 加 在 大厅 名单 上 。\n", "\n", "BOS it was not long before we met again by chance . EOS\n", "BOS UNK , 我们 又 碰巧 遇到 了 。 EOS\n", "translation: 没有 太阳 就 没 时间 来 工作 。\n", "\n", "BOS the prince fell in love with a UNK 's daughter . EOS\n", "BOS 王子 UNK 了 一个 UNK 的 女儿 。 EOS\n", "translation: 王子 在 爆炸 上 的 女儿 。\n", "\n", "BOS they UNK to UNK as the father of english poetry . EOS\n", "BOS 他们 UNK 为 UNK UNK 。 EOS\n", "translation: 他们 UNK UNK UNK 。\n", "\n", "BOS tom made a list of places he wants to visit . EOS\n", "BOS 汤姆 把 他 想 去 的 地方 UNK 了 一张 清单 。 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 一个 好 的 厨师 不会 UNK 昨天 的 汤 。 EOS\n", "translation: 昨天 的 铅笔 不是 昨天 没有 足够 的 汤 。\n", "\n", "BOS the weather was so cold that the lake UNK over . EOS\n", "BOS UNK UNK 让 湖 结冰 。 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 她 在 国外 学习 UNK UNK 她 的 英语 。 EOS\n", "translation: 她 最近 UNK 到 意大利 学习 英语 。\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: 汤姆 UNK 比 他 有 很多 时间 。\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 UNK 这条 UNK 多久 ? EOS\n", "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 UNK 这个 数字 里 有 两个 UNK 。 EOS\n", "translation: “ 有 城里 的 电话号码 。 ” “ 这个 西瓜 。\n", "\n", "BOS they came up with a plan after a long discussion . EOS\n", "BOS 他们 终于 在 UNK 的 讨论 之后 得出 了 一个 计划 。 EOS\n", "translation: 他们 在 计划 讨论 上 讨论 了 这个 问题 。\n", "\n", "BOS he studies english , but he 's also studying german . EOS\n", "BOS 他学 英语 , 但 他 也 学 德语 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "translation: 他 学习 英语 , 但 他 学习 英语 。\n", "\n", "BOS in the UNK period , UNK parties were very popular . EOS\n", "BOS 在 UNK 时代 UNK 的 宴会 非常 受欢迎 。 EOS\n", "translation: 在 UNK UNK UNK , 那 UNK 。\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 汤姆 善于 UNK 做事 。 EOS\n", "translation: 汤姆 对 自己 的 事 非常 好 。\n", "\n", "BOS there are seven men and four women in my section . EOS\n", "BOS 在 我 的 部门 里 有 七 UNK 。 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: 他 UNK 也 不 知道 我 自己 。\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 我 把 他 带到 UNK 里 UNK 的 餐馆 去 了 。 EOS\n", "translation: 我 把 他 带到 UNK 的 东西 搞 丢 了 。\n", "\n", "BOS do you think that he is equal to the task ? EOS\n", "BOS 你 认为 他 能够 UNK 这个 任务 吗 ? EOS\n", "translation: 你 认为 他 还 在 这个 任务 吗 ?\n", "\n", "BOS the beach is an UNK place for children to play . EOS\n", "BOS 海滩 是 一个 UNK 孩子 们 UNK 的 UNK UNK 。 EOS\n", "translation: 在 海滩 上 一个 是 一个 孩子 。\n", "\n", "BOS it seems that most people only UNK in the summer . EOS\n", "BOS 人们 似乎 只 在 夏天 UNK 。 EOS\n", "translation: UNK 似乎 是 在 夏天 的 人 。\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 昨晚 他 希望 他 去 了 UNK 。 EOS\n", "translation: 他 希望 他 去 农场 到 昨晚 去 看 。\n", "\n", "BOS my hands were shaking too much to thread the needle . EOS\n", "BOS 我 的 UNK 得 太 厉害 , 没法 UNK 了 。 EOS\n", "translation: 我 的 UNK 比 我 的 大 。\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 我 已经 习惯 了 UNK 过 火车 的 声音 了 。 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 仅 UNK 的 成员 出席 了 会议 。 EOS\n", "translation: 仅 在 学生 中 受伤 了 中央 之间 的 会议 。\n", "\n", "BOS i should have tried out this electric UNK before buying it . EOS\n", "BOS 我 本该 在 买下 这个 UNK UNK 之前 试一下 的 。 EOS\n", "translation: 我 该 从 看过 这 起 了 今天 的 东西 。\n", "\n", "BOS i ca n't get at the exact meaning of the sentence . EOS\n", "BOS 我 抓 不到 句子 的 确切 UNK 。 EOS\n", "translation: 我 从 德语 而 没有 回来 的 。\n", "\n", "BOS he quickly made friends with the new boy on the UNK . EOS\n", "BOS 他 很快 便 与 小区 里 新来 的 男孩 UNK 了 朋友 。 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 坐飞机 去 冲绳 要花 多长时间 ? 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 汤姆 将 他 自己 和玛丽 的 名字 UNK 到 了 名单 上 。 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: 这个 孩子 没有 被 UNK 。\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 我 觉得 我 好像 从 UNK 中 UNK 。 EOS\n", "translation: 我 觉得 UNK 就 在 UNK 了 。\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 汤姆 为 他 UNK 的 UNK 了 监狱 。 EOS\n", "translation: 汤姆 在 他 的 视力 中 被 嘲笑 了 。\n", "\n", "BOS a bicycle will UNK if you leave it in the rain . EOS\n", "BOS 如果 你 把 自行车 留在 UNK , 它会 UNK 的 。 EOS\n", "translation: 如果 你 的 自行车 会 UNK , 你 。\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 UNK 开始 时 只有 一位 UNK 值班 。 EOS\n", "translation: 从 UNK 的 情况 只是 一个 花 。\n", "\n", "BOS tom UNK out the towel and hung it up to dry . EOS\n", "BOS 汤姆 UNK UNK 挂 起来 UNK 。 EOS\n", "translation: 汤姆 UNK UNK 了 一眼 , 以至于 早晨 整理 美元 。\n", "\n", "BOS he wore a UNK so that no one could recognize him . EOS\n", "BOS 他 戴 着 UNK 以至于 没有 人 认出 他 。 EOS\n", "translation: 他 穿 上 了 一条 奇怪 的 消息 。\n", "\n", "BOS france is running a welfare state it can no longer afford . EOS\n", "BOS 法国 是 一个 福利 国家 , 但 它 却 不再 能够 UNK 了 。 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 UNK 你 说谎 的 人 , 就 会 对 你 说谎 。 EOS\n", "translation: 谁 会 被 你 说话 了 , 谎言 。\n", "\n", "BOS i 'll drop by the post office on the way home . EOS\n", "BOS 我会 在 回家 的 路上 UNK 邮局 。 EOS\n", "translation: 我 将 在 邮局 回来 。\n", "\n", "BOS can you give me a ride to the office on wednesday ? EOS\n", "BOS UNK 你 可以 载 我 到 办公室 吗 ? 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 报纸 看 UNK 借 我 看 下 。 EOS\n", "translation: 让 我 看看 你 的 时候 看 。\n", "\n", "BOS he UNK a fortune in stock UNK during the last UNK . EOS\n", "BOS 他 在 上 个 UNK 时期 UNK UNK 了 一笔 钱 。 EOS\n", "translation: 他 在 UNK UNK UNK UNK 。\n", "\n", "BOS it cost me ten thousand yen to have my television set repaired . EOS\n", "BOS 把 我 的 电视机 修好 花 了 我 一 万日元 。 EOS\n", "translation: 把 我 的 电视机 停 在 公车上 了 。\n", "\n", "BOS as soon as the bell rang the teacher came into the classroom . EOS\n", "BOS UNK 一 响起 , 老师 就 走进 了 教室 。 EOS\n", "translation: UNK 就 像是 为了 为了 为了 为了 学校 的 屋子 。\n", "\n", "BOS quite by chance , i met my old friend in the airport . EOS\n", "BOS 很 UNK , 我 在 机场 遇到 了 我 的 老朋友 。 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 花园里 树上 的 叶子 已经 完全 UNK 了 。 EOS\n", "translation: 从 花园里 的 叶子 已经 没有 长 了 。\n", "\n", "BOS it is not easy to catch a hare with your UNK hands . EOS\n", "BOS UNK UNK 抓 UNK 并 不 容易 。 EOS\n", "translation: UNK UNK UNK 。\n", "\n", "BOS she employed a private detective to keep a watch on her husband . EOS\n", "BOS 她 UNK 一个 UNK UNK 她 的 丈夫 。 EOS\n", "translation: 她 UNK UNK UNK 和 她 的 丈夫 。\n", "\n", "BOS i do n't know if he would have done it for me . EOS\n", "BOS 我 不 知道 他 是否 已经 为 我 做好 了 。 EOS\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 我 现在 UNK 能 买 我 想要 的 任何 东西 。 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 UNK 掌握 法语 。 EOS\n", "translation: 虽然 UNK UNK 有 困难 , 这是 一本 好书 。\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 我 告诉 汤姆 我 认为 他 的 房子 要 UNK 。 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: 万一 发生 我 的 路 , 所以 10 点到 波士顿 。\n", "\n", "BOS according to tv news , there was a plane crash in india . EOS\n", "BOS 根据 UNK , 一架 飞机 在 印度 坠毁 了 。 EOS\n", "translation: 根据 报导 , 湖 UNK 了 , 湖 的 着陆 。\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 我 弟弟 没 我 两年 UNK 。 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: 没有 人会 被 用来 而 UNK 。\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 我 住 的 地方 - 伦敦 , 从前 UNK 闻名 。 EOS\n", "translation: 在 伦敦 , 我 以前 被 老朋友 了 。\n", "\n", "BOS this is where i want to live for the rest of my life . EOS\n", "BOS 这里 是 我 馀 UNK 待 的 地方 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 当 我 还是 个 孩子 的 时候 , 我 在 这个 泳池 UNK UNK 。 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 能 不能 麻烦 你 告诉 我 去 UNK 怎么 走 ? EOS\n", "translation: 抱歉 , 你 能 让 我 看看 吗 ?\n", "\n", "BOS you look tired . you ought to rest for an hour or two . EOS\n", "BOS 你 看起来 很累 。 你 应该 休息 UNK 小时 。 EOS\n", "translation: 你 看上去 很傻 。\n", "\n", "BOS he 's not such a great writer and i think he knows it . EOS\n", "BOS 他 不是 UNK 的 作家 我 想 他 知道 这 一点 。 EOS\n", "translation: 他 不是 我 知道 的 作家 而 他 有 一个 作家 。\n", "\n", "BOS i know it 's time to go , but i want to stay longer . EOS\n", "BOS 我 知道 该 走 了 , 但 我 想 UNK 一点 。 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 我们 UNK 过 他 在 那么 短 的 时间 里 完成 工作 。 EOS\n", "translation: 我们 没有 UNK 他 做 的 时间 完成 了 他 的 时间 。\n", "\n", "BOS i would rather live by myself than do as he tells me to do . EOS\n", "BOS 我 宁愿 自己 独立 生活 也 不要 他来 UNK 我 。 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 要是 UNK UNK 的话 , 你 的 视力 会 下降 的 。 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 圣经 里 有 一句 话 , 叫做 “ 人 不能 UNK 面包 生活 ” 。 EOS\n", "translation: 圣经 里 有 一句 话 , 但 这个 人 也 没有 人 都 可以 被 强烈 。\n", "\n", "BOS `` where were you ? '' `` i was at a friend 's house . '' EOS\n", "BOS “ 你 在 哪里 ? ” “ 我 在 一个 UNK 。 ” EOS\n", "translation: “ 你 在 哪里 ? ” “ 我 的 房子 里 。 ”\n", "\n", "BOS i was nine years old when i asked my mom if UNK UNK really UNK . EOS\n", "BOS 我 UNK 的 时候 问 我 妈妈 UNK 是否 真的 存在 。 EOS\n", "translation: 我 在 空闲 月 的 时候 确定 她 的 时候 会 发音 。\n", "\n", "BOS there are some UNK , but all in all , it 's a good book . EOS\n", "BOS 虽然 有 一些 UNK , 但 大致 上 说来 , 这是 一本 好书 。 EOS\n", "translation: 虽然 有 一些 , 但 大致 上 说来 , 这是 一本 好书 。\n", "\n", "BOS at UNK today , our usual restaurant was closed because of a funeral in the family . EOS\n", "BOS 今天 午餐时间 , 我们 UNK 的 UNK 关门 了 , 因为 他们 家 在 办 UNK 。 EOS\n", "translation: 今天 午餐时间 到 了 我们 的 UNK , 办 了 。\n", "\n", "BOS if you do n't have anything nice to say , do n't say anything at all . EOS\n", "BOS 如果 你 没 UNK 说 , 那 就 什么 都 UNK 。 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 \" 他 想 在 下班 后 UNK 咖啡 。 \" \" 我 也 想 。 \" 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 这 只是 你 和 我 之间 的 秘密 , 所以 不要 让 它 UNK 。 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 我 到 柜台 拿 了 钥匙 , 然后 就 乘 电梯 去 了 我 房间 的 UNK 。 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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "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 变得 很 UNK , 我 想 是不是 感冒 了 。 EOS\n", "translation: 我 对 这 UNK 感到 很 好 。\n", "\n", "BOS my parents usually speak to each other in french , even though my mother is a native english speaker . EOS\n", "BOS 我 父母 通常 用 法语 UNK , 即使 我 母亲 的 母语 是 英语 。 EOS\n", "translation: 我 父母 通常 用 英语 的 英语 , 即使 我 的 母语 是 英语 。\n", "\n", "BOS `` will you have some more coffee ? '' `` no , thanks . i 've had enough . '' EOS\n", "BOS “ 你 想 再 来 点 咖啡 吗 ? ” “ 不 , 谢谢 。 UNK 了 。 ” 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 其实 我 工作 UNK , 但 UNK 让 我 这周 在 办公室 里 忙 着 了 。 EOS\n", "translation: 我 UNK UNK 了 , 但 我 UNK 。\n", "<<<<<<< finished evaluate, cost 2720.9950 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": "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.9" }, "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 }