在使用blazingtext算法训练了部署模型之后...直接获得给定单词的单词向量。
我们可以使用给定单词作为有效载荷数据调用sagemaker.RealTimePredictor.predict函数,它将返回单词vector
现在,我希望能够实现一些基本的NLP用例,例如...建议一个类似的词,或者Man-Woman + King = Queen
(有关使用gensim的其他实现,请参见https://rare-technologies.com/word2vec-tutorial/)
要做到这一点,我需要能够调用一个将向量作为输入并从嵌入中返回匹配/最近的单词的函数。
使用sagemaker sdk甚至可能吗?我花了几个小时浏览sagemaker api文档(不容易找到或浏览),但我仍然不确定这是否可能
答案 0 :(得分:1)
您可以在实例上安装fasttext。然后在blazingtext模型创建的.bin文件中使用nn函数。例如:
fasttext nn SageMaker/vectors.bin
有关更多信息,请参见here。
答案 1 :(得分:0)
目前,SageMaker BlazingText不支持此功能。但是,SageMaker支持有用的K-NN算法(K最近邻)。您可以使用BlazingText构建单词向量,然后使用这些向量作为特征来训练K-NN分类器。这将为您提供所需的功能。 附言我是SageMaker上BlazingText算法的开发人员之一。
答案 2 :(得分:0)
我发现最简单的方法是导入gensim模块并从blazingtext生成的模型工件中加载vectors.txt
通过这种方式,您甚至不需要创建推理端点-您只需使用笔记本实例来处理训练有素的模型
router.put('/:id', function(req, res, next) {
Products.findByIdAndUpdate(req.params.id, req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
到目前为止,我遇到的唯一限制是,如果您使用“ subwords = True”训练了模型,期望获得子词或拼写错误的词的词向量,则gensim模型似乎无法返回词向量词汇外(OOV)单词