赞
踩
之前的教程中非常简要地介绍了如何使用词嵌入(也称为词向量),附录中将仔细研究这些嵌入原理。
Embedding层将一个稀疏的one-hot向量转变为维度更低的稠密向量,出现在相似上下文中词的词向量空间是接近的,例如: "I purchased some items at the shop"
和"I purchased some items at the store"
两句中 'shop'
和 'store'
在向量空间中是相邻的。
在PyTorch中使用nn.Embedding layer
将 [句长, 批处理大小]
大小的张量转换为[句长, 批处理大小, 向量维度]
的张量
在之前的教程中,我们还使用了TorchText提供的预训练单词嵌入(如GloVe向量)。 这些词嵌入已经在巨大的语料库上进行了训练。 我们可以在任何模型中使用这些经过预训练的向量,由于它们已经学习了每个词的上下文,因此提供更好的词向量初始状态,这通常可以缩短训练时间和提高准确性。但在本篇教程中不使用预训练词向量。
import torchtext.vocab
# 6B是语料库中包含60亿个单词
# 其维度有 50, 100, 200 ,300 本文选择100
glove = torchtext.vocab.GloVe(name='6B',dim=100)
print(f'There are {len(glove.itos)} words in the vocabulary')
#词汇表中同样可以使用索引获取单词
#先获取与单词索引,然后使用该索引获得词向量
def get_vector(embeddings, word):
#若词汇表中不包含所查询单词则会引发错误
assert word in embeddings.stoi, f'*{word}* is not in the vocab!'
return embeddings.vectors[embeddings.stoi[word]]
#获取词向量
print(get_vector(glove, 'the').shape)
print(get_vector(glove, 'the'))
#print(get_vector(glove, 'Hyper-enhancement').shape) #不存在该单词出现错误
如果要查找与某个输入单词相似的单词,请先找到该输入单词的向量,然后遍历词汇表,计算每个单词的向量与输入单词向量之间的距离,从最远到最远进行排序。
import torch
#最接近的10个单词返回到输入单词向量
def closest_words(embeddings, vector, n=10):
distances = [(word, torch.dist(vector, get_vector(embeddings, word)).item())
for word in embeddings.itos]
return sorted(distances, key=lambda w: w[1])[:n]
word_vector = get_vector(glove, 'korea')
print(closest_words(glove, word_vector))
def analogy(embeddings, word1, word2, word3, n=5): # get vectors for each word word1_vector = get_vector(embeddings, word1) word2_vector = get_vector(embeddings, word2) word3_vector = get_vector(embeddings, word3) # calculate analogy vector analogy_vector = word2_vector - word1_vector + word3_vector # find closest words to analogy vector candidate_words = closest_words(embeddings, analogy_vector, n + 3) # filter out words already in analogy candidate_words = [(word, dist) for (word, dist) in candidate_words if word not in [word1, word2, word3]][:n] print(f'{word1} is to {word2} as {word3} is to...') return candidate_words print_tuples(analogy(glove, 'man', 'king', 'woman'))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。