aiml解析之 Linux C++ libaiml 编译+执行测试程序+支持中文

来源:互联网 发布:关于淘宝店铺转让 编辑:程序博客网 时间:2024/05/18 03:33

最近在搞Linux平台下的C++语言版AIML解析,目的是实现中文的AIML格式文本解析,经历很多波折啊,现在把调试过程记下来,供志同道合者参考和使用,也希望大家多提建议,共同学习。

1. 官网下载libaiml包和依赖的std_utils库函数 网址:http://www.alicebot.org/downloads/programs.html


2. Linux系统中安装库执行依赖的libxml2和libxml2-devel包(可以在线安装,直接用yum search命令即可)。

3. 解压libaiml.tar.bz2文件到指定文件夹,然后在你解压的文件夹下面(假设解压到/path/)/path/libaiml/安装说明文档readme中的安装说明分别执行

 ./configure    

make     

make install

进入文件夹发现根本没有configure 文件,可能是作者忘记拷贝进来了,那只能自己想办法

先在系统中安装libtool工具包

依次执行命令:

libtoolize

aclocal

autoheader

automake -a

autoconf

4. 此时去/path/libaiml文件夹下面应该看到出现configure文件了,如果configure可执行权限不够,chmod +x configure

然后执行 ./configure  如果没有错误继续执行 make  

5. make后可能会报错,我这个系统中报的错误有:

(1)找不到libxml/parserInternal.h 文件夹里面的几个头文件,下载的工具包中根本没有libxml文件夹,只好从网上找到其他用过的人的对应文件,然后把libxml文件夹中内容整体拷贝过来,参考网站:https://github.com/k3a/AssistantExtensions/tree/master/libaiml/libxml

(2)在aiml_parser.cpp 文件中的memset() 找不到定义,solution:添加#include <string.h>头文件

(3)在graphmaster.cpp中找不到lower_bound()等函数声明, solution: 添加头文件 #include <algorithm>

6. 此时make应该没错了。再执行 make install

7. 进入test_app文件夹执行测试程序


8. 经过测试发现,对中文进行各种编码包括UTF8、GB2312、UNICODE, 发现英文问句,中文答句可以实现,中文问句则不能正常解析,所以这个工具包还是不支持中文,囧啊,没办法,实在没辙,想出一个不是办法的办法,把中文字转换成相应的GB2312编码,编码对照表可以在这里下载:http://wenku.baidu.com/view/0ef57bfb04a1b0717fd5dd1a.html

这样就相当于处理了英文,但是中文aiml库文件的可观赏性实在太差了

如果有人知道如果解析aiml中文,欢迎留言交流!