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();
}