V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangxiaolongbob
V2EX  ›  程序员

我对基于AIML聊天机器人的一点点看法

  •  
  •   wangxiaolongbob · 2012-07-01 11:37:49 +08:00 · 13454 次点击
    这是一个创建于 4517 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网上看到一篇论文,叫《中文分词在聊天机器人中的应用研究》,我有种杀鸡用牛刀的感觉,他做的工作就是在Alice规范化字符串后(无论是对AIML文件中的内容,还是对用户的输入内容),再针对中文使用他实现的分词工具,使得最后Alice能支持中文聊天,要想实现Alice对中文的支持,只要入乡随俗,在Alice源代码中的统一规范化改改正则表达式什么的使的中文字之间自动加上空格就全部搞定了,至少我现在还没有遇到其他的问题,要知道在AIML中都是些很短的文字,比如在吗,你好之类的不会太长(太长的也不该放到AIML里面了,这个下面会说到)。而我觉得人和机器人的聊天内容可以分成2大部分:1,随性的聊天,比如:你好啊,今天心情怎么样,在吗之类的。2:聊天内容专业,在这个时候用户通常会问很专业,目的性很强的问题。

    在我眼中,用AIML来作为知识的载体的好处是灵活,人性化强。缺点是在知识的编写方面上门槛搞(你要编写,你总得会他的标签的功能吧),就针对这一缺点,我觉得AIML就不适合运用在一些目的在于解决客户问题的网站上(客户会问什么问题,还不是需要管理人员设置啊,那用AIML肯定不方便)。但是我觉的用数据库来作为这些“专业”问题的载体,是不错的,你看数据库中知识的结构很明显吧,都在一张张表里面,而且关键的好处是,我能针对该数据库实现个知识管理界面,这样就算不会计算机的,只要会在界面上填数据就行了,然而用数据库的话,缺点也是很明显的,那就是AIML的优点。所以我想说的是,应该把2个知识载体结合起来,这样技能满足用户“随性”的聊天,也能满足问一些专业的问题(关键是满足专业问题的管理),我现在的这个机器人就是这么干的,但是目前遇到一个问题,那就是,数据库匹配方面做的不够好,可能匹配的不够准确,我想上面提到的那个论文的知识兴许能用到数据库匹配这方面(但是用到AIML上,就感觉用错了地方),现在遇到的问题就是在数据库匹配方面不够好。

    另外,有没有专门聊关于聊天机器人,AIML之类的论坛或者QQ群啊,我一个人在那瞎折腾,也不知道有没有什么更有意思的思路或处理方法,是多么的蛋疼,我在百度上也找不到像样的群体,这方面貌似大家讨论的不多,我想应该不会吧?有哪位师傅身处这样的一个群体就拉我一把吧!
    9 条回复    2016-07-20 17:54:42 +08:00
    manhere
        1
    manhere  
       2012-07-01 11:44:30 +08:00
    如果你感觉需要数据库,说明你的AIML设计不够好。
    wangxiaolongbob
        2
    wangxiaolongbob  
    OP
       2012-07-02 01:02:50 +08:00
    @manhere 请问大哥眼中一个设计优良的AIML是怎样的?我不知道大哥是不是明白我上面所谓的“专业的问题”是什么意思?额,是我没有描述清楚sorry,我举个例子吧,有一个公司是卖减肥产品的,该公司有一个网站。那我现在要把我这个在线客服聊天机器人用到这个网站上去,目的是为了解决用户使用该公司产品的一些疑问,比如:“为什么我吃了你们公司的减肥产品不能减肥啊?”“请问你们公司有没有促销活动啊?”“我想问一下你们公司的减肥产品都有哪几类啊?”....像这些问题,就是我所谓的专业的,目的性很强的问题。通常这些问题是需要经常修改的,假如把这些知识写到AIML中,那对修改的人员要求是不是高了一点呢?
    mebeta
        3
    mebeta  
       2012-07-02 02:19:47 +08:00
    为什么需要经常修改?不同的问题可能都是一个答案,在AIML中你只需要记录、积累这些不同的问题,对应合适的答案,积累的越多,你这个问答机器人的命中率也会越高
    mebeta
        4
    mebeta  
       2012-07-02 02:22:31 +08:00
    另外,你可以做一个后台,让用户根据一些规则(就是tag)来编辑xml文件,给一个系统给你参考 http://blog.program-o.com/
    wangxiaolongbob
        5
    wangxiaolongbob  
    OP
       2012-07-03 17:10:22 +08:00
    @manhere 大哥,请问你有没有设计过AIML,如果有的话,能否分享一下设计的原则。
    manhere
        6
    manhere  
       2012-07-03 17:26:58 +08:00
    @wangxiaolongbob 有现成的AIML编辑软件,如:SimpleAIMLEditor,GaitoBotAIMLEditor等,主要是对同义词和一句话的不同说法处理好,利用好<srai></srai>标签,另外通过程序过滤/规范来客问句也是比较好的做法。
    wangxiaolongbob
        7
    wangxiaolongbob  
    OP
       2012-07-04 23:14:46 +08:00
    @manhere 谢谢你啊,大哥,你真是好人。在编写AIML的时候冥冥中觉的应该有一个结构,使得内容可扩展,重用度高,而不是凌乱的,但是这结构在脑子里面还不清晰。
    wangxiaolongbob
        8
    wangxiaolongbob  
    OP
       2012-07-05 00:12:47 +08:00
    @manhere 大哥,你说的SimpleAIMLEditor我下载了,不好用。请问你有没有GaitoBotAIMLEditor这个软件啊,有的话发我一个吧我的邮箱a542107840#qq.com,我网上找了一下,要钱才能下载。
    xsank
        9
    xsank  
       2016-07-20 17:54:42 +08:00
    看了答主的文章,如果定制化的话,那肯定是偏向于“问答机器人”的,那么就需要自定义问答
    我写了一个简单的机器人: https://github.com/xsank/Shour
    就是专门做定制化的,希望对楼主有帮助
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3637 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:11 · PVG 08:11 · LAX 16:11 · JFK 19:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.