转载

利用 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...