zoukankan      html  css  js  c++  java
  • 两种开源聊天机器人的性能测试(二)——基于tensorflow的chatbot

    http://blog.csdn.net/hfutdog/article/details/78155676

    开源项目链接:https://github.com/dennybritz/chatbot-retrieval/

          它实现一个检索式的机器人。采用检索式架构,有预定好的语料答复库。检索式模型的输入是上下文潜在的答复。模型输出对这些答复的打分,选择最高分的答案作为回复。

          下面进入正题。

          1.环境配置

          首先此项目需要的基本条件是使用Python3(我用的是Python3.4),tensorflow版本为0.11.0。关于Python这里不多说,网上很多修改Python默认值的文章。后续内容我都将采用python3或者pip3指令,在Python3下进行操作。tensorflow在我测试时,过低版本或者新版本都会出现一些问题,所以建议和我采用一样的版本(因为我的电脑是AMD的显卡,所以我没有选择GPU版本的tensorflow,有条件的可以选择)。如果不是可以采用以下命令修改:

    sudo pip3 uninstall tensorflow

    sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp34-cp34m-linux_x86_64.whl

          好了,最基本的条件准备好了。

          下面我们将安装一系列的依赖包,因为里面依赖关系比较复杂,所以需要注意一下先后顺序。我们在命令行中依次输入以下指令:

    sudo apt-get upgrade python3-pip

    sudo pip3 install numpy scipy scikit-learn pandas pillow jupyter

    sudo pip3 install backports.weakref==1.0rc1

    sudo apt-get build-dep Python-imaging

    sudo pip3 install tflearn

          到这里,我们的环境基本配置好了,但是因为我是在配置过程中一个一个去解决的这些问题,中间碰到的问题也比较多,这是重新整理过的,每个人的环境也都有所差异,我也不能确保这样就完全正确。一般这里面碰到问题无非就是两种,一是缺包,二是tensorflow版本的问题,往这两方面考虑就可以解决。

          最后,检查一下这些工具是否都安装,我们开始导入数据。

          首先执行git clone https://github.com/dennybritz/chatbot-retrieval/

          然后到此链接https://drive.google.com/file/d/0B_bZck-ksdkpVEtVc1R6Y01HMWM/view(需要fanqiang)去下载数据,页面如果显示“糟糕,出现预览问题,正在重新加载”,不要管它,点击下载即可。将下载到的数据解压到刚才clone的文件夹chatbot-retrieval的data中,如图所示:

      2.训练与测试

          在chatbot-retrieval文件夹中打开终端,或者cd到该文件夹下,执行以下指令:

    python3 udc_train.py

          即可开始训练,我采用CPU训练了三个多小时,这个视个人情况而定,可以按Ctrl+Z提前结束。在GPU上训练2万次大约一个多小时。正常训练过程中如图所示:

          训练完后仍然在刚才的路径下可以执行以下命令对模型进行评估(可以跳过):

    python3 udc_test.py –model_dir=./runs/1504264339/

    其中后面的数字名称的文件夹名因人而异,不同的训练批次名称也不一样。这个名称在训练的那张截图里也可以发现。

          最后,进入我们的测试环节。

          找到chatbot-retrieval文件夹下的udc_predict.py文件,将30行INPUT_CONTEXT =后的内容改成自己想要问的内容,将31行POTENTIAL_RESPONSES = []中的内容替换成机器人的候选答案。因为这个项目没有实现一问一答的模式,每次只是给不同的答案进行打分,分数最高的那个是它的期望回答,所以下面我们都将以其回答中打分最高的回答作为标准判断正确率。仍然在chatbot-retrieval文件夹路径下执行python3udc_predict.py --model_dir=./runs/1504221361/指令进行测试。

          下面是测试情况:

    • 中文闲聊型:

          (1)INPUT_CONTEXT = "你好"

          POTENTIAL_RESPONSES = ["你好", "早上好","中午好","晚上好","好啊","好久不见","很高兴认识你","初次见面请多多指教","我不好","你是谁",]

          测试效果如图,我们将每个结果的打分筛选出来。

    Context: 你好

    你好: 0.501835

    早上好: 0.501835

    中午好: 0.501835

    晚上好: 0.501835

    好啊: 0.501835

    好久不见: 0.501835

    很高兴认识你: 0.501835

    初次见面请多多指教: 0.501835

    我不好: 0.501835

    你是谁: 0.501835

          可以看到所有回答的打分都是一样的,这其实是因为语料库采用了Ubuntu对话数据集,无法处理中文。我们再测一组中文进行验证。

          (2)INPUT_CONTEXT = "明天上午啥课?"

          POTENTIAL_RESPONSES = ["明天上午没课", "计算机图形学和形式与政策","明天上午有课吗","还没开学好不好","包子和稀饭","超市没开门","明天下雨","那一年你正年轻","时间是让人猝不及防的东西","瞎扯",]

    测试结果:

  • 相关阅读:
    测试一个纸杯需要考虑什么?
    第三十三天-rsync高级同步工具深度实战
    运维人员必须熟悉的运维工具汇总
    Mysql 高负载排查思路
    查看mysql主从配置的状态及修正 slave不启动问题
    第三十二天-rsync高级同步工具基础
    第三十一天-两个例题
    linux mail 命令参数
    第三十天-ssh key企业批量分发自动化管理案例
    第二十九天-ssh服务重要知识深入浅出讲解
  • 原文地址:https://www.cnblogs.com/wcLT/p/8608421.html
Copyright © 2011-2022 走看看