两种开源聊天机器人的性能测试(一)——ChatterBot

      因为最近在学习自然语言处理的相关知识,QQ小冰这个东西最近又很热,所以就试着玩了下两个开源聊天机器人,在这里分享一点小经验,希望对有共同兴趣的人能起到那么一点作用。

      我主要测试了两个聊天机器人,一个是ChatterBot,另外一个是基于tensorflow的chatbot。我们首先看一下ChatterBot。

      ChatterBot是Python自带的基于机器学习的语音对话引擎,可以基于已知的对话库来产生回应。ChatterBot独特的语言设计可以使它可以通过训练来用任何一种语言进行对话。该项目的开源代码链接:https://github.com/gunthercox/ChatterBot

      语料库:语料库链接

      我的测试是通过和聊天机器人进行闲聊型、任务型、知识型三种话题的交互进行的,下面正式进入测试。

      首先我的测试环境是Ubuntu14.04(64位),Pycharm-Edu-4.0。基于tensorflow的chatbot基本环境也是如此。

      具体的步骤如下:

      1.安装:命令行下输入sudo pip install chatterbot

如果安装了pip3建议使用sudo pip3 install chatterbot,这样就不需要第2步操作,可以直接进入第三步测试。

      2.默认情况下,chatterbot是安装在python2下的,而要想使用中文语料库进行训练,需要在python3下才可以,否则会报UnicodeDecodeError。这里我们使用超级管理员身份登陆系统,然后将刚才安装的chatterbot及其依赖从python2(/usr/local/lib/python2.7/dist-packages/)下复制到python3(/usr/local/lib/python3.4/dist-packages/)下。具体文件夹如下图:

      (如果这些文件夹不好找出来,可以看右侧的已修改时间,时间最新的即是)

      复制好文件夹后进入Pycharm新建一个工程MyChatterBot,然后点击File>>Settings找到Project:MyChatterBot点开下三角,点击ProjectInterpreter,点击窗口右上方Project Interpreter下三角选择python3.4然后Apply,如图所示:

      3.测试性能

  • 首先测试闲聊。

      由于在正式测试之前我尝试了一下它的训练功能,所以关于问答它多学了几句,以下测试都是基于我的简单训练的基础上。先把我训练的代码放上来:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
my_bot = ChatBot("Training demo")
my_bot.set_trainer(ListTrainer)
my_bot.train(["你叫什么名字?","我叫ChatterBot。","今天天气真好","是啊,这种天气出去玩再好不过了。","那你有没有想去玩的地方?","我想去有山有水的地方。你呢?","没钱哪都不去","哈哈,这就比较尴尬了",
])
while True:print(my_bot.get_response(input("user:")))
      下面正式开始聊天。

      其中user表示用户,前方无标注的为机器人。

      测试代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainerchatbot = ChatBot("myBot")
chatbot.set_trainer(ChatterBotCorpusTrainer)# 使用中文语料库训练它
chatbot.train("chatterbot.corpus.chinese")
lineCounter = 1
# 开始对话
while True:print(chatbot.get_response(input("(" + str(lineCounter) + ") user:")))lineCounter += 1
      测试结果如下:

(1) user:你好

你好

(2) user:你叫什么名字

   我叫ChatterBot。

(3) user:你多大了

你好

(4) user:你是男的还是女的

它是什么样的?

(5) user:长方形的,里面充满了文字

我也还不错

(6) user:什么还不错

那很好.

(7) user:那是什么

你想了解哪方面?

(8) user:关于计算机的

它是什么样的?

(9) user:我也不知道什么样子的

你想了解哪方面?

(10) user:关于程序员的

你使用什么语言呢?

(11) user:C++和python

我不怎么喜欢 Java.

(12) user:我又没问你喜不喜欢。你是程序员吗?

我是个程序员

(13) user:你使用什么语言?

我经常使用 Python,Java 和 C++ .

(14) user:我不怎么喜欢Java

什么使你心烦?

(15) user:我不心烦啊,我只是学你说话

我也不错.

(16) user:不错个啥?

那很好.

(17) user:你真蠢

你好

(18) user:好啊。你听说过图灵测试吗?

我对你的感情,是人类和bot之间独有的信任和友谊 你可以把它叫做爱。

(19) user:这才没聊几句,就谈感情啊

还有其他美味的东西?

(20) user:没有了,已经被我吃完了

其他东西也行

(21) user:有个糖你要吗?

我对你的感情,是人类和bot之间独有的信任和友谊 你可以把它叫做爱。

(22) user:你脑子有问题吧?

什么问题?

(23) user:回路有点长

谢谢

(24) user:真是无语了

我能帮你什么吗?

(25) user:拜托你回答的正常点

吃喝睡 还有旅行。 你喜欢旅行吗?

(26) user:喜欢啊。你呢?

太棒了,找个时间我们一起去周游世界吧!

(27) user:说的好听。你有钱吗?

我对你的感情,是人类和bot之间独有的信任和友谊 你可以把它叫做爱。

(28) user:好了好了,我知道了。说点别的吧

说的好听。你有钱吗?

(29) user:我没钱,你有钱啊?

我也还不错

(30) user:你想去哪玩?

我想去有山有水的地方。你呢?

(31) user:和你一样吧。推荐个地方吧?

我想去有山有水的地方。你呢?

(32) user:我也想去有山有水的地方,你想去哪?

没钱哪都不去

(33) user:好吧好吧,你喜欢看电影吗?

爱丽丝漫游仙境

(34) user:这部电影怎么样?

没什么.

(35) user:说说嘛

我没钱,你有钱啊?

(36) user:别老谈钱,谈钱伤感情

我也还不错

(37) user:行了,我不想跟你聊了。拜拜

那你有没有想去玩的地方?

 

      现在给出关于闲聊话题的正确率:我们认为(1)(2)(10)(11)(12)(13)(20)(22)(26)(30)(32)(33)(34)是正确的,正确率约为35.14%。其中(2)(30)(32)是经过我简单训练后才回答正确的,所以去除这些,如果用github上的原始语料库,正确率约为27.03%。

  • 任务型

      测试代码仍然使用上述代码。测试结果如下:

(1) user:帮我查询武汉到北京今天的火车票

是啊,这种天气出去玩再好不过了。

(2) user:帮我查询武汉火车站附近酒店

那很好.

(3) user:明天天气

是啊,这种天气出去玩再好不过了。

(4) user:查询明天上海迪士尼乐园余票

非常感谢你.

(5) user:查询武汉汉口站光谷未来之光的路线

它是什么样的?

(6) user:查询电脑里名为ChatterBot的文件夹的位置

今天天气真好

(7) user:查询本机操作系统类型

仙女座星系.

(8) user:帮我上网查询Talor Swift最新的一首歌叫什么名字

我叫ChatterBot。

(9) user:统计我已经问过你的文字字数

继续,问吧.

(10) user:查下明天横店影视城下午都有什么电影放映

我可以借用一杯糖吗?

 

      很明显,正确率为0。

  • 知识型

      测试代码仍然使用上述代码。测试结果如下:

(1) user:中国有多大?

别老谈钱,谈钱伤感情

(2) user:中国的首都在哪里?

吃喝睡 还有旅行。 你喜欢旅行吗?

(3) user:中国的人口有多少?

我没钱,你有钱啊?

(4) user:中国第一大岛是哪个岛?

大不列颠联合王国

(5) user:中华人命共和国在哪一年成立?

1963

(6) user:安徽省省会是哪个城市?

大不列颠联合王国

(7) user:英国由哪几部分组成?

我对你的感情,是人类和bot之间独有的信任和友谊你可以把它叫做爱。

(8) user:第一个登上月球的人类叫什么名字?

我叫ChatterBot。

(9) user:什么是图灵测试

爱, 在我的理解里,是对他人的接受,包容和理解。同时,也是对这个世界的和自己的接受包容和理解。

(10) user:winter的中文意思是什么

吃喝睡 还有旅行。 你喜欢旅行吗?

 

      显然,正确率仍然为0。

  • 数学和时间问题

      下面给出测试代码:

# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
chatbot = ChatBot("Math & Time Bot",# 设置logicAdapter用以处理时间问题和数学问题logic_adapters=["chatterbot.logic.MathematicalEvaluation","chatterbot.logic.TimeLogicAdapter"],# 设置输入输出Adapterinput_adapter="chatterbot.input.VariableInputTypeAdapter",output_adapter="chatterbot.output.OutputAdapter"
)
chatbot.set_trainer(ChatterBotCorpusTrainer)
# 使用中文语料库训练它
chatbot.train("chatterbot.corpus.chinese")
lineCounter = 1
# 每次用户执行一次循环
while True:try:print(chatbot.get_response(input("(" + str(lineCounter) + ") user:")))lineCounter += 1# 按ctrl-c 或 ctrl-d 键以退出except (KeyboardInterrupt, EOFError, SystemExit):break

      下面给出测试结果:

(1) user:4+9=?

4 + 9 = 13

(2)  user:四加九等于多少

The current time is 09:32 PM

(3) user:现在什么时间

The current time is 09:33 PM

(4) user:1-1/2

( 0.5 ) = 0.5

(5) user:(1-1)/2

0.0 = 0.0

(6) user:3乘以5=

The current time is 09:33 PM

(7) user:What time is it?

The current time is 09:33 PM

(8)  user:小明以1m/s的速度跑10秒,距离为多少米?

The current time is 09:35 PM

(9) user:2^8

( 10 ) = 10

(10) user:2^3=

8

 

      可以看到正确的结果为(1)(3)(4)(7)(10)正确率为50%。

      现在整体看下来测试结果并不理想,但也有可能是因为中文语料库资源太少所以才这样。那么我们再测一下英文吧。

  • 英文闲聊

      测试代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
chatbot = ChatBot("myBot")
chatbot.set_trainer(ChatterBotCorpusTrainer)
# 使用英文语料库训练它
chatbot.train("chatterbot.corpus.english")
lineCounter = 1
# 开始对话
while True:try:print(chatbot.get_response(input("(" + str(lineCounter) + ") user:")))lineCounter += 1# 按ctrl-c 或 ctrl-d 键以退出except (KeyboardInterrupt, EOFError, SystemExit):break

      测试结果:

(1) user:hello

Hi

(2) user:What's your name?

I am still young

(3) user:How old are you?

Who? Who is but a form following thefunction of what

(4) user:Where are you come from?

A man in a mask.

(5) user:Are you a boy?

Yes I am.

(6) user:Do you have a girlfriend?

i certainly have lost many friends over theyears.

(7) user:OK.Do you like dogs?

not especially. i am not into violence.

(8) user:Do you like sports?

not especially. i am not into violence.

(9) user:you are handsome

you are crazy

(10) user:It's a nice day today

only to other robots.

 

      从上述结果来看,我们的机器人回答合适的只有(1)和(5),正确率20%。

  • 英文任务型:

      仍以上述代码进行测试。

      测试结果如下:

 

(1) user:Inquire about the weather tomorrow

do you think thesouth was right?

(2) user:Pleasebook me a ticket from Hefei to Wuhai tomorrow

i prefer to nothurt your feelings.

(3) user:Checkthe hotel near Hefei South Station

Relationshipsare simple for me.

(4)user:Inquirey Disney Shanghai single day tickets

That's my name.

(5) user:Checkwhether the Shanghai Metro Line 1 has Nanjing West Road

Europe

(6) user:Howmany characters does "Iine" have?

Apple makeshardware and softwares to run on them. Microsft only makes OS. HP makes onlycomputers. These are just few names among hundred others.

(7) user:Helporder a Xiaomi phone from Jingdong

my favoritemovie is lord of the rings

(8) user:executethe command sudo reboot in the console

No.

(9) user:Printthe file on the desktop print.txt

andrew jackson.

(10) user:Playthe music "Heal the world"

Too much.

 

      很不幸,正确率再次为0。

  • 英文知识型

      仍使用上述测试代码。

      测试结果如下所示:

 

(1) user:Howlarge is China's land area?

vineland is anovel by thomas pynchon.

(2) user:Whichstate is Britain in?

an invitation toa burial

(3) user:Whatare the parts of England?

i'm not aphysicist, but i think this has something to do with heat, entropy, andconservation of energy, right?

(4) user:Howmany bits of an integet data in Python?

If theimplementation is hard to explain, it's a bad idea.

(5) user:Whichyear did the second world war break out?

its hard to saybut The ENIAC is regarded as the first computer. It was developed at Universityof Pennsylvania in 1946.

 

      ChatterBot再次败北,正确率为0。

      所以,综合以上各种测试,ChatterBot回答问题的正确率远低于50%,很多问题都为0。对于闲聊型问题还可以回答正确几个,但是对于任务型、知识型问题一窍不通,这应该是开源项目里没有设置相应的模块、语料库资源过少,也不能够主动上网查询。要想使其能够回答和提问基本吻合还需要大量的工作。另外,其速度也不是很理想,有的情况会有少许卡顿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19665.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊chatbot那些事

1. 生活中的chatbot ​ 现在社会,随着AI的迅猛发展,各种新技术层出不穷,大大改变了我们的生活,其中,有很多技术已经走入了我们的日常生活,比如CV领域的人脸识别 ,NLP 领域的智能助手等。本次&a…

Chatbot(五)

一、走进聊天机器人 目标 知道常见的bot的分类知道企业中常见的流程和方法 1.1 目前企业中的常见的聊天机器人 QA BOT (问答机器人) : 回答问题 1.代表:智能名服 2.比如: 提问和回答TASK BOT(任务机器人): 助人们做事情 1.代表: siri 2.比如:设五明天早上9点的闹钟CHAT BOT…

ChatGPT是什么?为何会引爆国内算力需求?

过去十年中,通过“深度学习大算力”从而获得训练模型是实现人工智能的主流技术途径。由于深度学习、数据和算力这三个要素都已具备,全世界掀起了“大炼模型”的热潮,也催生了大批人工智能企业。 大模型是人工智能的发展趋势和未来 大模型&…

ChatGPT带你轻松入门嵌入式,实现51、STM32、Arduino、树莓派、Linux各种点灯程序...

关注星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 最近两个月什么最火?我想 ChatGPT 必定算其中一个。 这东西能有多火?我之前一直以为只有在互联网等技术领域比较火,直到前不久,我们当…

OpenAI带微软市值飞升2.6万亿美元!外媒却爆两家内斗,关系微妙

来源:新智元 这轮AI热潮,简直让微软赚翻了! 就在今天,微软凭借着近2.6万亿美元的市值,成功创下了历史新高。 因为市场对AI前景的乐观情绪,本周四收盘时,微软股价达到了创纪录的水平 2021年&…

【NVIDIA】一口气了解英伟达,芯片新王凭什么是他?

英伟达公司 前言显卡市场英特尔与英伟达市场占有率比较挑战英伟达垄断地位和硬件软件融合显卡在人工智能领域的应用 转变发生的背景神经网络和英伟达显卡的关键作用人工智能领域共识英伟达核心技术覆盖的领域算力租赁服务AI云业务硬件与软件服务中国市场业务划分成长与股价 芯片…

AI助力 —— 软件开发、学习、生活

本人有幸在明明如月学长的指导下参加 AI 助力软件开发的活动,感谢明明如月学长的指导!!! 明明如月学长:CSDN的博客专家以及蚂蚁集团Java 高级工程师,大家可以去慕课网搜索解锁大厂思维:剖析《阿…

PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞

导读 近日,TiDB Cloud 发布了 Chat2Query 功能,在 TiDB Cloud 上通过自然语言提问,即可生成相应的 SQL,通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的…

双标马斯克,扬言起诉微软,打不过就威胁

兴许是两日前马斯克的“地球第一大”超级火箭“星舰”发射遇到接二连三的问题,马老板窝了一肚子火,在推特骂人。 这不,OpenAI 刚刚撕了半截,马斯克又跟 OpenAI 身后的大股东微软杠上了。马老板直接在推特上飙狠话——我要告微软&a…

【AI面试】目标检测中one-stage、two-stage算法的内容和优缺点对比汇总

在深度学习领域中,图像分类,目标检测和目标分割是三个相对来说较为基础的任务了。再加上图像生成(GAN,VAE,扩散模型),keypoints关键点检测等等,基本上涵盖了图像领域大部分场景了。 …

Python入门数据分析资料笔记-自用(纯小白入门级)

1.软件和环境安装 (1)Anaconda安装(装Anaconda的话,就不用再单独装Python了,方便小白) ① 下载与安装 参考(建议非C盘安装) 史上最全最详细的Anaconda安装教程_OSurer的博客-CSDN博客_anaco…

python中\t无法对齐问题原理解释(自用)

敲了很多字母当例子,首先要知道一个\t占4位,如果前面的字符位数不够4位就补到4位,刚好够4位就多加一个\t,这个用图表解释最清晰 字符最好不要太多,太多了,会冲出当前\t,到下一个\t了,暂时没找到…

最新商业版ChatGPT源码V4.7.1+用户付费+支付系统+AI绘画+卡密系统+推广系统

AI付费创作系统: 程序完美运行无BUG,独家开发,支持6种会员开通模式,有:"购买提问次数"或者"开通月付会员"套餐等等 套餐次数和价格可以自定义在后台进行修改 支付直接对接易支付或码支付就可以了,每个IP均…

EPLAN中如何画屏蔽双绞线

如何在EPLAN中画出如下的双绞屏蔽电缆 先画两条导线 选择对角连接线 画出双绞线 选择屏蔽 为了让屏蔽线的连接点在右边,从双绞线右边的中间点开始向左画出入图所示的屏蔽线。如果希望屏蔽线的连接点在左边,则从左边开始往右边画。这样屏蔽线的连接点…

html禁止查看图片,强看被屏蔽微信朋友圈

微信朋友圈被屏蔽了和没发朋友圈的区别是什么 区别主要从朋友圈的个人资料里是否存在个人相册这一选项: 1,朋友圈被屏蔽了是这样的(有”个人相册“但看不见照片): 2,没发朋友圈是这样的(没有“个人相册”这一栏): 扩展…

屏蔽图片的chrome插件

有时候觉得CSDN博客的广告好烦啊,还有有些看小说的网站,于是找了个屏蔽图片的插件。 效果如图: 之前博客的广告 之后: CSDN的广告有字,所以不会完全不显示,但是有很多小说网站都可以直接全部屏蔽掉…

MiniGPT-4 笔记

目录 简介 实现方法 效果及局限 参考资料 简介 MiniGPT-4 是前段时间由KAUST(沙特阿卜杜拉国王科技大学)开源的多模态大模型,去网站上体验了一下功能,把论文粗略的看了一遍,也做个记录。 论文摘要翻译&#xff1…

MOOC_AI | C01人工智能概述

00 | 写在前面 大多数课程的第一课,都会对课程内容做一个基本的介绍,其核心离不开三个方面:为什么学?学什么?怎么学?根据不同老师教学风格,可能会补充介绍发展态势,引出未来挑战与期…

普通人如何不被AI取代

今天试了试 OpenAI 的一些功能,通过主题来记录一下使用场景,发现了不少他强于普通人的地方,那么我们怎么在认知和能力方面不被他取代呢? 经验能力强于普通人 首先这两天最火的是 ChatGPT ,这个能力很适合我这种不太会…