成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Watson使用指南(六)在微信公眾號(hào)中實(shí)現(xiàn)識(shí)圖作詩(shī)功能

Pikachu / 1597人閱讀

摘要:詳見(jiàn)注冊(cè)微信公眾號(hào)這個(gè)很簡(jiǎn)單,而且網(wǎng)上一搜很多,我在這里就不說(shuō)了。關(guān)于服務(wù)的創(chuàng)建,具體參見(jiàn)使用指南五通過(guò)認(rèn)證公眾微信號(hào)在微信公眾號(hào)頁(yè)面打開(kāi)開(kāi)發(fā)者頁(yè)面,進(jìn)行服務(wù)器配置。

本文章主要是寫(xiě)一下這個(gè)項(xiàng)目開(kāi)發(fā)的過(guò)程及之間遇到的問(wèn)題,作為記錄,也希望以此為契機(jī)認(rèn)識(shí)志同道合的朋友,一起學(xué)習(xí)交流。

目錄:

概述

環(huán)境準(zhǔn)備及相關(guān)賬號(hào)申請(qǐng)

部署Python Flask應(yīng)用到Bluemix

通過(guò)Bluemix認(rèn)證公眾微信號(hào)

識(shí)圖作詩(shī)相關(guān)功能開(kāi)發(fā)

總結(jié)

概述

本文將從一個(gè)開(kāi)發(fā)人員角度,介紹如何使用Bluemix平臺(tái)開(kāi)發(fā)和部署Python Flask應(yīng)用,如何通過(guò)Bluemix進(jìn)行微信公眾號(hào)認(rèn)證,最后結(jié)合相關(guān)Watson服務(wù),實(shí)現(xiàn)用戶向公眾號(hào)發(fā)送圖片,后臺(tái)識(shí)別圖片并返回詩(shī)文的功能。

Bluemix

BLuemix是IBM公司推出的一個(gè)云平臺(tái)服務(wù),通過(guò)它不僅可以部署本地應(yīng)用到云端,還可以調(diào)用BLuemix本身自帶的強(qiáng)大的一系列服務(wù)來(lái)實(shí)現(xiàn)很多功能。

Watson

Watson是IBM公司推出的一系列認(rèn)知計(jì)算服務(wù),包括自然語(yǔ)言分類,情感分析,圖像識(shí)別等等,我在本系列的前幾期已經(jīng)完成了可用Python實(shí)現(xiàn)部分的文檔翻譯,詳見(jiàn)

微信公眾平臺(tái)

作為一個(gè)程序員,使用微信公眾號(hào),關(guān)注點(diǎn)就不僅僅是發(fā)送推文消息了,通過(guò)自己開(kāi)發(fā),來(lái)實(shí)現(xiàn)一些有趣的功能,做不同于一般的公眾號(hào)才是我想要的。

環(huán)境準(zhǔn)備及相關(guān)賬號(hào)申請(qǐng) 注冊(cè)BLuemix賬號(hào)

申請(qǐng)地址:http://www.bluemix.net 在頁(yè)面右上角點(diǎn)擊注冊(cè),填寫(xiě)相關(guān)信息提交申請(qǐng),Bluemix 會(huì)發(fā)一封確認(rèn)郵件到注冊(cè)郵箱,需要手工進(jìn)入注冊(cè)郵箱點(diǎn)擊確認(rèn),才能成功注冊(cè)。第一次登陸 Bluemix 控制臺(tái)的時(shí)候,會(huì)要求創(chuàng)建工作空間,建議創(chuàng)建在悉尼或英國(guó)(雖然訪問(wèn)都很慢)。

安裝CloudFoundry工具

通過(guò)該工具,可以在命令行使用CF相關(guān)命令進(jìn)行與BLuemix之間的交互,包括部署,更新,查詢。詳見(jiàn):http://docs.cloudfoundry.org/...

注冊(cè)微信公眾號(hào)

這個(gè)很簡(jiǎn)單,而且網(wǎng)上一搜很多,我在這里就不說(shuō)了。

部署Python Flask應(yīng)用到Bluemix Python Flask

Python Flask 是基于Python的一種輕量級(jí)網(wǎng)絡(luò)框架,便捷易用。這個(gè)應(yīng)用中Flask僅僅起到傳遞參數(shù)的作用,對(duì)于Flask本身的使用不是很多。這就是說(shuō),你同樣可以僅僅使用Python,因?yàn)镻ython本身也可以提供網(wǎng)絡(luò)服務(wù)。

創(chuàng)建應(yīng)用

在Bluemix首頁(yè)點(diǎn)擊創(chuàng)建應(yīng)用,新的頁(yè)面中會(huì)顯示很多可創(chuàng)建的應(yīng)用案例,下拉菜單找到Flask,創(chuàng)建,根據(jù)提示填寫(xiě)域名等信息。創(chuàng)建后根據(jù)頁(yè)面提示下載模板代碼到本地。

要想在bluemix下成功運(yùn)行應(yīng)用,至少需要有manifest.yml,requirements.txt,runtime.txt和app.py這四個(gè)文件。

manifest.yml

這是應(yīng)用程序的基本配置信息,包括域名和主機(jī)名。是下載源碼后默認(rèn)的,不需要更改。

requirements.txt

這個(gè)文件中包含應(yīng)用所需要的第三方依賴,比如我的應(yīng)用里是這樣的:

Flask
watson_developer_cloud
lxml

flask是Python網(wǎng)絡(luò)框架。watson_developer_cloud用于調(diào)用Watson服務(wù)。lxml包用來(lái)爬取網(wǎng)絡(luò)信息。

runtime.txt

該文件用來(lái)指定需要的Python版本

app.py

Python應(yīng)用的腳本或源代碼文件,我會(huì)在“識(shí)圖作詩(shī)相關(guān)功能開(kāi)發(fā)”做詳細(xì)說(shuō)明

部署應(yīng)用

在本地進(jìn)行應(yīng)用的開(kāi)發(fā),并且本地調(diào)試和運(yùn)行成功后就可以部署代碼了。在bluemix上點(diǎn)擊應(yīng)用程序,在應(yīng)用程序菜單選擇“入門”,根據(jù)提示在本地命令行使用cf命令就可以成功push到BLuemix上。如果過(guò)程中遇到問(wèn)題,可以通過(guò)

cf logs 應(yīng)用程序名 --recent

來(lái)查看錯(cuò)誤

創(chuàng)建并綁定服務(wù)

在Bluemix應(yīng)用程序界面找到創(chuàng)建新服務(wù),同創(chuàng)建應(yīng)用程序一樣,新界面會(huì)有很多服務(wù)可供選擇。這里,我選擇的是Visual Recognition服務(wù)來(lái)進(jìn)行圖片識(shí)別。創(chuàng)建新服務(wù)后,點(diǎn)擊連接到現(xiàn)有應(yīng)用程序,就OK了。關(guān)于服務(wù)的創(chuàng)建,具體參見(jiàn)Watson使用指南(五)

通過(guò)Bluemix認(rèn)證公眾微信號(hào)

在微信公眾號(hào)頁(yè)面打開(kāi)開(kāi)發(fā)者頁(yè)面,進(jìn)行服務(wù)器配置。需要注意的是令牌自己隨意填寫(xiě)就好。
新建auth.py,根據(jù)微信官方的文檔,獲取相關(guān)參數(shù):

        token = "微信頁(yè)面填寫(xiě)的令牌"   
        signature = request.args.get("signature", "")  
        echostr = request.args.get("echostr", "")  
        timestamp = request.args.get("timestamp", "")  
        nonce = request.args.get("nonce", "")  
        tmp = [timestamp, nonce, token]  
        tmp.sort()  
        tmp = "".join(tmp)  
        if ( hashlib.sha1(tmp).hexdigest() == signature ):    
            return make_response(echostr)

push代碼到Bluemix,在微信頁(yè)面點(diǎn)擊提交,顯示提交成功,就完了通過(guò)Bluemix認(rèn)證微信號(hào)。

識(shí)圖作詩(shī)相關(guān)功能開(kāi)發(fā)

顧名思義,識(shí)圖作詩(shī),就包括識(shí)圖和作詩(shī)兩個(gè)部分。用到三個(gè)文件,visual.py,translate.py,poem.py

visual.py

調(diào)用Watson服務(wù),返回的是嵌套字典信息,可以轉(zhuǎn)換成JSON格式然后提取信息。這里直接操作字典提取:

def VisualContent(url):
  visualRecognition = VisualRecognitionV3("2016-05-20", api_key="創(chuàng)建服務(wù)后系統(tǒng)返回的api_key")

  content = visualRecognition.classify(images_url = url)

  images = content.get("images")
  classifiers = images[0].get("classifiers")
  classes = classifiers[0].get("classes")
  res = classes[0].get("class")
  

  return res

translate.py

Watson服務(wù)中有翻譯服務(wù),但是不支持英漢互譯。而獲取到的圖片信息都是英文,顯然不能直接去用英文來(lái)搜索相關(guān)詩(shī)文。于是我寫(xiě)了這個(gè)模塊,直接在有道翻譯的網(wǎng)頁(yè)中獲取翻譯。

 def Translate(word):
  url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/"
  key = word

  data = {}
  data["type"] = "AUTO"
  data["i"] = key
  data["doctype"] = "json"
  data["xmlVersion"] = "1.6"
  data["keyfrom"] = "fanyi.web"
  data["ue"] = "UTF-8"
  data["typoResult"] = "true"

  data = urllib.parse.urlencode(data).encode("utf-8")
  content = urllib.request.urlopen(url, data).read().decode("utf-8")
  json_content = json.loads(content)
  res = json_content["translateResult"][0][0]["tgt"][:2]

  return res

poem.py
最后一個(gè)部分,就是根據(jù)圖片內(nèi)容獲得詩(shī)文信息了,簡(jiǎn)單的爬蟲(chóng),用xpath直接
獲得網(wǎng)頁(yè)內(nèi)容。

def MakePoem(word):
  url_base = "地址"
  key = word
  url = url_base+key
  res = requests.get(url)
  res.encoding = "utf-8"
  #print(res.text)
  root = etree.HTML(res.content)
  items = root.xpath("http://div[@class="sons"][2]/p[@style="margin-bottom:0px;"]")[0]
  item = items.xpath("string(.)")
  
  content = item.replace("
","").replace(" ","")
  length = len(content)
  answer = content[:length-1]

  return answer

其他
值得一提的是,微信公眾號(hào)中的消息處理都是以xml格式封裝的,所以在獲取用戶消息中,需要解析格式獲取消息內(nèi)容;同樣,返回消息時(shí),也要對(duì)內(nèi)容封裝后再返回用戶。

總結(jié)

通過(guò)這幾天微信后臺(tái)的反饋來(lái)看,服務(wù)器不穩(wěn)定,識(shí)別內(nèi)容類別較少,爬取信息不穩(wěn)定這三個(gè)因素經(jīng)常導(dǎo)致用戶會(huì)收到“暫時(shí)停止服務(wù)”的消息。
后期添加異常處理模塊希望能使錯(cuò)誤信息得到人性化反饋。

這是我的公眾號(hào),歡迎關(guān)注

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38456.html

相關(guān)文章

  • 識(shí)圖吟詩(shī)

    摘要:架構(gòu)識(shí)圖吟詩(shī)架構(gòu)由以下層和關(guān)聯(lián)實(shí)現(xiàn)視圖一個(gè)響應(yīng)相對(duì)靈敏但不夠美觀的前端用戶界面,只使用了原生。平臺(tái)本版本部署在阿里云上,采用的流行框架。 寫(xiě)在前面 關(guān)于這個(gè)作品的設(shè)計(jì)理念和情懷,請(qǐng)看這里 初衷 隨著作品的不斷迭代和改進(jìn),我已經(jīng)漸漸忘記初衷是什么了。是為了討某人歡心做的小demo或是為了熟悉使用watson的練手作品,都已不大記得。然而現(xiàn)在,是想利用零碎的時(shí)間,做一個(gè)完整的項(xiàng)目。來(lái)探究A...

    zhangrxiang 評(píng)論0 收藏0
  • 淺析微信支付:微信支付簡(jiǎn)單介紹(小程序、公眾號(hào)、App、H5)

    摘要:本文是淺析微信支付系列文章的第二篇,主要講解一下普通商戶接入的支付方式以及其中的不同之處。淺析微信支付前篇大綱微信支付是集成在微信客戶端的支付功能,用戶可以通過(guò)手機(jī)完成快速的支付流程。目前微信支付支持手機(jī)系統(tǒng)有蘋(píng)果安卓和。 本文是【淺析微信支付】系列文章的第二篇,主要講解一下普通商戶接入的支付方式以及其中的不同之處。 上篇文章講了本系列的大綱,沒(méi)有看過(guò)的朋友們可以看一下。 淺析微信支...

    shadowbook 評(píng)論0 收藏0
  • Node.js微信公眾號(hào)開(kāi)發(fā)

    摘要:在微信開(kāi)發(fā)者工具中調(diào)試和一定要正確域名一定是備案的綁定域名需要的放在服務(wù)器上的位置一定要正確參考微信公眾號(hào)開(kāi)發(fā)文檔 node微信公眾號(hào)開(kāi)發(fā) 概覽 key value 項(xiàng)目名稱 node微信公眾號(hào)開(kāi)發(fā) 項(xiàng)目描述 使用node編寫(xiě)接口,前后端分離獲取簽名數(shù)據(jù) 開(kāi)發(fā)者 leinov 發(fā)布日期 2018-11-07 倉(cāng)庫(kù) github地址 安裝&使用 下載 gi...

    OnlyLing 評(píng)論0 收藏0
  • beecloud對(duì)接——微信支付

    摘要:微信支付方式付款碼支付適用于線下場(chǎng)所支付支付是指商戶通過(guò)調(diào)用微信支付提供的接口,在支付場(chǎng)景中調(diào)起微信支付模塊完成收款。主要用于觸屏版的手機(jī)瀏覽器請(qǐng)求微信支付的場(chǎng)景??梢苑奖愕膹耐獠繛g覽器喚起微信支付。 微信支付方式(https://pay.weixin.qq.com/sta...): 1、付款碼支付————————適用于線下場(chǎng)所 2、JSAPI支付————————JSAPI支付是指商戶...

    FingerLiu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<