首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >负荷预训练Word2Vec嵌入Tensorflow

负荷预训练Word2Vec嵌入Tensorflow
EN

Stack Overflow用户
提问于 2017-04-27 12:49:31
回答 1查看 1.4K关注 0票数 1

我正在尝试在我的Tensorflow代码中加载一个经过预先训练的Word2Vec (或手套),但是我在理解它时遇到了一些问题,因为我找不到很多例子。问题不是获取和加载嵌入矩阵,我理解它,而是查找单词ids。目前,我正在使用来自https://ireneli.eu/2017/01/17/tensorflow-07-word-embeddings-2-loading-pre-trained-vectors/的代码。在那里,首先加载嵌入矩阵(理解)。然后,使用词汇表处理器将一个句子x转换为一个单词ID列表:

代码语言:javascript
复制
vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length)
#fit the vocab from glove
pretrain = vocab_processor.fit(vocab)
#transform inputs
x = np.array(list(vocab_processor.transform(your_raw_input)))

这是可行的,并给出了一个单词I列表,但我不知道这是否正确。最让我困扰的是词汇表处理器如何从我刚刚读取的嵌入中获得正确的单词is (因为否则嵌入的结果将是错误的)。合适的步骤能做到这一点吗?

或者还有另外一种方法,你是怎么做这个查找的?

谢谢!奥利弗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-27 13:19:01

是的,fit步骤告诉vocab_processor vocab数组中每个单词的索引(从1开始)。transform只是逆转了这种查找,并从单词中生成索引,并使用0将输出填充到max_document_size

在下面的一个简短的例子中可以看到:

代码语言:javascript
复制
vocab_processor = learn.preprocessing.VocabularyProcessor(5)
vocab = ['a', 'b', 'c', 'd', 'e']
pretrain = vocab_processor.fit(vocab)

pretrain == vocab_processor
# True

np.array(list(pretrain.transform(['a b c', 'b c d', 'a e', 'a b c d e'])))

# array([[1, 2, 3, 0, 0],
#        [2, 3, 4, 0, 0],
#        [1, 5, 0, 0, 0],
#        [1, 2, 3, 4, 5]])
# 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43658327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档