这是我在学习深度学习过程中的一点记录,内容没有没有考证,仅供参考
什么是词向量?
我们都知道,计算机只能接受并处理数字。所以,将语言“数字化”很重要;我们将与“词”对应的一连串数字,叫做“词向量”。
one-hot
one-hot是最简单的词向量表达方式。比如我们有一个文本(假设里面只有一个句子):
The quick brown fox jumps over the lazy dog
注:这是一个很常见的例子,因为该句包含了a-z所有字母。
这句话总共有9个单词,那么最简单的词向量就是给每一个词一个数字标注,比如:
"the" = [0,0,0,0,0,0,0,0,1], "quick" = [0,0,0,0,0,0,0,1,0], ...
这个向量有的元素只包含一个1,其余全为0. 这个向量的维度为9,因为总共有9个单词;如果有1万个单词,那么维度为1万,以此类推。然而one-hot有它的局限性:
- 太稀疏。因为每个向量的元素几乎都是0,因此,其数学表达能力很弱。比如,对于两个单词“man”和“woman”,它们在语义上是非常接近的。然而对于one-hot,它们的相似度为0
- 维度太高。在许多自然语言处理的任务中,词库是非常大的。比如英文词库动辄几十万,那么one-hot的维度也变成几十万。这会严重影响计算机的处理速度。