65.9K
CodeProject 正在变化。 阅读更多。
Home

Google 预测 API - 预测你好!

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (3投票s)

2014年12月4日

CC (Attr 3U)

7分钟阅读

viewsIcon

12035

此页面提供了一个 Prediction API 的快速示例,您可以在 15 分钟内设置并运行。

目录

  1. 必备组件
  2. 问题
  3. 解决方案
    1. 上传训练数据
    2. 训练系统
    3. 发送查询
  4. 后续步骤

必备组件

  • 您必须拥有一个Google 帐户,包含 Google 用户名和密码。
  • 您必须拥有一个Google Developers Console项目,并已激活 Google PredictionGoogle Cloud Storage

    要为您的项目激活 API,请执行以下操作:

    1. 访问Google Developers Console
    2. 选择一个项目,或创建一个新项目。
    3. 在左侧的边栏中,展开API 和身份验证
    4. 点击API
    5. 在显示的可用 API 列表中,找到您要激活的 API,并将其状态设置为开启

    某些 API 在激活前还会提示您接受其服务条款。

如果您想从 CSV 文件进行训练,Google Prediction 需要 Google Cloud Storage,本文涵盖的就是这种情况。但是,如果您希望从请求中传递的实例进行训练或通过更新空模型进行训练,则只需启用 Google Prediction 即可。

问题

想象一下,您的公司收到多种不同语言的求助邮件,您希望将邮件路由给具有相应语言技能的人员。这里的问题是检测给定短语是英语、西班牙语还是法语。

为此,您必须创建一些训练数据来训练预测引擎。这些训练数据由多个文本条目组成,每个条目都标有“英语”、“西班牙语”或“法语”。在用这些数据训练系统后,您将能够提交任何这些语言的任意单词或短语,预测引擎将把您的数据归类为最接近其中一种语言。

解决方案

以下是如何运行 Hello Prediction 来确定任意文本片段的语言:

  1. 上传训练数据。我们将为您提供一个包含英语、西班牙语和法语示例的示例训练数据文件。您必须将其上传到您的 Google Cloud Storage 帐户。
  2. 训练系统。告诉 Prediction API 从 Google Cloud Storage 加载您的训练数据并对其进行分析。这是一个异步过程,因此您必须定期查询服务器以检查训练会话的状态。在您可以开始发送查询之前,训练必须完成。
  3. 发送查询。训练完成后,您可以发送包含英语、西班牙语或法语短语的查询,Google Prediction 将回复该文本的语言。您可以根据需要多次运行此步骤。

1. 上传训练数据

在此步骤中,您将训练数据文件上传到您的 Google Cloud Storage 帐户。

下载此训练文件 (language_id.txt),其中包含英语、法语和西班牙语训练数据条目。训练数据的格式是逗号分隔值文件,包含许多条目和两列:第二列是单一语言的长文本片段;第一列是片段语言的字符串名称。打开文件以查看训练条目是什么样子的。

  1. 将文件上传到 Google Cloud Storage
    1. 访问Google Developers Console
    2. 选择要存储数据的项目。
    3. 选择“Cloud Storage”选项卡。
    4. 点击“新建存储桶”或选择一个现有存储桶。
    5. 点击要上传文件的存储桶,然后点击“上传”
  2. 点击 新建存储桶 创建一个新存储桶。
  3. 选择存储桶并点击 上传,然后从您的计算机上传 language_id.txt 文件。
  4. 从 Google Cloud Storage Manager 的路径列中复制文件的存储桶/路径名。例如:mybucket/language_id.txt

2. 训练系统

下一步是根据您上传的训练数据训练系统。为此,请调用trainedmodels.insert(),指定以下参数:

  • project: Google Developers Console“概览”选项卡中列出的项目编号。
  • id: 将用于引用模型的字符串 ID。
  • storageDataLocation: 您上传训练数据的 Google Cloud Storage 路径。

这将创建一个已训练的模型,您可以向其发送查询。

对于本练习,您将使用 Google APIs Explorer 进行 API 调用。在编程您自己的应用程序时,您将使用其中一个Google 客户端库

  1. 打开已选择 Google Prediction API 的 APIs Explorer.
  2. 启用“使用 OAuth 2.0 授权请求”。
  3. 选择 trainedmodels.insert 方法。
  4. 在对话框的 结构化编辑器 选项卡中,为以下属性添加值:
    1. project - 与您的项目关联的项目编号。您可以在Google Developers Console的“概览”选项卡中找到它。
    2. id - 为您的模型分配一个 ID。您将使用此 ID 在训练和查询请求中引用模型。ID 长度必须为 1 到 255 个字符,可以是小写字母 (a-z)、数字 (0-9) 以及连字符和下划线 (_-) 的任意组合。例如:languageidentifier
    3. storageDataLocation - 输入您上传的训练文件的 Google Cloud Storage 路径。例如:mybucket/language_id.txt
  5. 点击 执行 以调用该方法并开始训练您的模型。您可以在页面上的 历史记录 窗格中查看请求和响应。

训练是异步的;训练方法会立即返回,您必须查询 Google Prediction 才能了解训练会话的状态。对于如此小的训练文件,训练时间应少于一分钟。

检查训练状态

  1. 选择 trainedmodels.get 方法。
  2. project 文本框中,输入在创建模型的 Insert 调用中使用的项目编号。
  3. data 文本框中,输入您分配给 id 属性的模型 ID。
  4. 点击 执行 以调用该方法。
  5. 历史记录 窗格中,检查 trainingStatus 属性的响应。在训练进行中时,调用将返回 HTTP 200,其中 trainingStatus="RUNNING"。当调用返回一个 trainedmodels 资源,其中 trainingStatus="DONE" 时,训练完成,您可以开始发送查询。

以下是一个示例回复:

{
  "kind": "prediction#training",
  "id": "languageidentifier",
  "storageDataLocation": "mybucket/language_id.txt",
  "selfLink": "https://www.googleapis.com/prediction/v1.6/projects/12345678910/trainedmodels/languageidentifier",
  "created": "2013-04-10T21:54:08.840Z",
  "trainingComplete": "2013-04-10T21:54:11.504Z",
  "modelInfo": {
    "numberInstances": "420",
    "modelType": "classification",
    "numberLabels": "3",
    "classificationAccuracy": "0.95"
  },
  "trainingStatus": "DONE"
}

3. 发送查询

现在您已准备好向模型发送查询。查询始终采用单行训练数据的格式,减去第一列。您的训练数据有两列:language_labelphrase_in_that_language;因此,对此数据进行查询由单列组成:您想要识别的语言中的短语。您的短语必须是您的训练数据中使用的语言之一。Google Prediction 会以其对您的短语语言的最佳猜测进行回复。

发送查询

  1. 选择 trainedmodels.predict 方法。
  2. project 文本框中,输入在创建模型的 Insert 调用中使用的项目编号。
  3. id 文本框中,输入您之前输入的模型 ID。
  4. 在请求正文中,为以下属性添加值:
    1. input - 选择“添加属性 > csvInstance
    2. csvInstance - 点击 添加 并输入一个英语、法语或西班牙语的文本字符串。例如:Muy Bueno。不要引用字符串。在 csvInstance 中只添加一个字符串值。
  5. 点击 执行 以调用该方法。
  6. 历史记录 窗格中,检查 outputLabel 属性的响应。这将是对字符串语言的最佳猜测。

以下是一个示例回复:

{
 "kind": "prediction#output",
 "id": "languageidentifier",
 "selfLink": "https://www.googleapis.com/prediction/v1.6/projects/12345678910/trainedmodels/languageidentifier/predict",
 "outputLabel": "Spanish",
 "outputMulti": [
  {
   "label": "French",
   "score": "0.334130"
  },
  {
   "label": "Spanish",
   "score": "0.418339"
  },
  {
   "label": "English",
   "score": "0.247531"
  }
 ]
}

所有分数都是相互相对的,分数最高的标签是最佳猜测。上面示例中的最佳猜测是西班牙语,它被分配给 outputLabel。您可以在predict 方法属性描述中阅读有关 outputMulti[].score 的评分算法的更多信息。

后续步骤

了解有关 Google Prediction API 的更多信息

  • Google 表格中试验 API。
  • 阅读用例以了解在实际用例中使用 API 的不同方式。
  • 阅读开发者指南以了解如何针对 API 进行编程,以及如何设计一个好的模型。
  • 查看 Java 和 Python 中的端到端示例
© . All rights reserved.