Alicebot 无法解析中文 AIML

最近在研究关于智能机器人对话方面的文章,发现了AI界认可度最高的Alice,下载了Java版Alicebot的实现-ChatterBean。跑起来之后发现英文语义没有问题都可以做出答复,但是汉语词语提交给Alice引擎时一直返回*所匹配的template。起初怀疑是请求串String提取时转码问题但将所有编码均改为UTF-8时问题依旧存在,后来查阅文档才发现请求的字符串需要前后添加空格、AIML文档中的pattern标签也需要做同样的处理。经过这样之后就能成功返回匹配结果了 。

附中文字符串分拆加空格代码

// 汉字分拆
 public static String normalizationChinese(String input) {
   Pattern pattern = Pattern.compile("[u4e00-u9fa5]");
   Matcher mather = pattern.matcher(input);

   StringBuffer target = new StringBuffer();

   while (!mather.hitEnd() && mather.find()) {
     mather.appendReplacement(target, " " + mather.group() + " ");
   }
   mather.appendTail(target);
   return target.toString();
 }