转载

利用 IBM Watson 将语言翻译功能添加到应用程序

想将语言翻译添加到自己的应用程序吗? IBM Bluemix 中的 机器翻译 服务使用了 IBM Watson 认知计算系统,将用户输入的文本转换成其他语言。 Node-RED 流编辑器使得在 Bluemix 应用程序中使用 Machine Translation 服务就像单击鼠标一样简单。我们将向您展示如何使用 Node-RED 创建一个应用程序,用该应用程序来暴露 Machine Translation 服务实例的一个 REST 端点。然后,我们将添加一个我们用 AngularJS 创建的用户界面。该用户界面包括对用户输入文本的 AFINN-111 情感分数 的可视化。在短短几分钟内,您的应用程序将会讲英语、西班牙语、法语、葡萄牙语或阿拉伯语 — 并在同一时间报告用户的相关感受。

阅读: Machine Translation 服务入门

阅读: 使用 Node-RED starter 创建应用程序

阅读: 使用 React 创建一个 IBM Watson 浏览器

Node-RED 流读入一个消息,得到它的情感分数,然后使用 Watson 将消息翻译成西班牙语。

构建应用程序需要做的准备工作

  • 一个 Bluemix 帐户和一个 Bluemix DevOps Services 帐户,两个帐户都被链接到您的 IBM ID

运行应用程序

获得 UI 代码

步骤 1. 设置 Bluemix 服务

机器翻译流使用了 Bluemix 中的 Node-RED 功能。要开发该流程,首先需要创建一个 Node-RED 应用程序,并将 Machine Translation 服务添加给该应用程序。

  1. 登录到 Bluemix 。
  2. 在目录中,选择 Node-RED Starter利用 IBM Watson 将语言翻译功能添加到应用程序
  3. 在 Name 和 Host 字段中输入您选择的惟一名称,并单击 CREATE
  4. 返回 Bluemix 仪表板,并单击刚刚创建的 Node-RED 应用程序。
  5. 单击 Add a Service
  6. 在目录的 Watson 类别中单击 Machine Translation 。您可以在 Add Service 对话框的 App 字段中看到您的 Node-RED 应用程序。
  7. 单击 CREATE ,在看到提示的时候单击 RESTAGE
  8. 在应用程序重演后,单击 Routes URL 在新的浏览器页面中打开您的 Node-RED 应用程序: 利用 IBM Watson 将语言翻译功能添加到应用程序

    点击查看大图

    关闭 [x]

    利用 IBM Watson 将语言翻译功能添加到应用程序

  9. 在 Node-RED 应用程序中,单击 Go to your Node-RED flow editor 按钮。

步骤 2. 在 Node-RED 中构建 REST 机器翻译流

现在,您将使用 Node-RED 流编辑器来构建一个 REST 服务。该流会读取一条消息,得到它的情感分数,然后使用 Watson 翻译该消息(在本例中,该消息被翻译成西班牙语)。请按照下列步骤来创建、配置和测试工作流:

  1. 在调色板中,将一个 http 输入节点拖到 利用 IBM Watson 将语言翻译功能添加到应用程序 画布上。
  2. 双击画布中的 http 节点,为 GET 方法配置它,并在 url 字段中输入 /olli利用 IBM Watson 将语言翻译功能添加到应用程序 单击 Ok 创建一个用于侦听 /olli 的 REST 服务。
  3. 将名称为 function 的函数节点拖到画布上。使用鼠标将 http 节点上的输出方块连接到 function 节点上的输入方块。
  4. 该函数是必需的,因为 http 输入节点的默认消息有效负载输出是一个复杂的 JSON 对象,其中,每个请求的参数都是一个字段。翻译服务和情感分析都期望收到一个简单的字符串。该函数将收到的消息被作为一个请求参数复制到 msg 对象的有效载载字段中,以便流的其余部分可以使用它。

    双击新的节点并在 Name 字段中键入 Swap Arguments

    。将以下三行代码添加到 Function 字段:

    msg.lang=msg.payload.lang;<br /> msg.payload=msg.payload.message;<br /> return msg;

    利用 IBM Watson 将语言翻译功能添加到应用程序
  5. 单击 OK
  6. sentiment 分析节点拖到画布,并将它连接到名称为 Swap Arguments 的函数节点。情感分析预期收到一个人类语言的字符串,并返回一个范围从 -5 到 +5 的情感分数,其中负数值代码表示负面情绪,正数值代码表示正面情绪,零表示中性情绪。
  7. Machine Translation IBM Watson 节点拖到画布上,并将它连接到 sentiment 节点。
  8. 此节点提取 Machine Translation 调用和 sentiment 节点的输出,并将它们转换为一个容易使用的字符串返回。

    添加另一个 function 节点,并将它连接到 Machine Translation 节点。双击新节点,提供一个名称(如 concatenate response

    ),并将以下两行代码添加到 Function 字段:

    msg.payload=msg.payload+;+msg.sentiment.score;<br /> return msg;

    利用 IBM Watson 将语言翻译功能添加到应用程序
  9. 单击 OK
  10. 添加一个 http 响应节点,并将其连接到函数节点。在 Node-RED 中的完整流程应该是这样的: 利用 IBM Watson 将语言翻译功能添加到应用程序
  11. 单击 DEPLOY 。您的 REST 服务启动并运行,每个人都可以使用它。
  12. 在浏览器中,通过发送一个消息来测试您的 REST 服务: http://yourappname.mybluemix.net/olli?message=the%20world%20is%20great&lang=mt-enus-eses
  13. 检查响应是否将文本翻译成西班牙语并返回情感分数: 利用 IBM Watson 将语言翻译功能添加到应用程序

步骤 3. 将 AngularJS UI 添加到 Node-RED

现在,REST 服务已准备就绪,需要一个应用程序来调用它。我们使用 AngularJS 为您构建一个 starter 应用程序。这个单页应用程序包含一个 index.html 文件,并调用 REST 服务。您需要做的是将代码的副本下载到 Bluemix DevOps Services 中,并从那里开始执行部署,将 UI 注入到 Node-RED 运行时。

  1. 返回 Bluemix 仪表板,单击您的 Node-RED 应用程序。
  2. 在应用程序概述页面,单击 Add GIT 链接。
  3. 保留选中该复选框,并单击 CONTINUE利用 IBM Watson 将语言翻译功能添加到应用程序
  4. 单击 EDIT CODE 按钮。
  5. 单击本教程的 获得 UI 代码 按钮(就在步骤 1的上方),并将 ui.zip 文件保存到本地文件系统。
  6. 在您的 Bluemix DevOps Services 项目的代码编辑器的目录树中,右键单击 public 文件夹,选择 Import -> File or zip archive利用 IBM Watson 将语言翻译功能添加到应用程序
  7. 从本地存储选中 ui.zip 并单击 OK ,将文件的内容解压缩到您的项目的 public 目录: 利用 IBM Watson 将语言翻译功能添加到应用程序
  8. 现在,代码在您的项目的 public/ui 目录中。您不需要更改代码,但可以查看 index.html,以了解其逻辑。第 36 行是 REST 服务调用您的 Node-RED 工作流。在显示页面时, customerController() 函数将会运行并将一个 submit() 函数添加到视图的范围中,当用户单击 Translate 按钮时,该函数将被调用。按钮的单击事件会触发对 Node-RED REST 服务的一个 HTTP 请求,向它传递要翻译的消息以及用户所选择的翻译语言。当接收到响应时,翻译后的消息和情感值被设定在范围内,然后被显示在视图中。
  9. 单击播放按钮(指向右边的三角形),将修改后的 Node-RED 样板部署 Bluemix,其中包含 AngularJS UI: 利用 IBM Watson 将语言翻译功能添加到应用程序

    点击查看大图

    关闭 [x]

    利用 IBM Watson 将语言翻译功能添加到应用程序

您的应用程序现在运行在 http:// yourappname .mybluemix.net/ui 上。

步骤 4. 测试应用程序

  1. 在浏览器中打开 http:// yourappname .mybluemix.net/ui。选择您想使用的语言进行翻译,输入要翻译的文本,然后单击 Translate利用 IBM Watson 将语言翻译功能添加到应用程序 在后台,Angular 代码发起了一个对您的 Node-RED 工作流的 REST 服务调用。AngularJS 应用程序生成由 REST 服务返回的字符串。
  2. 验证应用程序是否正常工作。您应该看到被翻译为所选择语言的文本、情感分数,以及程式化的面孔图像,其表情反映了分数: 利用 IBM Watson 将语言翻译功能添加到应用程序

结束语

在本教程中,您学会了如何使用 Node-RED 快速创建一个 REST 服务,以及如何通过在 Bluemix 上运行的 AngularJS 应用程序访问该服务。您的应用程序使用 Bluemix Machine Translation 服务将文本进行语言转换, 并通过情感分析服务提供情感分数。您现在可以使用 Node-RED 构建更多的 REST 服务,并开发应用程序来使用这些服务。

正文到此结束
Loading...