許桂梅

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