文本是由多种词性的字词通过系统的语法规则组成而成的 具有上下文语义的字词串。根据文本的定义,我们可以将文本的相似度分为两种:一,是文本包含字词的相似度;二,是文本内含语义的相似度。
比如:
文本1:我很喜欢这些小动物。(主+谓+宾)
文本2:这些小动物,我很喜欢。(倒装句)
我们可以轻松的看出 这两个 文本中所有的字词是一样的(也就是说 字词的相似度是100%),同时在忽略上下文来看 两个文本的语义 也是极度相似。
度量文本的字词相似度,我们需要克服 语法带来的 字词顺序的变化以及词频的影响,不能简单的做字词对比。最经典的步骤如下:
1,我们需要一个 无所不包的字典,没有个字词字词中的位置是唯一固定的 “第N页第M行第K列”。这里我们把这个字典叫做:“字词唯一码表”。
2,将文本1、文本1 进行分词拆解,并找到对应的 字词位置编码,这个过程叫做编码,编码的过程是将文本数字化,方便计算机的计算。
3,文本中通常会出现重复的字词,起到强调作用,赋予了字词的分量,也就是算法中常说的权重,需要考虑 字词的出现频次。
4,我们借助一些 距离计算的公式,可以度量出文本的相似度大小。
比如 :常有的余弦相似度计算公式
可以计算得到两个文本的相似度为:1 , 文本的字词相似度是100%。
计算机的算法擅长度量文本的字词相似度,却很难度量 文本之间的语义相似度。因为字词的一般有多种表意,可以实指事物,也可以虚表概念,比如一语双关等;同时字词本身的词性词形变化多样,在不同的语境有着截然相反的语义。
我很喜欢这些小动物,在动物园里,可以理解为 喜欢小动物的活泼可爱。在厨房,可以理解为 喜欢小动物的新鲜味美。
文本包含字词的相似度,赋予了算法的能力,大数据的训练对文本语义的度量赋予了算法的智力。我相信在 大数据不断的积累和训练参数的沉淀下未来的大模型的智力将会更上一层楼。