写在前面
关于这个作品的设计理念和情怀,请看这里
初衷
随着作品的不断迭代和改进,我已经渐渐忘记初衷是什么了。是为了讨某人欢心做的小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的流行框架。
运行
打开这里,选择文件后,点击上传图片。
总结及下一步
总结
Watson是一个极其强大和复杂的平台,他所拥有的,不仅仅是能看见的诸多服务,还有隐藏在其后的认知计算系统。我把这一版本作为V1.0,因为虽然还有很多地方待提高,但是迈出了关键的一步,即上线,有人使用,稳定,以及有趣。
下一步
前端采用框架进行重写,美化处理,支持响应式。
认知后端算法优化,意境更加吻合,支持识别更多景物。
加入更多服务,使得用户体验多样化。
作品体验地址:
http://47.93.229.184/
个人网站:
http://www.changshunwang.com
如果你觉得有趣,在github上点个星吧:https://github.com/changshunw...