微信订阅号+新浪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

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