【问题标题】:Amazon SageMaker BlazingTextAmazon SageMaker BlazingText
【发布时间】:2018-05-09 12:40:01
【问题描述】:

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

【问题讨论】:

  • “预测新词”是什么意思?词嵌入是在你的“词汇表”中创建词嵌入,而不是新词。您可以使用词干提取或散列来处理词汇表外的单词,但不能使用嵌入模型。
  • 我正在构建一个基于 skip-gram 的嵌入模型。通常skip-gram模型输出给定单词的上下文。我这样做是为了研究和评估,我想获得上下文输出。我正在尝试解决多义词。所以只有词嵌入结果是不够的。我的要求是基本的skip-gram模型,我可以在其中获取上下文作为单词的输出。
  • 如何使用 Amazon BlazingText 训练二元组和三元组?

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


【解决方案1】:

您可以通过使用 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)

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是(如果我理解正确的话)如何创建端点以获取新单词的向量。 查找 example 以获取 blazingtext。在底部,他们展示了如何创建这样的端点。

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

    【讨论】:

      【解决方案3】:

      如果您在训练时通过将“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的帖子。

      【讨论】:

        猜你喜欢
        • 2019-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多