内容


向 Watson 询问 Twitter 提供的信息,第 3 部分

分析推文图片以进行分类和识别

Comments

系列内容:

此内容是该系列 4 部分中的第 # 部分: 向 Watson 询问 Twitter 提供的信息,第 3 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:向 Watson 询问 Twitter 提供的信息,第 3 部分

敬请期待该系列的后续内容。

在本系列的 第 1 部分 中,您在 Bluemix 上创建了一个 Python Web 应用程序并从 Twitter 采集了实时推文。您已将推文文本保存到一个 JSON 文件和一个文本文件中。在 第 2 部分 中,您向应用程序添加了 Watson Tone Analyzer 服务,并将该服务应用于您保存的文本文件,以评估您收集的推文中的情感。在本教程中,将分析收集的推文中的图片。

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

  • 您在本教程系列的第 2 部分中创建的应用程序
  • 您在第 1 部分中生成的 JSON 输出

运行应用程序获取代码

1

将 Watson Visual Recognition 服务添加到您的应用程序

首先将 Watson Visual Recognition 服务添加到您的 Bluemix 开发空间,然后将使用此服务分析在第 1 部分中收集到一个 JSON 文件中的推文中包含的图片。Watson Visual Recognition 服务可分析图像中的场景、物体、面部、文字和其他内容。

  1. 登录到 Bluemix。
  2. 在目录页面上,找到 Visual Recognition 服务图标。您一天可以免费分析 250 个图像。
  3. 保留该服务未与任何应用程序绑定,接受系统生成的服务和凭证名称,选择您想要的计划,然后单击 创建。该服务已添加到您的 Bluemix 空间,在 Services 下的一个图标。
  4. 将该服务添加到 Bluemix 开发空间后,查看服务凭证。凭证是以 JSON 对象的形式显示的。记下 API 密钥,以后的步骤中需要使用该密钥。
2

从推文中提取图像 URL

Visual Recognition 服务可接受以下输入类型:

  • JPEG 和 PNG 图像
  • JPEG 和 PNG 图像的 URL

对于本教程,我们将使用推文集合中包含的图像 URL。在这一步中,将从推文提取图像 URL 并保存到一个文件。

  1. 打开应用程序的登录页面并打开一个新笔记本。
  2. 回想一下推文的 JSON 对象的结构。图像 URL 包含在一个名为 extended_entities 的节点中。 节点的图像

    编写代码来提取图像 URL。以下是一段示例代码。将文件名 (tweets2.json) 替换为您在第 1 部分中用于保存推文的名称。在您的笔记本单元中运行该代码。

    import json
    tweets_file = open('tweets2.json', 'r')
    images_file = open('images.txt','w')
    for line in tweets_file:
        parsed_json = json.loads(line)
        if 'extended_entities' in parsed_json:
            tweet_text = parsed_json['text']
            tweet_picture = parsed_json['extended_entities']['media'][0]['media_url']
            print tweet_text
            print tweet_picture
            images_file.write(tweet_picture)
            images_file.write('\n')
            print "==="

您现在拥有一个包含所有图像 URL 的文本文件。

3

连接到 Visual Recognition 并获得分析结果

接下来,将上一步中提取的图像 URL 提供给 Visual Recognition,以查看 Watson 服务提供了图像的哪些信息。

您将使用 HTTP GET 方法连接到 Visual Recognition。GET 请求需要以下参数才能发回 JSON 响应:

所有这些 API 端点都记录在 Visual Recognition 文档中。

  1. 导入需要的库,打开要读取和写入的文件。
    import requests
    import json
    
    images_file = open('images.txt','r')
    images_json = open('images.json', 'w')
  2. 指定 GET 请求的所有必要参数。
    default_url = 'https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify'
    version = '2016-05-20'
    api_key = raw_input('[Visual Recognition] Enter the API key: ')
  3. 执行 GET 调用,将响应保存到一个文件。
    for line in images_file:
        line = line.rstrip()
        url = default_url+'?&api_key='+api_key+'&url='+line+'&version='+version
        print url
        r = requests.get(url)
        data = json.dumps(r.json())
        print data
        #data = r.json()
        print >> images_json, data

您现在已拥有保存到一个文件中的推文图像的分类,可供您进一步分析。查看 Visual Recognition 发回的响应。

代码清单显示了结果
代码清单显示了结果

可以看到,每个图像都被分类到一个或多个类中。每个类都有一个分数,表明了该分类的置信度。该服务使用它的内置分类器,但您可以训练该服务来使用您自己的分类器。有关如何完成此任务的信息,请参阅 创建自定义分类器

结束语

在本教程中,我们分析了一组图像来查看这些图像属于哪些类别。在本系列的下一部分(也是最后一部分)中,将会分析图像中的文本,将该分析结果与第 2 部分中获得的文本洞察结合起来,并将最终的数据提供给 Watson Alchemy 服务。结果会显示您在第 2 部分中获得的情感分析结果的改进版本,因为它还包含来自非文本数据的输入。


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=认知计算
ArticleID=1043467
ArticleTitle=向 Watson 询问 Twitter 提供的信息,第 3 部分: 分析推文图片以进行分类和识别
publish-date=03012017