接上文继续总结,上篇文章主要总结了文本的一些处理算法,这篇文章主要总结文本如何进行表示。
目录
one hot representation(one hot encoding)
一、Word Representation
文本表示主要分为两大块:
- 怎么通过向量的方法表达一个单词。
- 怎么通过向量的方法表达一个句子,一个段落甚至是一整篇文章。
1、单词的表示
one hot representation(one hot encoding)
此方法是最经典也较为简单的方法。主要做法就是看每个单词出现在词典库中的哪一个位置,然后把相应的位置设置为1即可。需要注意的是通过one hot 方式表达一个单词或者句子的时候,它整个向量的长度是等同于词典的大小的。具体例子看下图:
2、句子的表示
1)boolean方法
向量中只出现0或者1,一个词即使出现多次也只用1表示。具体过程和one hot表示单词的过程类似,看句子中每个单词在词典里出现的位置,然后把相应的位置设置为1即可。同样的它整个向量的长度是等同于词典的大小的。具体例子如下图所示:
2)count based representation
和第一种方法不同,此方法是需要关心每个单词出现的次数的。
二、 计算两个句子之间的相似度
1、欧式距离
通过计算两个句子之间的欧式距离来判断两个句子之间的相似度,欧式距离越大,两个句子之间的相似度越小,欧氏距离越小,两个句子的相似度越高。
2、余弦相似度
欧氏距离的缺点:向量是有方向的,但是欧式距离没有考虑向量的方向。
余弦相似度这个方法同时考虑了向量的大小和方向,较为常用。余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。所以余弦相似度越大,两个句子的相似性越高。
上述表示方法并没有考虑到句子的语义问题,并不是单词出现的越多就越重要,也并不是出现的越少就越不重要,故引出tf-idf这个表示方法。
3、tf-idf表示方法
此种表示方法是两部分的乘积,其中第一项tf(d,w)表示的是文档d中w的词频,其实就是上文中的count based representation;第二项idf(w)考虑的是单词的重要性,核心思想就是有的单词在文章中或者句子中经常出现,那我们会觉得这个单词的重要性比较弱,反而不经常出现的单词我们可能认为这个单词比较重要。具体公式如下图:
三、 计算两个单词之间的相似度
采用one-hot方式表示单词,然后用欧氏距离计算两两单词之间的相似度,可以发现每两个单词之间的欧式距离是一样的,这样就不能区分单词之间的语义;而用余弦相似性来计算可以得到任何两个单词之间的余弦相似性结果都是0,同样也不能区分单词之间的语义。具体例子看下图。可以发现只要是采用one-hot方式表示单词,无论什么相似度计算方法都不能用来区分单词之间的语义的。
词向量(Word Embeddings)
one-hot表示单词的方式不能表示语义的相似性,另外还存在稀疏性的问题,采用分布式表示的方式来表示单词,就可以解决以上问题。
采用分布式表示方法时向量的长度是不依赖于词典长度的,长度可以自定义,另外每个位置上都是非零的数值。采用分布式表示方法表示单词时,也叫做词向量。
输入一个字符串,通过深度学习的模型可以训练出词向量,我们期望训练出来的词向量能够代表单词的意思(Meaning)即语义。