許桂梅
摘 要:微信API有兩個(gè)非常好用的python庫(kù):wxpy和itchat,這兩個(gè)庫(kù)使用了Web微信的通訊協(xié)議,實(shí)現(xiàn)了微信登錄、收發(fā)消息、搜索好友、數(shù)據(jù)統(tǒng)計(jì)等功能。在圖靈官網(wǎng)申請(qǐng)一個(gè)免費(fèi)的圖靈機(jī)器人,通過調(diào)用圖靈機(jī)器人的API,實(shí)現(xiàn)發(fā)送消息獲得機(jī)器人回復(fù)的功能。我們?cè)谖⑿帕奶鞕C(jī)器人的基礎(chǔ)上,在編程中又增添了查看微信好友男女比例、數(shù)據(jù)可視化、圖片識(shí)別等功能。
關(guān)鍵詞: 圖靈機(jī)器人;API;數(shù)據(jù)可視化;圖片識(shí)別
1 背景
隨著大數(shù)據(jù)、自然語(yǔ)言處理等互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,人工智能交互技術(shù)的不斷完善,聊天機(jī)器人已經(jīng)走進(jìn)人們的日常生活中。聊天機(jī)器人是一個(gè)用來(lái)模擬人類對(duì)話或聊天的程序,微信聊天機(jī)器人通常是借助第三方軟件來(lái)實(shí)現(xiàn)機(jī)器人和人類的自由對(duì)話。圖靈機(jī)器人是北京光年無(wú)限科技旗下的個(gè)性化人工智能機(jī)器人開放平臺(tái),普通帳戶可創(chuàng)建5個(gè)機(jī)器人,每個(gè)機(jī)器人均有唯一的 API key。開發(fā)者可以利用圖靈機(jī)器人的API創(chuàng)建各種網(wǎng)絡(luò)在線服務(wù),打造個(gè)人專屬智能交互機(jī)器人,也支持多渠道多維度的快速接入與訪問。有聊天、笑話、故事、成語(yǔ)接龍、生活百科、圖片、天氣、計(jì)算等18個(gè)功能提供選擇。我們的微信聊天機(jī)器人將通過調(diào)用圖靈機(jī)器人API來(lái)實(shí)現(xiàn)。
2 微信聊天機(jī)器人的總體設(shè)計(jì)
設(shè)計(jì)的微信聊天機(jī)器人,主要包括以下幾個(gè)方面的功能:
(1)聊天問答:它是微信聊天機(jī)器人最基本的功能,可以實(shí)現(xiàn)給所有人回復(fù)消息、給指定的人回復(fù)消息、給指定的群回復(fù)消息,響應(yīng)迅速,回答精準(zhǔn)。
(2)數(shù)據(jù)處理:具有好友統(tǒng)計(jì)功能,可以很方便地統(tǒng)計(jì)好友的地理位置分布和性別分布等信息。
(3)百度智能識(shí)圖:調(diào)用百度智能云進(jìn)行圖片識(shí)別等功能。
3 基于python的微信機(jī)器人的主要原理
3.1 微信庫(kù)選擇
python關(guān)于開發(fā)微信的庫(kù)主要有itchat和wxpy兩種,wxpy底層是調(diào)用的itchat。其中wxpy庫(kù),它比其他的庫(kù)都要優(yōu)雅,更面向?qū)ο螅疑疃日狭藞D靈機(jī)器人和小i機(jī)器人;itchat擴(kuò)展性更好,適合開發(fā)一個(gè)自己的微信庫(kù)。
很多人都使用過微信的網(wǎng)頁(yè)版,而wxpy(底層使用itchat)庫(kù)就是模擬登錄網(wǎng)頁(yè)端,然后調(diào)用微信的api實(shí)現(xiàn)操作的。目前wxpy和itchat都是模擬網(wǎng)頁(yè)版微信來(lái)操作的。
3.2 數(shù)據(jù)可視化
ECharts提供了常規(guī)的折線圖、柱狀圖、散點(diǎn)圖、餅圖、K線圖,用于統(tǒng)計(jì)的盒形圖,用于地理數(shù)據(jù)可視化的地圖、熱力圖、線圖,用于關(guān)系數(shù)據(jù)可視化的關(guān)系圖,多維數(shù)據(jù)可視化的平行坐標(biāo),還有用于BI的漏斗圖、儀表盤,并且支持圖與圖之間的混搭。
(1) Python之pyecharts模塊
pyecharts 是一個(gè)用于生成 Echarts 圖表的類庫(kù)。Echarts 是百度開源的一個(gè)數(shù)據(jù)可視化 JS 庫(kù)。用 Echarts 生成的圖可視化效果非常棒,為了與 Python 進(jìn)行對(duì)接,方便在 Python 中直接使用數(shù)據(jù)生成圖。
(2)Python之webbrowser模塊
支持對(duì)瀏覽器進(jìn)行一些操作,對(duì)于爬蟲來(lái)說是比較基礎(chǔ)的知識(shí)點(diǎn)。webbrowser模塊提供了展示基于web文檔的高層接口,多數(shù)情況下,簡(jiǎn)單地調(diào)用open() 函數(shù)即可。
3.3 圖片識(shí)別
python調(diào)用百度api,進(jìn)行圖像識(shí)別(百度通用文字識(shí)別)。首先去百度官網(wǎng)進(jìn)行身份驗(yàn)證,在平臺(tái)注冊(cè),注冊(cè)獲取key,可以免費(fèi)使用其提供的接口。在python編程中調(diào)用百度接口,即可進(jìn)行簡(jiǎn)單的圖像識(shí)別。
4 主要實(shí)現(xiàn)過程
4.1 微信消息回復(fù)
(1)下載wxpy庫(kù)和itchat庫(kù)
使用命令pip install wxpy,在電腦上下載wxpy庫(kù);在電腦上下載itchat庫(kù),可以使用pip install itchat。
(2)在python中登陸微信web版
在python中登陸微信web版,會(huì)彈出二維碼,用手機(jī)微信掃一掃即可實(shí)現(xiàn)登錄。但上面的程序有一個(gè)缺點(diǎn),每次運(yùn)行都要掃二維碼。不過wxpy非常貼心地提供了緩存的選項(xiàng),用于將登錄信息保存下來(lái),核心代碼如下:
from wxpy import*
bot=Bot()
bot=Bot(cache_path=True)
(3)搜索好友及微信群
下面代碼實(shí)現(xiàn)搜索群聊,定位指定人并轉(zhuǎn)發(fā)指定人消息的功能。
company_group=bot.groups().search(‘指定群聊)
boss=company_group.search(‘大名)
(4)消息自動(dòng)回復(fù)
wxpy同時(shí)也包括了發(fā)送不同類型消息的方法??梢栽O(shè)置給所有人回復(fù)消息、給指定的群回復(fù)、給指定的人回復(fù),給指定人回復(fù)消息。
4.2 數(shù)據(jù)處理
wxpy庫(kù)提供的好友統(tǒng)計(jì)功能非常好用,可以很方便地統(tǒng)計(jì)好友的地理位置分布和性別分布。
(1)微信好友男女比例
我們運(yùn)用pyecharts模塊導(dǎo)入Pie來(lái)繪制餅圖,用webbrowser來(lái)打開瀏覽器,運(yùn)行效果如下圖所示:
(2)微信好友地域分布
微信好友地域分布顯示中國(guó)地圖,需要裝中國(guó)地圖模塊,我們同樣使用pyechats模塊進(jìn)行數(shù)據(jù)分析,代碼運(yùn)行結(jié)果如下圖所示:
4.3 百度智能識(shí)圖
使用itchat庫(kù)新建一個(gè)wechatRobot.py,導(dǎo)入需要的庫(kù),編寫一個(gè)class Robot,首先初始化自己注冊(cè)的百度API信息。根據(jù)微信好友發(fā)來(lái)的消息,判斷是否為選定的白名單好友,判斷消息類型,若為“動(dòng)物識(shí)別”,則進(jìn)入百度圖片識(shí)別功能,其他的消息類型則調(diào)用圖靈聊天機(jī)器人。調(diào)用聊天機(jī)器人,根據(jù)主函數(shù)選定的機(jī)器人種類進(jìn)入相應(yīng)模塊,開啟自動(dòng)回復(fù)和智能識(shí)圖功能。
5 總結(jié)
在python中用wxpy(底層使用itchat)模擬登錄網(wǎng)頁(yè)端,然后調(diào)用微信的API實(shí)現(xiàn)微信登陸。申請(qǐng)一個(gè)免費(fèi)的圖靈機(jī)器人,通過調(diào)用圖靈機(jī)器人的API,實(shí)現(xiàn)發(fā)送消息并獲得機(jī)器人回復(fù)的功能。我們?cè)谖⑿帕奶鞕C(jī)器人的基礎(chǔ)上,在編程中又增添了查看微信好友男女比例、微信好友地域分布等功能。在其中我們用到了pyecharts模塊,通過模塊進(jìn)行數(shù)據(jù)可視化,生成數(shù)據(jù)圖等操作,而后通過調(diào)用百度API接口,完成微信的圖片識(shí)別功能。
參考文獻(xiàn):
[1]陳偉, 吳明瞾, 蘇浩偉,等. 基于Python的圖靈機(jī)器人設(shè)計(jì)與實(shí)現(xiàn)[J]. 數(shù)碼世界, 2019(2):37-39.