Alice实现自定义标签

上一篇分析了Alice支持中文,这一篇介绍Alice自定义标签。源码下载地址点击这里


Alice标签解析过程

    要想自定义标签,得先清楚Alice标签原理,我不想说的太细,大致说一下:

         可能你们注意到AIML文件每一个标签对应着在bitoflife.chatterbean.aiml包一个类。


         AIMLHandler类中的buildClassName函数,将标签名映射为bitoflife.chatterbean.aiml下的类。

privateStringbuildClassName(String tag) {

       return"bitoflife.chatterbean.aiml."

               +tag.substring(0, 1).toUpperCase()

               +tag.substring(1).toLowerCase();

   }

         每一个标签解析类继承TemplateElement类,每一个TemplateElement类的核心函数是process函数,所有的工作就在process函数中完成,proces函数的返回值会直接返回给用户,作为用户questionanswer

例如bitoflife.chatterbean.aiml.Date类中的process函数,返回值就是日期格式。

实现自定义标签个关键就是继承TemplateElement类,实现process函数。


实现自定义标签解析类

下面代码实现了自定标签cs的解析类

package bitoflife.chatterbean.aiml;

import org.xml.sax.Attributes;

import bitoflife.chatterbean.Match;

public class Cs extends TemplateElement {
	public Cs() {
	}

	public Cs(Attributes attributes) {
	}

	public int hashCode() {
		return 131072;
	}

	public String process(Match match) {
		return "我在测试自定义标签,哈哈。";
	}
}


 

你可能感兴趣的:(自定义标签,支持中文,ALICE)