一、AIML

AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的。

#语料库
<aiml version="1.0.1" encoding="UTF-8">
   <category>
       <pattern>你好</pattern> #用户输入关键字
       <template>你好呀~</template> #返回信息
   </category>
</aiml>

代码参考:https://github.com/lengendary/springboot-aimlbot 代码参考:https://github.com/srikanth-josyula/springboot-aiml-chatbot

二、基于Tensorflow

在本文中,我们将实现一个基于检索的机器人。基于检索的模型具有可以使用的预定义响应的存储库,这与生成模型不同,生成的模型可以生成从未见过的响应。从形式上说,基于检索的模型的输入是上下文C(到目前为止的对话)和潜在的响应[R。模型输出是响应的分数。要找到一个好的答案,您需要计算多个答案的得分,然后选择得分最高的得分。

在本文中,我们将使用Ubuntu Dialog Corpus(paper,github)。Ubuntu对话框语料库(UDC)是可用的最大的公共对话框数据集之一。它基于来自公共IRC网络上Ubuntu频道的聊天记录。该文深入讨论了在语料库中究竟如何创建的,所以我不会重复在这里。但是,了解我们正在使用哪种数据非常重要,因此让我们先进行一些探索。

训练数据包含1,000,000个示例,阳性率为50%(标签1),阴性率为50%(标签0)。每个示例都包括一个上下文,至此的对话以及一个话语(对上下文的响应)。正标签表示话语是对上下文的实际反应,而负标签表示话语不是-从语料库的某个位置随机选择。这是一些示例数据。

代码参考:https://github.com/dennybritz/chatbot-retrieval/

三、ChatterBot

ChatterBot是一个内置的基于机器学习的对话引擎Python,它可以根据已知对话。ChatterBot独立于语言的设计允许它会说任何语言。

代码参考:https://github.com/gunthercox/ChatterBot

四、笔记

CommandLineRunner方法:SpringBoot在项目启动后会遍历所有实现CommandLineRunner的实体类并执行run方法。

@SpringBootApplication
public class ChatBotApplication implements CommandLineRunner {

	public static void main(String[] args) {
		SpringApplication.run(ChatBotApplication.class, args);
	}

	@Override
	public void run(String... args) {
		 System.out.println("----------服务启动开始执行加载数据等操作--------------");
	}
}