亚马逊SageMaker BlazingText

时间:2018-05-09 12:40:01

标签: amazon-web-services nlp word2vec gensim amazon-sagemaker

我正在开发一个嵌入式项目。我正在使用Amazon SageMaker来实现此目的。 Amazon SageMaker中的BlazingText算法产生的结果比其他选项快。但我没有看到任何设施来获得预测模型或权重。输出仅包含我无法生成模型的矢量文件。 有什么方法可以用矢量文件获取模型吗?我需要这个来预测新单词。提前谢谢。

3 个答案:

答案 0 :(得分:0)

通过使用KeyedVectors api上传vector.txt / bin文件,您可以再现类似most_similar的结果。

这里是一个示例:

from gensim.models import KeyedVectors
word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False) 
word_vectors = KeyedVectors.load_word2vec_format('vectors.bin', binary=True)

答案 1 :(得分:0)

我认为您正在寻找的是(如果我理解正确的话)如何创建端点以便获取新单词的向量。 在example中查找引人注目的文字。在底部,它们显示了如何创建此类端点。

如果要预测模型不知道的新单词,请使用subwords

答案 2 :(得分:-1)

如果通过在训练时将“ subwords”参数设置为True启用子词嵌入学习功能,BlazingText模型可以为新词生成矢量。 培训工作完成后,您将需要创建SageMaker端点并部署模型。您可以向该端点发送POST请求以检索单词向量,如this notebook的“托管/推断”部分所示:

bt_endpoint = bt_model.deploy(initial_instance_count = 1,instance_type = 'ml.m4.xlarge')
words = ["awesome", "awweeesome"]
payload = {"instances" : words}
response = bt_endpoint.predict(json.dumps(payload))
vecs = json.loads(response)

有关此功能的更多详细信息,您也可以参考this blog帖子。