微信訂閱號+新浪SAE

機緣巧合,突然對微信的訂閱號非常感興趣,於是懷着玩一玩的狀態,自己申請了一個個人訂閱號,名字叫做“張老闆的idea”。

在微信公衆平臺上面,提供了編輯者模式和開發者模式。在編輯者模式中,可以設置自動回覆,菜單設置等,對於一般的應用也足夠了。開發者模式是指用戶可以自己開發信息處理邏輯,即對於用戶發送的信息,自己通過代碼處理,並且返回信息。

開發者模式就可以理解爲微信公衆平臺作爲一箇中間着,它把用戶發送的信息轉發給你自己的服務器,然後對於服務器返回的信息,公衆平臺處理後再發送給用戶。

那麼,在哪部署自己的業務處理代碼呢?於是乎,想到了借用現有的雲服務。新浪提供的SAE就足夠應用了。

現在一切都有了,那我想做一個什麼東西呢?我想做一個聊天訂閱號,即把兩個人的聊天記錄提交到系統中之後,系統可以根據你們平時的聊天內容,自動和你聊天。類似於做一個簡單的聊天AI。想法很美好,但是做起來卻遇到了很多問題。下面主要總結一下遇到的問題以及經驗教訓,後面給出一些總結。

1、項目如何成功部署到SAE
SAE支持的jdk版本是1.6,所以,在本地開發的過程中最好採用jdk1.6版本,在eclipse中開發的時候可以通過build path來設置。另外,在打成war包導入SAE的時候,需要刪除掉war包中的servlet.jar包(javax-servlet**.jar),要不會與SAE自身的jar包衝突。當提交了代碼後,可以查看日誌,針對日誌中出現的問題,做相應的調整。對於war包的大小,超過50M之後就不能提交了,這個一定要控制好war包的大小啊。

2、現有聊天工具的使用
爲了做一個簡單的聊天AI,可以在應用中插入使用現有的聊天機器人API。比如“圖靈機器人”和“SimSIMI(小黃雞)”,都可以申請使用。這兩者都提供了簡單易用的API。現在網上還有一個API叫做小逗逼,也方便使用,只是速度比較慢一些。下面給出一些調用示例代碼:

    public static String getTULINGRespMessage(String userMessage) throws IOException{

        String INFO = URLEncoder.encode(userMessage, "utf-8"); 
        String getURL = TULING_URL + INFO; 
        URL getUrl = new URL(getURL); 

        HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); 
        connection.connect(); 

        // 取得輸入流,並使用Reader讀取 
        BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "utf-8")); 
        StringBuffer sb = new StringBuffer(); 
        String line = ""; 
        while ((line = reader.readLine()) != null) { 
            sb.append(line); 
        } 
        reader.close(); 

        String tulingRes = sb.toString();       
        JSONObject json=JSONObject.fromObject(tulingRes);
        String realTLResp = json.getString("text");

        // 斷開連接 
        connection.disconnect(); 

        return realTLResp;      
    }

3、現有分詞工具的使用
現在網上的分詞工具也很多,我在項目中使用的是ansj,非常方便使用。代碼調用更加簡單。官方文檔比較充足,自己查看吧。

一些不錯的點:
1、項目採用的是Spring mybatis,架構非常清晰。
2、當數據庫中存在大量模式相似的數據表時,比如tb1, tb2, tb3時,可以通過配置mybatis配置文件來動態的拼接數據表名來操作數據庫,靈活好用!

整體項目思路:
1、從qq導出聊天記錄txt版本,導入系統,分析每一句話。記錄住:時間+發送者+發送內容
2、通過分詞工具分析每一句話,然後存儲信息:詞語+所在對話id+出現次數
此處,這些信息最好分開存儲,兩字單詞,三字單詞,四字單詞等。其中二字單詞數量太大,可以考慮將二字單詞通過hash函數分散到不同的100個表中。
3、用戶輸入一句話,分詞這句話,找到相似度最高的話,並且找到該對話在聊天記錄中的回答。這部分就看自己的算法如何設計了。
4、在回答中混入調用成熟聊天AI的回答。並且返回給用戶。

希望對大家有用!
代碼下載地址:
http://download.csdn.net/detail/duomengwuyou/8567867

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章