正在创造AI英语老师
英文里的一词多义现象非常普遍
大多数单词都有不止一个意思,有些常见单词甚至有几十个意思。比如take,单单是当动词,不算短语动词和俚语,在牛津高阶词典里都有多达42个意思。这些意思出现的语境和频率各不相同。有些意思极其常见,如拿,喝等动作。因此这些会被排在前面,也是大多数学习者所熟知的意思。但是有些意思出现的频率就远没有那么高,但出现的场合通常都是决定学习者出国考学的场合。这就造成一个常见现象:每个单词都认识,放在一起就不懂了。这就是因为单词在语境下并不是常见的那个意思,而学习者只记了最常见的意思。
不少记单词的软件和单词书都有这个毛病,把一个单词的所有意思挤在释义里。之前在机构教SAT,我们都会要求学生记住所有释义,但这种要求很难落实。没有具体语境,死记硬背这么多差别这么大的意思也很难。
所以按理说,一个take的42个动词意思,就不应该被当成一个单词对待,而应该是42个意思和语境频率都不同的单词。一次就只应该学习一个,通过充分的语境和练习把一个意思吃透,再在合适的水平学下一个。学习者可能在A1时就接触了take,但直到C1水平时还在学习take,只不过是不同的含义。
我的英语学习APP就充分考虑到了这一点。在我刚开始做的时候,发现网上没有公开可用的单词的中文含义的词频数据,因此没有全面的把单词-含义对作为基本单位的难度分类数据。由于CEFR难度等级颗粒度太粗糙,我的难度分级从100到1300有13级。这13级是通过句子的多方面复杂度通过一个公式算法计算的,所以要赋予单词-释义对这样的等级,确实没有任何现成的方案。
我只能开动脑筋自己制作这样的数据。我注意到,词汇的释义难度其实就是其出现的语境的难度。我完全可以用这种映射关系,把词汇以某个意思出现的语境的难度用公式算法算出来,当作这个释义的难度的proxy。但是如何把英文语料库里的单词的语境义和中文释义对应起来呢?我想到,大语言模型其实就是基于英文语料库训练的,那么如果我让大语言模型用某个单词的某个释义正常造句,不去约束句子的难度,同时要求使用这个释义最常使用的语境,那么输出的基本上就是符合释义的英文语境句子。我只要把这个句子输入难度计算算法,就可以得出释义的难度了。这个难度可以通过用户的句子翻译测试得到的等级(用户最多能handle多难的句子)建立用户-词汇-学习材料三者难度的匹配。
因此,我的英语学习产品对于每一个词,一次只学一个意思,而且一定是匹配学习者当前水平的意思,语境也都是符合学习者当前水平的语境。