在处理文字时,处理庞大但是稀少的语言是很困难的。即使对于一个晓得语料库,神经网络也需要支持数以千计的离散输入和输出。
除了原始数字外,将单词表示为one-hot向量的方法无法捕获任何有关单词之间关系的信息。
Word Vector 通过在多维向量空间中表示单词来解决这个问题。这样就可以将问题的维度数十万减少到数百。而且向量空间能够从距离向量之间的夹角来捕获单词之间的语义关系。

现已有一些创建Word Vector的技巧。word2vec算法可预测上下文中的单词(例如”the cat”最可能出现的单词是”the mouse”),而Glove向量则基于整个语料库的全局计数。glove最大的特点就是可以轻松的下载多套预先训练好的词向量。
Loading word vectors
Torchtext包括下载GloVe(和其他)嵌入的函数。
|
|
|
|
[out]: 98%|█████████▊| 391063/400000 [00:19<00:00, 19964.76it/s]
98%|█████████▊| 393086/400000 [00:19<00:00, 19965.52it/s]
99%|█████████▉| 395108/400000 [00:19<00:00, 19966.79it/s]
99%|█████████▉| 397132/400000 [00:19<00:00, 19968.13it/s]
100%|█████████▉| 399154/400000 [00:19<00:00, 19968.55it/s]
100%|██████████| 400000/400000 [00:20<00:00, 19969.45it/s]
返回的GloVe对象包含以下属性:
stoistring-to-index returns a dictionary of words to indexesitosindex-to-string returns an array of words by indexvectorsreturns the actual vectors. To get a word vector get the index to get the vector
|
|
Finding closest vectors
|
|
[out]: (0.0000) google
(3.0772) yahoo
(3.8836) microsoft
(4.1048) web
(4.1082) aol
(4.1165) facebook
(4.3917) ebay
(4.4122) msn
(4.4540) internet
(4.4651) netscape
Word analogies with vector arithmetic
训练有素的单词向量空间的最有趣的特征是可以用正则向量算法来捕捉某些语义关系(不仅仅是单词的紧密性)。

|
|
|
|
[out]: [king : man :: queen : ?]
(4.0811) woman
(4.6916) girl
(5.2703) she
(5.2788) teenager
(5.3084) boy