精华内容
下载资源
问答
  • 机器人对话词库

    2018-12-18 18:47:30
    机器人对话词库集合, 如有需要, 请随意下载.
  • 深入理解“用于中文闲聊的GPT2模型”项目论文部分提炼1. Improving Language Understandingby Generative Pre-Training(GPT)摘要介绍最近工作NLP的半监督学习无监督预训练辅助训练目标框架无监督预训练监督预训练...
  • 两种开源聊天机器人的性能测试(一)——ChatterBot

    万次阅读 多人点赞 2017-10-03 17:24:03
    因为最近在学习自然语言处理的相关知识,QQ小冰这个东西最近又很热,所以就试着玩了下两个开源聊天机器人,在这里分享一点小经验,希望对有共同兴趣的人能起到那么一点作用。  我主要测试了两个聊天机器人,一个是...

          因为最近在学习自然语言处理的相关知识,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 ChatterBotCorpusTrainer
     
    chatbot = 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"
        ],
        # 设置输入输出Adapter
        input_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。对于闲聊型问题还可以回答正确几个,但是对于任务型、知识型问题一窍不通,这应该是开源项目里没有设置相应的模块、语料库资源过少,也不能够主动上网查询。要想使其能够回答和提问基本吻合还需要大量的工作。另外,其速度也不是很理想,有的情况会有少许卡顿。

    展开全文
  • DeepPavlov专为开发可用于生产环境的聊天机器人和复杂的对话系统,在NLP领域进行研究而设计,并且DeepPavlov的一部分是建立在TensorFlow和Keras上的开源对话AI库。 DeepPavlov专门用于开发可用于生产环境的聊天...
  • Hubot: Github, Inc.这是一个使用最广泛的聊天机器人。由Github公司开发内部使用之后开源...Err: 这是一款基于python3 的开源Chatops 聊天机器人。 可以通过简单的python module 扩展插件,对于Lita 及 Hubot的优...

    Hubot: Github, Inc.  这是一个使用最广泛的聊天机器人。由Github公司开发内部使用之后开源贡献给社区。可以使用Coffee Script 或者Javascript(node.js) 开发扩展。用npm进行安装。

    Lita: Ruby  源自Hubot的一个Ruby 版本的Chatops聊天机器人,基本涵盖了Hubot的功能。

    Err: 这是一款基于python3 的开源Chatops 聊天机器人。 可以通过简单的python module 扩展插件,对于Lita 及 Hubot的优势在于扩展插件可以实时更新,即只要将文件放入相应文件夹无需重启, chat 服务器就能识别新的插件。这款机器人可以通过pip安装。


    Cog  这是一款2016年发布的较新较轻量级的开源Chatops聊天机器人框架。主要特点有比较完整的用户命令权限控制,可以通过管道将不同的指令组合在一起,另外它的bundle(plugin)是运行再Docker上的。便于部署和维护。并且对bundle的语言不限。


    Yetibot  这是一款用Clojure开发的Chatops 聊天机器人。 也拥有类似Cog的多命令集成功能,但并没有看到它拥有角色和权限管理功能


     

    展开全文
  • 对话机器人技术简介:问答系统、对话系统与聊天机器人 聊天机器人:神经对话模型的实现与技巧 施工中,有生之年系列: 对话系统:自然语言理解 对话系统:对话策略管理 对话系统:自然语言生成 对话系统:完整对话...
  • 而我对硬件不感兴趣,我不想去买树莓派的开发板,又没有SD卡刷Raspbian系统,我总觉得有一台linux的操作系统也可以,后来进了叮当机器人交流群,问了果然可以,于是就开使了一阵捯饬。在安装的过程中,我发现没有...

            

           在叮当的官网(http://dingdang.hahack.com)上看到,它这是如下图这样介绍叮当的,它的安装流程也是基于树莓派来写的流程。而我对硬件不感兴趣,我不想去买树莓派的开发板,又没有SD卡刷Raspbian系统,我总觉得有一台linux的操作系统也可以,后来进了叮当机器人交流群,问了果然可以,于是就开使了一阵捯饬。在安装的过程中,我发现没有基于不用树莓派的安装步骤,问了很多傻问题,所以安装成功后,就记录了一下自己的安装步骤,一方面使给自己做个笔记,另一方面如果能帮助到别人更好了。(很多东西都是从官网的步骤截图出来的,如果涉及侵权,请联系我删除,谢谢。)




    目录

    叮当-中文语音对话机器人.... 

    1.    前言.... 

    1.1.    硬件要求.... 

    1.2.    基础技能(Linux基础,python基础).... 

    1.3.    详细的参考地址.... 

    1.4.    总体结构.... 

    2.    安装dingdang-robot

    2.1.    下载dingdang-robot

    2.2.    安装Sox

    2.3.    安装TaskWarrior

    2.4.    安装PocketSphinx 离线STT引擎

    2.4.1.    安装Sphinxbase/Pocketsphinx

    2.4.2.    安装CMUCLMTK

    2.4.3.    安装 Phonetisaurus , m2m-aligner , OpenFST以及 MITLM

    3.    配置叮当

    3.1.    配置文件

    3.2.    配置usb麦克风

    3.2.1.    获得声卡编号和设备编号

    3.2.2.    配置.asoundrc

    3.2.3.    测试命令行录音播放,看看是否能正常工作

    3.3.    修改唤醒词

    3.3.1.    如果使用的是 PocketSphinx

    3.3.2.    如果使用的是 snowboy

    4.    运行叮当

    5.    安装第三方插件

     

    1.前言

    1.1. 硬件要求

    linux主机(我的是Ubuntu的工控机,用户名是gec,下面涉及到gec的都变成你们的用户名),麦克风,音响

    1.2.  基础技能(Linux基础,python基础)

    如果在按照此文安装时,安装不成功时,请仔细查看提示,若提示缺少什么再根据提示进行安装。在创建文件写入文件内容时,最后复制粘贴过去,再进行修改,有些空格或者tab键缩进不对,容易出现错误。

    搭建Python环境。在运行此python项目时,若提升缺少某些模块,则用pip命令进行在线安装,即可。

    此项目运行起来需要掌握基本的linux命令行操作及python基础即可。

    1.3.  详细的参考地址

    叮当官网:http://dingdang.hahack.com/

    叮当github上的代码:https://github.com/wzpan/dingdang-robot

    叮当github上的wiki:https://github.com/wzpan/dingdang-robot/wiki

    叮当配置列表:https://github.com/wzpan/dingdang-robot/wiki/configuration

    叮当第三方插件:https://github.com/dingdang-robot/dingdang-contrib

    叮当第三方插件wiki:https://github.com/dingdang-robot/dingdang-contrib/wiki

    1.4 总体架构

    术语解释:

    STT(speech totext) 语音转换文字,语音识别

    TTS(text tospeech) 文字转换语音,语音合成

    ASR(automaticspeech recognition) 自动语音识别

    工作模式:叮当被唤醒后,用户的语音指令先经过在线 STT 引擎进行 ASR 识别成文本,然后对识别到的文本进行技能匹配,交给适合处理该指令的技能插件去处理。插件处理完成后,得到的结果再交给 TTS 引擎合成语音,播放给用户。

    2.安装dingdang-robot

    2.1.  下载dingdang-robot

    输入命令如下

    git clonehttps://github.com/wzpan/dingdang-robot.git dingdang

    cd dingdang

    之后安装必须的pypi库

    sudo pip install --upgrade setuptools

    sudo pip install -r client/requirements.txt

    接下来创建一个.dingdang目录,该目录用于维护你的个人数据(注意是带了点的 .dingdang 目录):

    mkdir /home/gec/.dingdang

    叮当配置文件的内容拷贝下来保存为 /home/gc/.dingdang/profile.yml 。

    2.2.  安装Sox

    百度的语音合成结果返回的是 mp3 格式的音频,因此需要安装一个 mp3 播放器播放合成结果:

    sudo apt-get install sox  # 用于播放音乐

    sudo apt-get install libsox-fmt-mp3 # 添加 sox 的 mp3 格式支持

    2.3.  安装TaskWarrior

    用于日程提醒。软件源自带的版本较老,不支持时间粒度的提醒。因此需编译安装较新的 2.5.1 版本:

    cd $HOME

    wgethttps://taskwarrior.org/download/task-2.5.1.tar.gz

    tar xzvf task-2.5.1.tar.gz

    cd task-2.5.1

    cmake -DCMAKE_BUILD_TYPE=release .-DENABLE_SYNC=OFF

    make

    sudo make install

    如果提示找不到cmake 或者 uuid,则需要安装一下:

    sudo apt-get install cmake uuid-dev

    完成后创建一个 .taskrc 文件用来记录日程:

    touch /home/gec/.taskrc

    2.4.  安装PocketSphinx 离线STT引擎

    PocketSphinx 是叮当所使用的离线STT引擎,用于离线唤醒。要使用它总共需要安装如下一些程序:

    l  sphinxbase & pocketsphinx

    l  CMUCLMTK

    l  MIT Language Modeling Toolkit

    l  m2m-aligner

    l  Phonetisaurus

    2.4.1. 安装Sphinxbase/Pocketsphinx

    Stretch 已经包含了 PocketSphinx 的源,可以先装预编译的版本:

    sudo apt-get install pocketsphinx  # for stretch

    如果是 Ubuntu 系统,则应该安装另一个包:

    apt-get install pocketsphinx-hmm-en-hub4wsj

    预编译的版本包含了hmm 库 pocketsphinx-hmm-en-hub4wsj ,省去自己编译的麻烦。但这个版本没有包含 Python 的接口,所以还得拉源码构建一次。

    wgethttp://downloads.sourceforge.net/project/cmusphinx/sphinxbase/0.8/sphinxbase-0.8.tar.gz

    tar -zxvfsphinxbase-0.8.tar.gz

    cd sphinxbase-0.8/

    ./configure--enable-fixed

    make

    sudo make install

    wgethttp://downloads.sourceforge.net/project/cmusphinx/pocketsphinx/0.8/pocketsphinx-0.8.tar.gz

    tar -zxvfpocketsphinx-0.8.tar.gz

    cd pocketsphinx-0.8/

    ./configure

    make

    sudo make install

    2.4.2.     安装CMUCLMTK

    sudo apt-getinstall subversion autoconf libtool automake gfortran g++ --yes

    svn cohttps://svn.code.sf.net/p/cmusphinx/code/trunk/cmuclmtk/

    cd cmuclmtk/

    ./autogen.sh && make && sudo make install

    cd ..

     

    2.4.3.     安装 Phonetisaurus , m2m-aligner , OpenFST以及MITLM

    先下载源码:

    wgethttp://distfiles.macports.org/openfst/openfst-1.4.1.tar.gz

    wgethttps://github.com/mitlm/mitlm/releases/download/v0.4.1/mitlm_0.4.1.tar.gz

    wgethttps://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/m2m-aligner/m2m-aligner-1.2.tar.gz

    wgethttps://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/phonetisaurus/is2013-conversion.tgz

    解压:

    tar -xvfm2m-aligner-1.2.tar.gz

    tar -xvfopenfst-1.4.1.tar.gz

    tar -xvfis2013-conversion.tgz

    tar -xvfmitlm_0.4.1.tar.gz

    编译安装 OpenFST

    cd openfst-1.4.1/

    sudo ./configure--enable-compact-fsts --enable-const-fsts --enable-far --enable-lookahead-fsts--enable-pdt

    sudo make install # come back after a really long time

    编译安装 M2M

    cd m2m-aligner-1.2/
    sudo make
    sudo cp m2m-aligner /usr/local/bin/m2m-aligner

    编译安装 MITLMT

    cd mitlm-0.4.1/
    sudo ./configure
    sudo make install

    编译安装 Phonetisaurus

    cd is2013-conversion/phonetisaurus/src
    sudo make
    sudo cp ../../bin/phonetisaurus-g2p /usr/local/bin/phonetisaurus-g2p

    然后需要下载已编译好的 Phonetisaurus FST 模型以及叮当内置的词汇模型:

    • g014b2b.zip:https://pan.baidu.com/s/1o7MrWIA 下载完后放在 /home/pi/ 目录下执行 unzip 命令解压。
    • vocabularies.zip:https://pan.baidu.com/s/1kWfqP3x (备选下载地址)下载完后放在 /home/gec/.dingdang/ 目录下执行 unzip 命令解压。注意是带了点的 .dingdang 目录。

    注意如果你是在另外一台机上下载这两个文件,你可能需要使用 fstp 命令来发送文件至叮当的主机上。

    3.配置叮当

    3.1.  配置文件

    配置文件于/home/gec/.dingdang/profile.yml下(注意是加了点的 .dingdang )。每次修改,需重启叮当生效。

    robot_name: 'DINGDANG'  # 必须使用大写

    robot_name_cn: '叮当'

    first_name: '伟洲'

    last_name: '潘'

    timezone: HKT

    location: '深圳'

     

    # 是否接入微信

    wechat: true

     

    # 当微信发送语音时,是直接播放语音还是执行语音命令?

    # true:直接播放

    # false:执行语音命令(只支持百度STT,其他两种STT识别不准)

    wechat_echo: false

     

    # 除了自己之外,还能响应 echo 指令的好友微信名单

    # 如果填写 ['ALL'] 表示响应所有微信好友

    # 如果填写 [] 表示不响应任何好友

    wechat_echo_text_friends: ['小Q', 'HaHack']

     

    # 除了自己之外,还能直接播放语音的好友微信名单

    # 如果填写 ['ALL'] 表示播放所有微信好友的语音

    # 如果填写 [] 表示不播放任何好友的语音

    wechat_echo_voice_friends: ['小Q']

     

    # 当有邮件时,是否朗读邮件标题

    read_email_title: true

     

    # 当内容过长(> 200个字)时,是否继续朗读

    # true:读

    # false:改为发送内容

    read_long_content: false

     

    # 最长朗读内容(仅当 read_long_content 为 false 时有效)

    max_length: 200

     

    # 是否使用邮箱发送长内容而不是微信

    prefers_email: false

     

    # 勿扰模式,该时间段内不执行通知检查

    do_not_bother:

        enable: true # 开启勿扰模式

        since: 23    # 开始时间

        till: 9      # 结束时间,如果比 since 小表示第二天

     

    # 语音合成服务配置

    # 可选值:

    # baidu-tts     - 百度语音识别

    # iflytek-tts   - 讯飞语音合成

    # ali-tts       - 阿里语音合成

    # google-tts    - 谷歌语音合成

    tts_engine: ali-tts

     

    # STT 服务配置

    # 可选值:

    # sphinx        - pocketsphinx离线识别引擎(需训练,参考修改唤醒词教程)

    # baidu-stt     - 百度在线语音识别

    # iflytek-stt   - 讯飞语音识别

    # ali-stt       - 阿里语音识别

    # google-stt    - 谷歌语音合成

    stt_engine: ali-stt

     

    # 离线唤醒 SST 引擎

    # 可选值:

    # sphinx- pocketspinx离线唤醒                                                                                                                                          

    # snowboy-stt   - snowboy离线唤醒

    stt_passive_engine: sphinx

     

    # pocketsphinx 唤醒SST引擎(默认)

    pocketsphinx:

        fst_model: '/home/pi/g014b2b/g014b2b.fst'

     

    # snowboy 唤醒SST引擎(可选)

    #https://snowboy.kitt.ai/dashboard

    snowboy:

        model: '/home/pi/dingdang/client/snowboy/dingdangdingdang.pmdl'  # 唤醒词模型

        sensitivity: "0.5"  # 敏感度

     

    # 百度语音服务

    #http://yuyin.baidu.com/

    baidu_yuyin:

        api_key: '填写你的百度应用的API Key'

        secret_key: '填写你的百度应用的Secret Key'

        per: 0  # 发音人选择 0:女生;1:男生;3:度逍遥;4:度丫丫

     

    # 讯飞语音服务

    # api_id 及 api_key 需前往

    #http://aiui.xfyun.cn/webApi

    # 注册获取(注意创建的是WebAPI应用),仅使用语音合成无需注册

    # 然后将主板的ip地址添加进ip白名单(建议使用中转服务器的ip地址 101.132.139.80)

    iflytek_yuyin:

        api_id: '填写你的讯飞应用的Api ID'

        api_key: '填写你的讯飞应用的Api Key'  # 没看到这个说明不是注册的WebAPI应用,请改注册个WebAPI应用

        vid: '67100'#语音合成选项: 60120为小桃丸 67100为颖儿 60170为萌小新 更多音色见wiki

        url: 'http://api.musiiot.top/stt.php'# 白名单ip中转服务器(可选)

     

    # 阿里云语音

    # ak_id及ak_secret需前往

    #https://data.aliyun.com/product/nls

    # 注册获取

    ali_yuyin:

        ak_id: '填写你的阿里云应用的AcessKey ID'

        ak_secret: '填写你的阿里云应用的AcessKey Secret'

        voice_name: 'xiaoyun'#xiaoyun为女生,xiaogang为男生

     

    # 谷歌语音

    # api_key 的获取方式:

    # 1. Join the ChromiumDev group:

    #    https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev

    # 2. Create aproject through the Google Developers console:

    #    https://console.developers.google.com/project

    # 3. Select yourproject. In the sidebar, navigate to "APIs & Auth." Activate

    #     the Speech API.

    # 4. Under"APIs & Auth," navigate to "Credentials." Create a newkey for

    #     public API access.

    google_yuyin:

        language: 'zh-CN'

        api_key: ''

     

    # 聊天机器人

    # 可选值:

    # tuling    - 图灵机器人

    # emotibot  - 小影机器人

    robot: tuling

     

    # 图灵机器人

    #http://www.tuling123.com

    tuling:

        tuling_key: '填写你的图灵机器人API Key'

     

    # 小影机器人

    #http://botfactory.emotibot.com/

    emotibot:

        appid: '填写你的 emotibot appid'

        active_mode: true # 是否主动说更多点话

     

    # 邮箱

    # 如果使用网易邮箱,还需设置允许第三方客户端收发邮件

    email:

        enable: true

        address: '你的邮箱地址'

        password: '你的邮箱密码'  # 如果是网易邮箱,须填写应用授权密码而不是登录密码!

        smtp_server: 'smtp.163.com'

        smtp_port: '25'  # 这里填写非SSL协议端口号

        imap_server: 'imap.163.com'

        imap_port: '143'  # 这里填写非SSL协议端口号

     

     

    # 拍照

    # 需接入摄像头才能使用

    camera:

        enable: false

        dest_path: "/home/pi/camera"# 保存目录

        quality: 5            # 成像质量(0~100

        vertical_flip: true    # 竖直翻转

        horizontal_flip: false # 水平翻转

        count_down: 3           # 倒计时(秒),仅当开启倒计时时有效

        sendToUser: true       # 拍完照是否发送到邮箱/微信   

        sound: true             # 是否有拍照音效

        usb_camera: false      # 是否使用USB摄像头(默认是树莓派5MP摄像头)

     

     

    #######################

    # 第三方插件的配置

    #######################

     

    # 在这里放第三方插件的配置

    # https://github.com/wzpan/dingdang-contrib

    # 网易音乐

    netease_music:

        account: '你的网易云音乐手机账户' # 只支持手机账户

        password: '你的密码'

        report: true    # 是否播报即将播放的音乐

        local_path: '/home/gec/Music/'  # 本地音乐目录

        local_default: True  # 默认播放本地音乐

     

    # 天气

    # 使用心知天气的接口

    #https://www.seniverse.com/

    weather:

        key: '你的心知天气  key'

        location: '北京'

     

    #简单的备忘插件

    #ToDo

    todo:

        file_path: '/home/gec/todo.txt'

     

    #百度FM电台

    baidufm:

        channel: 39 # 默认播放本地音乐

     

    #微博热点

    weibo_resou:

        enabled: true

    3.2.  配置usb麦克风

    3.2.1.     获得声卡编号和设备编号


    3.2.2.     配置.asoundrc

     首先创建.asoundrc 文件,打开终端输入 touch/home/gec/.asoundrc

     之后添加您选择的声卡编号,在.asoundrc文件输入如下内容

    3.2.3.     测试命令行录音播放,看看是否能正常工作。

    录音:arecord -d 3 temp.wav

    回放录音: aplay temp.wav

    3.3.  修改唤醒词

    叮当默认的唤醒词是“叮当”(DINGDANG)(不过从2017-8-12镜像版本开始,唤醒词改为了“嘿叮当”),如果需要换成其他唤醒词,根据你选用的 STT 引擎,有不同的方法。

    3.3.1.     如果使用的是 PocketSphinx

    • 在 profile.yml 配置文件中修改 robot_name 和 robot_name_cn 配置项;
    • 编写一个 keyword.txt 文件,包含至少两个名字的全拼:

    DINGDANG

    ROBOT

    其中 ROBOT 替换为你需要的机器人名字的全拼。

    • 到 lmtool 里上传你刚刚创建的 keyword.txt 并编译成模型。
    • 把得到的 .dic 文件和 .lm 文件分别重命名为 dictionary 和 languagemodel,替换 /home/pi/.dingdang/vocabularies/pocketsphinx-vocabulary/keyword 下的同名文件。
    • 重新运行 dingdang ,看看新的唤醒词灵敏度如何。如果不理想,换成别的唤醒词。

    3.3.2.     如果使用的是 snowboy

    • 到 https://snowboy.kitt.ai/ ,训练你自己的模型;
    • 下载模型并上传到树莓派中,存放的路径可以随意,比如 /home/.dingdang/snowboy/my-model.pmdl ;
    • 修改 profile.yml 中 snowboy 的 model 的路径为你训练好的模型的路径。

    要注意的是,snowboy 的唤醒词最好选择更多人贡献的语音,这样可以得到更为平均的唤醒模型。成熟的商业音箱的唤醒,是针对某个唤醒词,同样的麦克风环境,录入成百上千个语料,进行训练的结果。所以效果会好很多。如果只用自己录制的几个样本作为训练样本,识别率和唤醒率都不会很理想。

    4. 运行叮当

    cd /home/gec/.dingdang

    python dingdang.py

    项目启动后,叮当会说,xx,我能为您做什么?

    使用:通过 叮当 唤醒。唤醒后会有滴一声的提示,在此提示后可以进行问问题。第二声表示结束监听输入的语音。

    5. 安装第三方插件

    如果要用到叮当的技能,则要执行此步骤。

    叮当机器人的用户贡献插件,插件列表如下图所以。更详细内容请看官网说明及使用,网页链接https://github.com/dingdang-robot/dingdang-contrib/wiki。

     

    安装

    cd /home/pi/.dingdang

    git clonehttp://github.com/dingdang-robot/dingdang-contrib contrib

    pip install -rcontrib/requirements.txt

    使用

    使用哪个插件,需要在相应的网站注册并创建应用,获得ak_id,ak_secret 或者相应的API key,并在配置文件profile.yml 增加上要使用第三方插件的配置。



    展开全文
  •  这是一个使用最广泛的聊天机器人。由Github公司开发内部使用之后开源贡献给社区。可以使用Coffee Script 或者Javascript(node.js) 开发扩展。用npm进行安装。Lita: Ruby 源自Hubot的一个Ruby 版本的Chatops聊天...

    • Hubot: Github, Inc.  这是一个使用最广泛的聊天机器人。由Github公司开发内部使用之后开源贡献给社区。可以使用Coffee Script 或者Javascript(node.js) 开发扩展。用npm进行安装。

    • Lita: Ruby  源自Hubot的一个Ruby 版本的Chatops聊天机器人,基本涵盖了Hubot的功能。

    • Err: 这是一款基于python3 的开源Chatops 聊天机器人。 可以通过简单的python module 扩展插件,对于Lita 及 Hubot的优势在于扩展插件可以实时更新,即只要将文件放入相应文件夹无需重启, chat 服务器就能识别新的插件。这款机器人可以通过pip安装。



    • Cog  这是一款2016年发布的较新较轻量级的开源Chatops聊天机器人框架。主要特点有比较完整的用户命令权限控制,可以通过管道将不同的指令组合在一起,另外它的bundle(plugin)是运行再Docker上的。便于部署和维护。并且对bundle的语言不限。



    • Yetibot  这是一款用Clojure开发的Chatops 聊天机器人。 也拥有类似Cog的多命令集成功能,但并没有看到它拥有角色和权限管理功能


    2. 应用实例






    以上各项目都有其长处和短处,选择需根据自身需求和团队技能偏好来设定。








    展开全文
  • python开源聊天机器人Getting into Machine Learning and AI is not an easy task. Many aspiring professionals and enthusiasts find it hard to establish a proper path into the field, given the enormous ...
  • 基于开源语义理解框架 Clause 实现聊天机器人

    千次阅读 多人点赞 2020-10-11 19:32:57
    那么,中文有没有优秀的聊天机器人开源框架呢? 这就是答案 Chatopera Language Understanding Service,Chatopera 语义理解服务 https://github.com/chatopera/clause Clause Quick Start Guide / Clause 快速开始...
  • 叮当是一款可以工作在 Raspberry Pi 上的开源中文语音对话机器人/智能音箱项目,目的是让中国的Hacker们也能快速打造个性化的智能音箱
  • wukong-robot 是一个简单、灵活、优雅的中文语音对话机器人/智能音箱项目,目的是让中国的 Maker 和 Haker 们也能快速打造个性化的智能音箱。wukong-robot 还可能是第一个开源的脑机唤醒智能音箱。 Table of ...
  • 深度学习应用实例--对话机器人--简介 对话机器人按功能分类 单轮会话场景:QA形式,一问一答,标准答案只有一个,相似问句会有很多个。   多轮会话场景:基于意图(intents)和实体(entities)识别,预先...
  • Rasa中文对话机器人????入门-上篇 0x00. Rasa环境 0x01. Rasa Demo Bot 0x02. Rasa X 0x03. 天气查询对话机器人 0x04. 参考资料 0x00. RASA对话机器人???? 1. 虚拟环境创建 conda create -n rasa python=3.6 ...
  • 聊天机器人tensorflow

    2018-01-19 16:17:47
    python3, tensorflow >= 1.3 简单的英文聊天机器人基于深度学习seq2seq, 可以直接跑,结果不是很准确
  • A chatbot framework written in Go. All configurations are made in YAML files, or inside scripts written in your favorite language.
  • 这使开发人员可以轻松创建聊天机器人并自动与用户进行对话。 有关 ChatterBot 背后的想法和概念的更多详细信息,请参阅流程图。 ChatterBot 的语言独立设计允许它被训练说任何语言。 此外,ChatterBot 的机器学习...
  • 【小贝出品】定制你的对话机器人 - 基于RASA搭建 源代码 Hands on Setting Up Develop Environment Open Custom Connector MoreConcept 工程上的处理 Tracker Store Event Broker Model Storage ...
  • 智能多轮对话机器人案例剖析(附源码) 三个完整案例,体验式教学; 一套开源框架,所学即所用;
  • ChatterBot是一个Python库,可以轻松...这使开发人员可以轻松创建聊天机器人并自动与用户进行对话。本文通过阅读chatterBot官方文档,以及阅读源代码,分析出ChatterBot的结构,画出类图。并成功在本地进行实验测试。
  • 项目 ...实现问答的脚本 // 通知展会 // Entry + __kickoff_notifyexhibition - {@__main_1} // Main-1 // "A....// 怎么有我号码,谁啊,什么,做什么,哪里的,你好) -->...// B....
  • PHP的聊天机器人

    2018-03-07 11:36:24
    BotMan 一个轻松创建聊天机器人的PHP库,旨在简化为多个消息平台开发创新机器人的任务,包括Slack, Telegram, Microsoft Bot Framework, Nexmo, HipChat and Facebook Messenger
  • 关于对话机器人,你需要了解这些技术
  • 开源任务式问答机器人框架系列--DialogflowDialogflow创建一个实例创建意图实体添加总结 Dialogflow Dialogflow,其前身为API.ai,后来被谷歌收购, 其框架是基于谷歌云的自然语言理解。集成在SMS,Webchat和电子邮件...
  • 以Hubot为例,这是GitHub在5年多前开发的一套用于管理GitHub自己的软硬件的机器人,中间历经了自用、开源、重写再开源三个阶段,现在俨然成为GitHub上最火热的项目之一: 在过去的5年多时间中,其宣传相比DevOps、...
  • 摘要:使用华为云EI智能机器人技术,从0到1开发一款开源知识问答机器人。前言最近有幸参与了开源开源问答机器人的知识库编写,碰巧看到华为云也有类似的智能机器人,抱着试一试的心态,我开始了EI智能机器人的体验...
  • super-robot a robot based on Alice Bot, which can chat with people and handle the business. Features Alice Bot for chatting. Customizing corpus by AIML1.0. ...Ability Bot int...
  • 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文来自专栏语言、...由于用户的需求较为复杂,通常情况下需分多轮互动,用户也可能在对话过程中不断修改与完善自己的需求,任务型机器人需要通过询...
  • 叮当-中文语音对话机器人 ...叮当是一个可以在Raspberry Pi上的开源中文语音对话机器人/智能音箱项目,目的是让中国的Hacker们也能快速打造个性化的智能音箱。 目录 特性 叮当包括以下众多特性: 功

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,152
精华内容 2,460
关键字:

中文开源对话机器人