最近一年,一直在做一个 Side Project,一款记生词的 App 「单词 GO」,这款 App 的功能就是字面意思上的记录生词,但是又有点不太一样,它是记录句子为主,而不仅仅是生词本身。

一个 App 的诞生

提升英语的词汇量,无非就两种方式,一种是背词汇表,比如四六级、托福雅思词汇表。另一种是日常的阅读带来的词汇积累,就是记录遇到的生词。对于后一种长期提升词汇量的方式,我们为何不将遇到生词的场景同时记录下来呢。无论你是看电影遇到了句台词,还是看书遇到了行文字,亦或是街边散步看到的句 Slogan,都可以将其记录下来。一个单词有不同的含义,正是因为他所在的语境(句子)是不同的。

18 年的时候,我就有这样的观念,于是我找遍了市面上各个带有记生词功能的 App,但无一例外,都是只记录单词本身。也尝试使用 Anki 自己写模板,来手动录入,不过对于录入生词这件「简单」的事情来说操作成本过高了。那时候就萌生了自己来做一个这样的 App 的想法。但是工作繁忙,加上拖延症,这个想法就无疾而终了。

时间来到了 21 年的时候,在少数派上跟学了《英语自学手册》,发现其中强调了语境(句子)对记录及记忆单词的重要性,这和我的观念不谋而合。

阅读时难免会碰到生单词,这时我们当然要查词典。…… 那么阅读时究竟应该如何查词典呢?一言以蔽之:只查该单词在该语境下的意思。
这一点我们在辅助精读法中也曾提过,即如果一个单词有多个意思,我们只看这个单词在这个语境下面——这篇文章的这个位置——那唯一的一个意思,不需要去记它其他的意思。

这让我觉得,当年的那个被放弃的想法是很有意义的,应该尽力去实现它。于是通过自学 iOS 开发、UI 设计,调研方案,对抗拖延症,它诞生了。

功能,从记录到记忆

记录生词,是个简单动作

如前文所述,「单词 GO」期望用户在记录生词的时候,输入的是整个句子或词组,而不仅仅是生词本身。那么理想状态下,用户提供句子,选择其中的单词,App 应该只记录此单词在句子中的含义或解释

上图中,Fire drill 的含义是消防演习,因此 drill 在这里只需要记录「演习」这个含义。

那么有没有这样的词典,只展示该语境下的含义,而不是像普通词典那样,罗列出一个单词所有的词性和含义呢?很可惜,我没有找到。

《英语自学手册》中「我理想中的背单词软件」 这一节中给出的方案是,让用户自己来选择含义。但这样的方式,我觉得带来的操作成本还是高了,用户自己选择含义的前提是用户已经知道这个语境下的含义。对于记录生词这个场景来说,有些难为用户了。

22 年底,ChatGPT 3.5 的发布让这难解的问题有了新的解法。让 LLM(大模型) 来根据上下文理解某个单词的含义,可以说是钉子找到了它的锤子。不过我还是放弃了使用它,各家大模型 API 苛刻的申请或使用条件,必然会提高「单词 GO」App 的使用门槛。如果一个应用做成了 AI First,它的定价肯定得需要匹配上 AI 的价格,也就是说它的定价与第三方是强相关的, 这不是良性的定价策略。各家大模型 API 的定价,目前都是比较高的。付出较高的成本,让大模型只干翻译的活,是不值得的。

于是,我选择了一个折中的方式,不翻译某个单词,翻译整条句子

采用类似大爆炸分词的方式,用户能快速选择句子中的生词并记录。得益于 iOS 15 带来的新特性,「单词 GO」支持扫描文本来代替键盘的输入。

记忆单词,是件重复工作

说到背单词的方式,大家都知道遗忘曲线或是艾宾浩斯。受艾宾浩斯遗忘曲线的启发,无论是 Anki,还是其他家的背单词软件,它们采用的都是间隔重复算法。「单词 GO」采用了类似多邻国的算法,但更加轻量。

背单词功能,「单词 GO」提供了传统的卡片模式,采用红绿灯颜色的三个按钮,从左往右分别代表对单词的熟悉程度:陌生、了解、熟识。

当然也提供了《英语自学手册》中「我理想中的背单词软件」一节提到的列表模式。

所谓列表模式,即在每天推送背单词任务时,先给一个所有单词的列表。这个列表上只有英文单词,没有中文释义。在每次背单词之前,可以先手动点掉这些单词里面已经认识的单词,这样就可以只背那些不认识的单词,从而提高效率。

可以说,「单词 GO」自己提供背单词的功能,而不是让用户跳转到其他如 Anki 这样的软件,重要原因之一,是为了实现这个列表模式。

最后

这一年时间,完成了这个 Side Project,就像是完成了一场漫长无比的马拉松,很庆幸自己坚持下来了。

App Store 下载地址