其他分享
首页 > 其他分享> > ALICE源代码分析

ALICE源代码分析

作者:互联网

前言

ALICE(爱丽丝)事实上是“人工语言计算机实体”的英文缩写。

它以前在往年(2000年、2001年和2004年)的勒布纳人工智能奖角逐中三次获胜。并在其它年度中也获过骄人的成绩。它是一个开源软件,能够在http://www.alicebot.org/downloads/programs.html下载到多种语言的实现。

这里以java版本号为例解说一下ALICE的聊天原理和代码实现部分。

下面提到的实现都是指java版本号。

原理

         ALICE聊天的原理还是比較简单,它有一个对话库。

当用户问一个问题后。ALICE通过在对话库中查找同样问题的答案作为回答。Java版本号支持通配符匹配问题,能够大大降低问答资料库的规模。

         原理非常easy,可是假设问答资料库足够丰富的话。还是能让人有些惊艳的感觉。

问答资料库管理

         问答库使用AIML语言来存储。AIML是一种相似HTML的标记语言,xml格式。

例如以下就是AIML语言中的一对问题和答案:

<category>

   <pattern>WHO ARE YOU</pattern>

<template>Iam Alice, nice to meet you!</template>

</category>

当用户输入WHO ARE YOU时,Alice就会回答I am Alice, nice to meet you!就是这么简单。

         ALICE启动时会把对话资料库载入到内存中,实现源代码为Graphmaster(GM)。GM事实上就是一颗Trie树,仅仅只是节点是一个单词。ALICE把问题(Topic,That)分成单词列表,然后按Trie树的方式存入内存中,当查询时,依照Trie树的方式查询,假设找到匹配的问题,那么拿出相应的答案。返回给用户。

以WHO ARE YOU为例,在内存中方式应该例如以下:

         GM:(WHO)

                   \

         GM:(ARE)

                     \

         GM:(YOU) -->Category{<pattern>:WHO ARE YOU;<template>:I am Alice, nice to meetyou! }

当然在实现中还支持一些特殊标记方法。如<set>设置上下文。<srai>调用Srai类来处理一些特殊标记的转换等。

启动

         ALICE的主程序为bitoflife.chatterbean.ChatterBean,它接受1~2个參数,第一个參数是配置文件Bots/properties.xml的路径,假设有第二个參数且是’gui’则启动GUI界面。否则启动Console界面。

标签:分析,资料库,版本号,WHO,ALICE,Alice,GM,源代码
来源: https://www.cnblogs.com/mqxnongmin/p/10692798.html