目录
概述
在NLP中,对于一个词,我们用一个词向量来表示,最常见的一个方式是one hot representation,这种词向量的编码方式就是用一个很长的向量来表示一个词,向量的长度为词典的大小N,向量的分量只有一个1,其他全为0,1的位置对应该词在词典中的索引。这种表示方法不需要繁琐的计算,简单易得,但是缺点也不少:
- 我们的词汇表一般都非常大,比如达到百万级别,这样每个词都用百万维的向量来表示,简直是内存的灾难。
- 这样表示数据,数据非常稀疏,稀疏数据的训练效率比较低,我们通常需要更多地数据来训练。
- 维度很高,很容易造成维数灾难。
- 无法体现出词之间的关系,比如“面条”和“方便面”显然有非常紧密的关系,但转化成向量[1,0,0]和[0,1,0]以后,就看不出两者有什么关系了,因为这两个向量相互正交。
- 这样的向量其实除了一个位置是1,其余的位置全部都是0,表达的效率不高。
Distributed representation可以解决One hot representation的问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,进而可以用普通的统计学的方法来研究词与词之间的关系。这个较短的词向量维度是多大呢?这个一般需要我们在训练时自己来指定。