Nitro's

Jul 19, 2013 - Comments - dev

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

Tags: ai

人工智能标记语言 AIML Tag 川藏印象-6月19日

comments powered by Disqus