自然语言处理(NLP)领域近些年最大的突破,或许是 Word2Vec,就是把自然词汇转换成一组数字的算法。比如斯坦福的 GLOVE 模型,就把每个词用 300 个数字表示。

文字向语义空间的映射
两个数字,可以表示一个二维的平面的点;3 个数字可以表示三维的立体空间的点;这 300 个数字,可以理解为在一个 300 维空间的一个点。
研究员把几亿篇网上能找到的文章,一股脑输入进 Word2Vec 模型,算法根据每个单词的上下文的单词,把上下文相似的单词,在 300 维空间里面调整得比较近,比如苹果、香蕉、桔子等就比较接近,铁、铜、铝也比较接近。而苹果、铁和文艺复兴这样的词就相对比较远。
这样产生的一个有趣的现象,就是有 300 个维度来描述的语义,可以让各个词之间进行加减运算。经典的例子就是King,Quene,Man,Woman 这四个词都变成这 300 维的数字,对这 300 个数字按照维度分别进行加减:
King – Man + Woman
会得到一个新的 300 维的数字,这个数字附近最近能够找到的单词,居然是 Quene。(从语义上,国王之于男人,相当于女王之于女人)
用一个特别简单的程序,就可以问这个纯数学模型一些比如:北京之于中国,相当于巴黎之于________。算法会找到法国。
机器翻译
现在的机器翻译已经早就不用字典了,而是用类似的模型。把中文一堆文字放进这个模型,「苹果」这个词会映射到一个 300 位的数字,如果把英文也灌进去,「Apple」这个词也会映射到几乎一样的位置,同理,manzana, mela 等等都会映射到同一个点附近。
我们如果发现了一个新的原始部落,世界上没有一个人认识他们的文字,但不用着急,只要把能找到的他们的文献输入进这个模型,自然会把所有的他们的词汇都对应到了这个 300 维的空间里面,最接近「苹果」这个词的那个词汇,我们断定,肯定是他们的语言中,表示苹果的意思。现在 Google 提供的上百种语言之间的相互翻译,都是使用这种方式,一气呵成地完成的。
我们有的时候看到 Google 翻译的时候,会出现翻译的啼笑皆非,却有那么点可以理解的错误,就是因为这种方式造成的。比如有人发现特朗普在有些语言中被翻译成了笨蛋。其实,仅仅是因为在日常使用中,越来越多的人用「笨蛋」这个词替代了本来应该出现特朗普的位置,机器学习会学会这种方式。
我们的大脑学习新的词汇
我们大脑也是用同样的方法学习一个新的词汇的。比如一个两岁的孩子,某一天开始说「噗噗」这个词了。如果没有上下文,我们无法知道他要表达什么意思。但是如果听得多了,我们会慢慢学会他发明的这个新词。
比如:「我最喜欢吃噗噗了」,我们就知道这应该是某种吃的,在我们大脑的神经元组成的语义空间里,把这个词挪到了表示吃的的那个区域。
「我要吃噗噗,不吃香蕉」,这样我们知道大概率是水果。
「我要吃红噗噗,不要吃绿噗噗」,大致苹果的形象已经出来了。
如果在加上手的比划等其他方式的验证,我们可以从上下文发现,他把我们用「苹果」这个词的地方都填充了「噗噗」,我们就此理解了他的「噗噗」就是苹果。
语言的进化
人类的语言的进化就是这样。比如我们很多年前把「想象」这个词说成了「脑补」,估计字典还来不及跟进,机器算法已经学会了,并且把「脑补」,「想象」和「imagine」这些词都映射到了语义空间的同一个位置。就这样,脑补这个词就拥有了想象这个含义。
「内卷」vs 「竞争」,「手势」vs 「规范」,这些词不断出现,第一次看不懂,看的次数多了,不需要任何人解释,凭借上下文,我们就能理解。
同时随着语言的进化,很多词因为不方便说,不断地用新的词隐晦的替代。「同志」已经慢慢地在语义空间里面移动了位置,不再代表原来的革命同志的意思。「小姐」也不是很多年前的「小姐」,而原来的词所处的那个语义向量空间的位置空了出来,被新发明的「小姐姐」这个词填了进去。
那些我们不懂的新词儿
无论多新的词,只要语义相对稳定,我们都会很快学会。
怕就怕一个幼儿园小班的小朋友,都争相恐后地跟你用「噗噗」这个词。不过,有的用「噗噗」指代「苹果」,有的指代「马桶」,有的指代「凳子」,估计一周以后,这个幼儿园老师依然搞不懂「噗噗」到底是啥意思。
这就是我们大多数人搞不懂「元宇宙」是啥东西的原因。不要伤心,如果不懂,这不是你的错。