一 序
本文属于NLP学习笔记系列。
二 one-hot 文本表示
很经典的一个算法。这种方法把每个词表示为一个很长的向量。向量的维度就是词典的长度。
这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。
2.1 单词的表示形式
下面,老师讲的例子:词典就7个单词。实际可能几十万个
2.2 句子的表达形式(不统计词频) boolean
将词典看成一个一维向量,若词典里的单词在句子中出现(不管几次),则一维数组的对应位置标为1
2.3 句子的表达形式(统计词频) count
这里考虑词频,出现几次算几次。
三 文本的相似度
应用场景:问答、搜索、分类等。
3.1 基于欧式距离的文本相似度
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
理解为: d=|s1-s2|, d表示距离,s1,s2 表示向量。
欧式距离越小,句子相似度越高。
3.2 余弦相似度
向量再空间本身是有方向的,而欧氏距离只考虑大小不考虑方向。
余弦相似度的特点:它与向量的长度无关。因为余弦相似度计算需要对向量长度做归一化。
老师要是不讲,直接看公式肯定头大。
这里的分子的A,B分别代表向量A和B的各向量(内积),分母的||A|| 表示符号是范数的表示符号,可以理解而为向量的“长度”。
范数:(Norm)是一种关于向量的函数,是向量“长度”概念及其推广。在线性代数、泛函分析及相关的数学领域,可用范数来度量一个向量的“长度”。在中学里我们学过一个向量的模长(长度)是向量中各元素平方和的平方根,比如向量(3,4)的模长就是5,这里模长其实是向量(3,4)的一种范数——L2范数,向量的范数除了L2范数外,还有其他定义,如L0范数、L1范数和L∞范数
那么,公式除以分母的含义就是过了归一化处理(不然只靠分子会变得非常大或者小,不是一个统一的区间)。
下面;老师的例子,举例假设是3维的,就是s1=(x1,x2,x3),s2=(y1,y2,y3)
余弦相似度越大,句子的相似度也越大。
缺点:出现次数越多,不一定语义上越重要。并不是出现的越少越不重要。
四 TF-IDF文本表示
TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF逆向文件频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力.
TF的含义跟前面的词频统计的意义是一样的。
例子里面:N =总文档,N(W)出现W的单词的文章数。加log是为了结果乘积不太大。
这种思路很重要,是广泛使用的信息检索模型。下面老师讲了一个例子:
词典是9 ,是9维的,idf 里面,N=3. 分别计算3个句子的向量:就是拿词典的单词分别于句子对比,计算。
总结:one-hot 表示方式缺点:
上面的例子是两个句子的相似度,但是从两个单词的相似度如何评估?