识图吟诗

  • 写在前面

关于这个作品的设计理念和情怀,请看这里

初衷

随着作品的不断迭代和改进,我已经渐渐忘记初衷是什么了。是为了讨某人欢心做的小demo或是为了熟悉使用watson的练手作品,都已不大记得。然而现在,是想利用零碎的时间,做一个完整的项目。来探究AI之神奇并展现诗词之魅力。

构建和运行

识图吟诗是一个创意作品,通过使用watson相关的API,对图片进行认知分析,之后在诗词库中选择置信度较高的诗句作为结果返回。用户上传图片,尤其是风景图片,即可以得到较为吻合图片意境的诗词。

在作品开始构建之前,必须拥有一个包含信息的知识库,以便可以从中得到最恰当的答案。在这里,我通过爬虫,在网络上爬取了包含作者及名称在内的一千多首诗词名句,这些内容以excel表的形式存储。

代码

在早期的作品中,该应用程序是通过微信作为引导接口,部署在Bluemix上。但因为Bluemix开放的服务器在国外,所以效果不是很好。所以此版本,构建于阿里云服务器之上。

下面简短描述了使用的技术:

  • Python
    作品主要使用的语言,Python对数据处理表现出强大的作用,同时提供丰富的库包方便实现各种需求。

  • IBM Watson
    主要使用了Visual Recognition 这一服务用以对图片内容进行初步的识别分析。

  • Flask
    这是一个基于Python开发的轻量级网络框架,在这里实现RESTful API,以支持用户发送图片并且获得结果。

  • HTML
    采用原生HTML开发界面,用以与用户交互。(这是此版本最需要改进的一个方面)

  • Nginx
    轻量级,高性能的web服务器。

  • uWSGI
    实现了uwsgi和WSGI两种协议的Web服务器。

架构

识图吟诗架构由以下层和关联实现:

    • 视图 *:一个响应相对灵敏但不够美观的前端用户界面,只使用了原生HTML。界面中的词句引自辛弃疾《贺新郎·甚矣吾衰矣》---“我见青山多妩媚,料青山见我应如是”。是为了表现一种思想,如果机器通过了图灵测试,能否真的认为它就具备了人类的情感。右上角以中国传统篆章的形式表现作品题目,为了和作品理念,艺术风格相呼应。此层中的视图组件允许用户通过一个输入点发送提交图片。

    • 控制器 *:一个基于Flask的控制器层,向视图组件公开RESTful业务API。此REST API与后端处理过的数据进行交互。可扩展实现其他业务操作,包括调用其他服务或第三方API。

    • 认知后端 *:Watson分析并处理了图片内容,而我处理了诗词库。类似于理解上下文的分析方式,处理全局图片内容,对这种非结构化的信息进行置信度判断,而后可以认为watson消化并理解了有关诗词的内容。 同时,提供了一个API,能够对收到的消息接受并返回答案。

    • 平台 *:本版本部署在阿里云上,采用centos + Flask + Nginx + uWSGI的流行框架。

这里给出了整体架构的思路图:
识图吟诗_第1张图片

运行

打开这里,选择文件后,点击上传图片。

总结及下一步

总结

Watson是一个极其强大和复杂的平台,他所拥有的,不仅仅是能看见的诸多服务,还有隐藏在其后的认知计算系统。我把这一版本作为V1.0,因为虽然还有很多地方待提高,但是迈出了关键的一步,即上线,有人使用,稳定,以及有趣。

下一步

  1. 前端采用框架进行重写,美化处理,支持响应式。

  2. 认知后端算法优化,意境更加吻合,支持识别更多景物。

  3. 加入更多服务,使得用户体验多样化。

作品体验地址:
http://47.93.229.184/

个人微信号Owcs:
识图吟诗_第2张图片

个人网站:
http://www.changshunwang.com

如果你觉得有趣,在github上点个星吧:https://github.com/changshunw...

你可能感兴趣的:(python,flask,ibm)