人工智能正在迅速占领世界。 技术的每个细分领域都在使用人工智能进行重新思考和变革。 作为一名软件开发人员,在您职业生涯的某个阶段,您肯定会遇到人工智能,因此只有拥有一些使用它的经验才有意义。 AI 领域非常广阔,超出了本文的范围,但我仍然想向您展示以最少的工作将智能集成到您的应用程序中是多么容易。 当然,您不会训练任何机器学习模型来实现这一点,您将使用预先构建的解决方案,这就是为什么您最终需要极少的工作。
我们将使用 IBM 的 Watson API 在 Android 上构建一个极其简单的情感分析系统。 IBM 构建了许多有用的集成,开发人员可以直接使用这些集成,而无需在他们的终端上构建基础架构。 他们将所有产品与 Bluemix 捆绑在一起,Bluemix 是一套用于构建更好软件的产品。 Bluemix 的优点在于它免费提供 30 天,因此您无需直接做出承诺。 如果您有兴趣查看他们的产品,请前往 Bluemix 网站 并注册一个 30 天的试用期。
好的,让我们开始构建应用程序。 在开始之前,这里有一个快速的免责声明。 本文将完全假设您对面向对象编程和 Android 有一定的经验。 该项目的 Android 部分非常少,因此您只需要了解视图以及如何操作它们的基本知识。
现在我们已经完成了手续,让我们开始吧。
第 1 步:设置
启动 Android Studio 并创建一个新项目。 将其命名为您想要的任何名称并接受设置向导中的默认值。 项目构建完成后,在设备或模拟器上运行它,以确保一切正常。 如果到目前为止一切顺利,您就可以进行下一步了。
第 2 步:构建 UI
让我们开始构建布局。 由于应用程序非常小,让我们尽快将布局部分移开。 这是最终的应用程序屏幕的样子。
它由一个 TextView、一个 EditText 和一个 Button 组成,所有这些都包含在一个 LinearLayout 中。 完成复制布局后,只需跳转到相应的 Java 文件并按如下方式连接您的 UI。
公共类 MainActivity 扩展 AppCompatActivity { TextView textView; EditText editText; 按钮按钮; 弦情; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化UI元素 textView = (TextView) findViewById(R.id.textView); editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button);
让我们将按钮与单击侦听器连接起来,以便它响应触摸事件。 这是代码:
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("记录到按钮按下文本的控制台:" + editText.getText()); textView .setText("在 UI 上显示要检查的情绪:" + editText.getText()); AskWatsonTask task = new AskWatsonTask(); task.execute(new String[]{}); } });
注意到 AskWatsonTask 了吗? 这就是用于从 Watson API 获取情绪分析结果的内容。 它只不过是一个简单的 AsyncTask。 复制并粘贴以下代码:
私有类 AskWatsonTask 扩展了 AsyncTask { @Override protected String doInBackground(String... textsToAnalyse) { System.out.println(editText.getText()); runOnUiThread(new Runnable() { @Override public void run() { textView.setText (“线程内部发生了什么 - 我们正在运行 Watson AlchemyAPI”); } }); 情绪 = "测试情绪"; System.out.println(情绪); //在主步返回情感中传递要在UI上显示的结果; } //在线程外设置UI的值@Override protected void onPostExecute(String result) { textView.setText("消息的情绪是:" + result); } }
上面提到的 AsyncTask 将从 Watson 以 JSON 格式获取结果,我们稍后将对其进行解析并显示在 UI 中。 截至目前,该应用程序非常愚蠢,但它有效。 为了记录一个检查点,让我们部署我们迄今为止构建的应用程序并查看它的作用。 点击绿色的播放按钮并观看它运行。 它什么也不做。
如果你点击 分析! 按钮,您应该能够在 TextView 字段中看到结果。 您还应该在 log cat 窗口中看到一些输出。
第 3 步:添加智能
是时候将认知能力添加到应用程序的这个基本框架中了。 您需要做的第一件事是在您的应用程序中添加 Watson Cloud SDK for Java。 前往 此链接 有关如何执行此操作的详细说明。 从以下位置下载 Java 库 此链接. 并将其添加到 libs 文件夹中,如下所示。
集成库后,您需要在应用程序中获取 Internet 权限。 打开 AndroidManifest.xml 并添加以下几行
上述权限将允许您访问网络以从 Watson 获取结果。
步骤 3b:从 Bluemix 检索 API 密钥
从 IBM Bluemix 目录中,单击 Watson => AlchemyAPI => 创建. 请务必使用静态 API 密钥,如下图所示:
步骤 4:添加代码以调用 Watson
现在是添加一些代码以与 Watson Alchemy API 通信的时候了。 使用以下代码展开 AskWatson AsyncTask。
AlchemyLanguage 服务 = 新的 AlchemyLanguage(); service.setApiKey(""); 地图参数 = 新的 HashMap (); params.put(AlchemyLanguage.TEXT, editText.getText()); DocumentSentiment 情绪 = service.getSentiment(params).execute(); System.out.println(情绪); //在主线程中传递要在UI上显示的结果返回sentiment.getSentiment().getType().name();
是时候快速测试应用程序是否正常工作了。 按 Ctrl+R 并观看应用程序变得智能!
{ "docSentiment": { "score": -0.42344, "type": "negative" }, "language": "english", "totalTransactions": 1 }
结论
您刚刚看到使用 Watson Sentiment Analysis 构建认知应用程序是多么容易。 我们构建的应用程序没有任何实际功能,但它展示了 Bluemix 及其产品的功能。 您可以将这些产品放在多个括号中,并构建一些极其丰富的用户体验。 前往 Bluemix 的网站,了解有关您可以构建的所有内容的更多信息。
发表评论
有话要说关于这篇文章? 添加您的评论并开始讨论。