🐦 第9章 实战案例:看图学英语智能助手
📄 一句话概括

把英文释义翻成中文。难点不在翻,在选义项——board 可以是画板、董事会、上船。 同一张义项表,换一句上下文就换一个答案。不带上下文翻,等于闭着眼睛选。 演示里关键词表这个替身过了三关,第四关栽了:那句话里一个关键词都没有。

📝 本章和前面几章的关系

翻译节点看着最没技术含量——不就是翻个词?真做起来,它是全链最容易出错的一步。 因为它的错不显眼:翻出来的中文读着通顺,只是意思不对。这种错最难在测试里发现。 书里这一步挂的是通用大模型。 本沙箱没有模型,下面用关键词表代替——替身失手的地方,正是模型需要上下文的地方。

一、直译错在哪

board 有三条常见义项:写字用的板子、公司里的董事会、登船。 查词典翻,词典按词频给第一个——多半是「板子」。放在单词卡上恰好对,放在别的地方就全错。 错的不是词典,是「只给一个词」这件事本身。 一个词离开上下文就没有确定意思。

这一点在第 9.4 节的「抽全不等于抽对」里出现过一次:那里错在格式,这里错在意思。 两种错都不会让字段数掉下来。

二、上下文从哪来

好消息是上下文本来就在手边:图上的那句例句。 例句是 I ate an apple after lunch.,那就知道 apple 在这张卡上是水果,不是苹果公司。 所以翻译节点的输入不能只绑「英文释义」一个字段,还要把例句一起绑进去。

演示里 board 那条上下文是「卡片上这个词,配图画的是教室里写字用的板子」,三个关键词全中:写字、 板子、教室。 换成「公司开会,board 指的是那间会议室里的人」,中的就变成公司、开会、会议室。 同一个词、同一张义项表,答案跟着上下文换。

三、替身是怎么栽的

四条上下文,前三条全对,第四条错了:

上下文 选中 应该
卡片上这个词,配图画的是教室里写字用的板子 画板 画板
公司开会,board 指的是那间会议室里的人 董事会 董事会
码头广播说现在开始 board,请旅客登船 上船 上船
他说该 board 了,我们快点过去 画板 上船

第四句里一个关键词都没有,三个义项全 0 分,规则退回表里第一个——画板。 这不是关键词表笨,是它只会做模式匹配。 真机上模型读得懂「该 board 了」是在说该登船,因为它见过这种说法。 两条修法:把同义词补进关键词表,或者让上游把上下文写具体——改说「该登船了」,命中就回来了。

四、多带一句上下文,多花多少钱

只翻释义三个 token,五个字段全翻十一个,带上上下文四十一。 多出来的三十个 token 换的是「选对义项」的概率。这是整条链上最划算的一笔开销。 反过来说,如果这一步只翻单个词、不带上下文,那它根本不值得存在——查词典更快更便宜。

一个节点值不值得留,看它有没有做「别人做不了的事」。 翻译节点做的事,就是结合上下文选义项。

五、什么时候这一步可以省

三种情况可以去掉翻译节点:目标用户能读英文释义、单词本身没有多义、卡片上只放单词和图不放释义。 第一种最常见:给备考的人做的工具,英文释义反而更好——那是他们要练的东西。 去掉之后整条链少一步、少一次调用、少一处可能出错的地方。能少一步就少一步,别为了「完整」留着。

六、动手 Demo:翻译:看句子选义项,别查字典

三个词各配三条义项,每个词给一句上下文,看它选中哪条。 再把 board 换上四条不同上下文,看答案怎么跟着变。

SENSES = {u'board': [(u'画板', [u'写字', u'板子', u'教室']),
                     (u'董事会', [u'公司', u'开会', u'会议室']),
                     (u'上船', [u'登船', u'码头', u'旅客'])]}

def pick(ctx, senses):        # 关键词命中数最多的那条
    sc = sorted(((sum(k in ctx for k in keys), cn)
                   for cn, keys in senses), reverse=True)
    return sc

实跑输出:

--------------------------------------------------------------------
翻译:看句子选义项,别查字典
--------------------------------------------------------------------


  ① 一个词三个义项,靠上下文挑
  --------------------------------------------------------------------

| 词 | 上下文 | 选中 | 应该选 | 命中数 |
|---|---|---|---|---|
| board | 卡片上这个词,配图画的是教室里写字用的… | 画板 | 画板 | 3/0/0 |
| spring | 这句在讲花开了,天气变暖 | 春天 | 春天 | 3/0/0 |
| bank | 句子说沿着水边走就能到对岸 | 河岸 | 河岸 | 2/0/0 |

  三个词选中 3 个。命中数按表里顺序读:画板 / 董事会 / 上船。
  靠的不是词本身,是那句上下文——同一个 board,上下文一换,选中的义项就换。

  ② 同一个词,四条上下文四个答案
  --------------------------------------------------------------------

| 上下文 | 选中 | 应该选 | 对不对 |
|---|---|---|---|
| 卡片上这个词,配图画的是教室里写字用的板子 | 画板 | 画板 | 对 |
| 公司开会,board 指的是那间会议室里的人 | 董事会 | 董事会 | 对 |
| 码头广播说现在开始 board,请旅客登船 | 上船 | 上船 | 对 |
| 他说该 board 了,我们快点过去 | 画板 | 上船 | 错 |

  第四行栽了:那句话里一个关键词都没有,三个义项全 0 分,规则退回表里第一个——画板。
  真机上模型遇到这种句子同样靠猜,只是猜得比「退回第一个」像样一点。
  ! 修法两条:把同义词补进关键词表,或者把上下文写具体——改成「该登船了」,命中就回来了。

  ③ 翻五条比翻一条贵多少
  --------------------------------------------------------------------

| 喂什么进去 | token | 翻几条 |
|---|---:|---:|
| 只翻释义 | 3 | 1 |
| 五个字段全翻 | 11 | 5 |
| 带上下文一起翻 | 41 | 5 |

  带上下文只多 30 个 token,但选对的概率差得远——这是全章最划算的一笔开销。

①第一张表三行:board 命中 3 个、spring 命中 3 个、bank 命中 2 个,全选对。 ②命中数按表里顺序读:画板 / 董事会 / 上船。三个词都是第一个义项中标。 ③第二张表四条上下文,前三条全对,第四条错了——那句里一个关键词都没有。 ④错的那条退回表里第一个,和模型没线索时瞎猜是同一个后果。 ⑤最后一张表:只翻释义 3 个 token,五个字段 11 个,带上下文 41 个,多 30 个。

30 秒实验

  1. 翻开你现在这条链,看翻译节点的输入绑了几个字段。只绑了单词的,把例句一起绑上。
  2. 找一个你熟悉的词,写出它的三个义项和三句上下文,看你能不能一眼选对。选不对就说明上下文不够。
  3. 把例句删掉再跑一次,对比两次结果。差的那一次,就是上下文省下来的钱。

常见误区

  1. 「翻译就是查词典。」一个词离开上下文没有确定意思。查词典只能给最常见的那个。
  2. 「上下文太长,费 token。」多三十个 token 换选对义项,这是全链最划算的一笔。
  3. 「这一步可有可无。」要么让它结合上下文,要么干脆删掉。只翻单词的翻译节点不值得留。
自测三问(点开对答案) 1. 为什么不能只翻单词? —— board 可以是画板、董事会、上船。离开上下文就没有确定意思,只能给最常见的那个。 2. 上下文从哪来? —— 图上的例句就是。翻译节点的输入要同时绑英文释义和例句,不能只绑一个字段。 3. 替身为什么在第四句栽了? —— 那句里一个关键词都没有,三个义项全 0 分,规则退回表里第一个。模型能读懂,规则不能。

文字部分全齐了:五个字段,中文释义。下一节把它们画成一张卡片。

相关笔记