精华内容
下载资源
问答
  • 图灵机器人知识(语料),文件为Excel文件对话模板,用户按需下载即可。。。。。。。。。。。。。。。
  • 机器人知识几万条问答记录,聊天机器人学习资料,聊天对话,图灵机器人对话,简单的对话数据库,exl对话聊天数据库
  • 聊天机器人

    2016-08-01 11:29:04
    功能:自动聊天;机器人回答归属地;机器人帮你计算;可以管理机器人知识;可以教机器人学习,人工智能学习的例子
  • 小信子中文理解 API 云端服务平台提供二种接入方式: ...在上述所有连接与设定完成后,接下来我们可以为自已的机器人创建自属问答知识,让机器人能展现独有特色。 以微信公众号问答机器人为例设定...
    小信子中文理解 API 云端服务平台提供二种接入方式:

    针对程序员开发者:请参阅 小信子中文理解 API 云端服务接入指南
    ● 针对非程序员用户:请参阅 零基础创建专属微信公众号问答机器人

    在上述所有连接与设定完成后,接下来我们可以为自已的机器人创建自属问答知识库,让机器人能展现独有特色。

    微信公众号问答机器人为例设定自属知识库流程如下图所示:
    85b1b1b5a9dd3733e06c8ff6a527bbe338e60a88

    本创建指南在描述从 [ 登录小信子公众号机器人管理 ] 到 [ 上传文档 ] 的操作流程

    准备工作:

       若您是程序员开发者:完成 小信子中文理解 API 云端服务接入流程
       若您是非程序员用户:请先完成 小信子微信公众号问答机器人接入流程

    创建流程开始:

    1、打开小信子API服务开发者主页 https://www.aixxz.com/
       若您是 微信 用户:请右上角进入 微信平台登录
    549b3127ec54d149f0a1291a5ca9eccf74ae3c08
       若您是 程序员 开发者:右上角进入 开发者登录
    6c1d4ef048f0f1a843ec2872eb9c79da53129beb

    2、本文以微信公众号管理页为例,输入账号密码,输入阿里云应用ID,至于如何取得阿里云应用 ID 请参阅
      ● 程序员开发者:请参阅 小信子中文理解 API 云端服务接入指南
       程序员用户请参阅 零基础创建专属微信公众号问答机器人
    ca98939f82fd841954b51612bd50c5413983d7ae

    3、点击“登录”
    ef51da54df52995ba0e9c4c716f86bef8be6f895

    4、点开“自选问答”
    a302aedceb4e36a1197d087237d7d818c544fc94

    、下载范例文件(https://www.aixxz.com/doc/sample_text_files.zip
    056d8e867b0fb33d0bb0346e0d3d6b051e1f3d6f

     、解压并用记事本打开”自选问答(文本)t2.txt”
    b70fbd8e68ba5fb3a18f2a6ac714384ad9043756

    7、依文件格式说明开始建立自属问答文本
      文本第一行为宣告(必须要有):name:questions,ver:t2
      name:questions 表示本文档为问答文档
          ver:t2             问答格式为 t2 格式
    52a49fbcfdca159fcacd5628142074d86e603383

    、开始填上第一个问答句,例如以建立摄影微信公众号为例
      我们假设订阅户询问”镜头上面的USM/STM区别?”则机器人就回答”表示自动对焦驱动马达的类型。包括STM步进马达和USM超声波马达等。”,则文本格式填写如下:
    ca908e8ef3e5fccde2ac9d7048f432686c547f0b

    、使用另存档案存档(记得要存成UTF-8格式)
    ba4cf5ab9f60522ba1c897c545af49ae0a9cca33

    10上传文本文件试,点击〔选择文件〕→选取”自选问答(文本)t2.txt”点击〔提交〕
    8562c69a55f408f26306785f7973559c6864ab43

    11、当后台处理完文档回传如下讯息,表示上传成功:
    (新增功能)文档上传后,系统会智能处理常用相似句句型。
    37cf01d5c70da40065b09d261b837b6914684dff

    12、让我们马上测试一下机器人,打开微信公众号机器人,询问”镜头上面的USM”,机器人正确回答问题
    70e07994790a55323733e36e7de07acf9ebdf4d8

    13 用不同问法看看” 镜头上面的USM及STM有什么区别”、” 镜头上出现USM或STM有什么区别”、”USM或STM分别表示什么?”,发现 ”USM或STM分别表示什么?” 回答错误,下一步骤我们来解决这问题。
    651737f3b9bea49f8b61b81765f990eccf9dc618

    14打开”自选问答(文本)t2.txt”,再问句后面我们用分号 ”分开,后面加上上一步骤回答错误的问句也就是相似句:”USM或STM分别表示什么?”
    e93deaf1646b750312e17d333139e6905979dd92

    15、按照步骤10 ,重新上传文本文件,再测试一下机器人看看,可以发现回答正确了,相似句可以不断的往后添加,只要以分号”、”分开即可。
    cca00b45a293c4d7332d0b628a2746adc447ca40
    相似句填写要点:
    1、例如:“什么是曝光?”、
    “曝光什么?”→
    句中的组成元素相同[什么][是][曝光],只是前后位置不同,这只要填一句即可。
    2、
    例如:白羊座女生的特点女白羊的特性句中的组成元素[白羊座][女生][的][特点]和[女][白羊][的][特性]已不同,此时须要两句都填。

    16、假如我们需要提供图片连结以及其他网站连结还有列表,该如何做呢?
    打开”自选问答(文本)t2.txt”,依照”自选问答文本格式 2 说明””Q:问句2”说明如下,继续添加问答句,记得在每个标题前添加”[”符号,即可在微信上显示列表。

    Q:问句2
    [标题1
    说明文1.............
     img:图片地址1
     url:网页地址1
    [标题2
    说明文2.............
     img:图片地址2
     url:网页地址2

    实际应用如下图所示:
    b564dd4e59ad7ca4cae41b943cbfb89eb0a85514

    17、让我们打开微信公众号机器人测试一下机器人,询问”都有什么构图方法”,机器人正确显示出列表。
    3dd55bdfad4adc6c9de9bb35993976adeaf7fffb

    点选”S形构图”测试网页 url 连结是否有效
    6d23544c7b20db7f2015b4c6bc5247a95601c2b1

    18、还有另一种问答句格式”Qr:”,主要用于随机取 n 个答案显示,可以应用在吉祥话、祝褔话上,例如:
    c8bedcf8dfef07c86b1d61b0d35725ae3e9a26f9

    19、
    测试微信公众号机器人将随机取答案呈现,如下图:
    9d773928ba2a0987874bb62b0946bde4911ec64e
     
    20、当碰到一些专有领域的专词时,可以参考"专用词汇文本格式说明"制作专词文档解决,如下图:
      文本第一行为宣告(必须要有):name:keywords,ver:t1
      name:keywords 表示本文档为专词文档
          vert1             专词格式为 t1 格式
    fef74d0b91fb2f5a18c713ba43572c25338f487d

    应用范例如下图:
    b35c4ca7d8b50559f3e3104f3b4cfeae5f0145a8

    20、 group的使用,有时问答资料量很多,或公司底下有不同部门分居各地,分别管理自已的问答资料,若要汇整成一个文档资料上传,日后要增修资料,会有难度 管理不易 为了避免文档过大过长,分类、分部门管理文档是有必要性的工作,此时 group 就有很大的用处,以星座资料为例,可以以 group 切分成三份文档分开上传管理,如下图所示:
    cb3b97e7f0f37a06b9a0e0d96d76d3e0213b2680

    2df6e424dfb80e6b37b3d9c8d4e802a0d98254e6

    4519cd5378d13148b98bd930fa8c537ffb0add18

    21、如果要查询已上传的资料,可使用 读取已有自选问答(文本).txt 如下图所示
    0a3dcccd352e4b173ae6bf8a2e986322c4ccc348

      打开文本第一行为宣告(必须要有):name:getdata,ver:t1
      name:getdata 表示本文档为查询资料用
          vert1      专词格式为 t1 格式
          group:分类名  使用 group 则只取该分类资料,不使用则取全部资料
    200a0648f5f108134190e212ef1d37d300270121

      上传文档后管理则取出该类资料,如下图所示:
    65f2c9acdd85611d0823b618d718f16a76004b9e

    核心理论教程:
    汉字基因十节课
    更多内容请上官网:
    www.xiaoxinzi.com
    论坛:bbs.aixxz.com
    展开全文
  • FatBotSlim 另一个 Python IRC 机器人... 特征: 异步 多服务器 易于使用的插件系统 ... 这个非常简单的机器人回答Hello ! 当有人在公共信息中说!hello时。 使用fatbotslim.cli帮助程序还为您的机器人提供了一个
  • 大学毕业一年,目前在一家小型公司进行人工智能聊天机器人的对话设计工作。平时 主要使用的智能对话工具主要包括 Google 的 Dialogflow,以及 AIML 文件编写两种方式。 今天首先想写的是 Dialogflow 这种智能聊天...

    工作快一年,平时做的并不是什么太有技术含量的事情,但突然有一天突发奇想,很想把工作中的一些东西记录下来,于是打算开始在这里记录,当做平时的工作总结吧。

    大学毕业一年,目前在一家小型公司进行人工智能聊天机器人的对话设计工作。平时 主要使用的智能对话工具主要包括 Google 的 Dialogflow,以及 AIML 文件编写两种方式。

    今天首先想写的是 Dialogflow 这种智能聊天设计工具。

    Dialogflow 的基本用法:一问一答,Training Phrase 和 Response

    Dialogflow 是一个设计智能聊天对话的网站,使用时需要连接外网。且普遍用于英语对话的设计。

    Dialogflow 的使用方法十分简单,主要包括 Agent、Intent、Entity 三部分。Agent 就是存放同一个话题中所有对话的域,可以统一导出成 Json 包的形式保存。一个 Agent 中的对话语句以 Intent 的形式训练出来。每个 Intent 相当于一条语句,对应聊天者的一个意图,训练对话语句时,首先需要新建一个 Agent,Agent 的名字之能是英文数字或下划线,且不能有空格。紧接着我们新建一个 Inent,Intent 名称设定的要求更宽泛一点,它允许有空格。然后,在 Intent 中的 Training Phrase 中输入我们预先设定的可能会说的话,并可以在下方的 Response 一栏中写出对应的回答,如,在 Training Phrase 中输入‘Hello’,按下回车,就会形成一条预定输入,然后在 Response 中输入‘Hi’,这样,当我们在页面右边的 train 面板中输入‘Hello’时,界面就会返回‘Hi’,这就相当于完成了一次简单的对话。

    Response 中,一条语句就是一个回复,如果在 Response 中设定了多个语句,那么在输出时,就可以随机出现 Response 中的一句作为回复输出。

    Entity:关键词匹配实现泛化

    当然,如果每次对话都需要精确地将每一句可能会说到的话都列举出来,那么显然智能的含量就会大打折扣,于是,在 Dialogflow 中,就存在一种最重要的训练方式,使用 Entity 泛化。

    我们可以预先在最左侧 Entity 一栏中添加我们所需的聊天单词的分类。如,我们可以添加一类叫做 sports 的 Entity,并在其中加入 basketball、 football、 baseball 等运动单词。之后就可以去 Intent 中进行训练。利用 Entity, 我们就可以只需对某一类句式进行训练,只需一句话,就可以对多句话做出回答。如,‘I like basketball’。按下回车后,系统会自动识别 basketball 这个单词,并关联出其所在的 Entity 显示在下方。这样,之后如果在 右侧 Train 一栏中输入‘I like football’ 或 ‘I like baseball’ 等,都可以输出这个 Intent 中的 Response 的内容。当然,在训练时,有时系统并不会自动显示出语句中相关单词带有的 Entity,这时,我们可以自己设定,只需要在训练成功的语句上双击相应的单词,界面上就会自动显示可以添加的 Entity 分类,点击选择就可以了。

    Dialogflow 中为我们预先提供了很多常用的 Entity,如时间,数字,日期等,这些 Entity 在使用时,无需我们手动添加相应的 Entity 内容,系统会在你输入相关单词进行训练时,自动识别并为你添加训练语句中带有的预设 Entity。

    Entity 在设定时,每一个 Entity 都对应一个 value,这是 Entity 在系统中被识别使用的值,且可以在 Response 中返回和继承,我们可以在 Response 中使用 $+Entity 的名称来拿到并输出 Entity 的值,同时,为了提高 Entity 匹配到的几率,更大程度上解决有歧义的单词的输入麻烦,也为了满足多种情况下相匹配同一个 Entity 的需求,我们在设定 Entity 时,可以在后面设定很多个同义项,这样,在匹配 sport 这个词时,我们不仅可以输入 basketball,同时也可以输入 sports,以方便我们的使用。

    另外,一个 Intent 中包含的 Entity 的数量不可过多,我曾经因为要对相应的单词数量进行识别以确定语言等级,所以计划给每句话的主谓宾都加上了 Entity,由此就会导致系统紊乱,出现匹配不到或匹配错误等问题。

    Follow-up:为相关语句添加上下文

    在 Dialogflow 中还有一个上下文的设定,就是 Intent 界面中最上面的 Follow-up。我们可以在主界面点击 Intent 为他添加 Follow-up Intent,也可以在 Intent 语句训练界面直接在 context 中输入 相关上下文的 Intent 的名称。这样,我们在进行父 Intent 的对话时,匹配到后就可以直接进入 Follow-up 对话中继续进行下面的对话,且 Follow-up Intent 尤其生效的生存周期,也就是 Context 前面显示的数字,在这个时间段内,我们的对话将一直保持在当前的对话环境中,不会匹配到别的 Intent 去。

    在添加 Follow-up 时,会有许多个选项,我们可以选择普通 Intent,也可以使用 Yes 或 No 判断,从而实现语句树形分支。当对一个问题的回答因 yes or no 不同时,可以走向不同的 Follow-up Intent。

    Action:扩展用标记文本输入

    在 Intent 中还有一个 Action 的空档,在我的工作中,Action 主要被我用于填写一些标识符以供程序扩展,连接实现外部相应的功能,至于其更多的用处,我并没有使用到。

    Dialogflow 中预置的 Agent

    Dialogflow 中,系统为我们预先训练好了许多个实用 Agent,有闹钟,Small-talk 等等,有时,我们可以直接使用这些 Agent 用于我们自己的对话,方便快捷。

    当然,在训练 Intent 时我们也会发现,在每个 Intent 中都有内置的 Small-Talk 开关,如果想在这个 Intent 中也可以匹配到 Hi,Hello 等日常打招呼用语时,我们便可以打开此开关。

    Dialogflow Agent 的数量限制

    Dialogflow 的使用需要用 Google 账号登录,且每个账号最多可设置十个到十二个 Agent,所以,如果你想真对多个不同的话题进行聊天,为了创建多个 Agent,你就需要多个 Google 账号,或申请 Google Cloud 空间了。

    Dialogflow 匹配阀值的设置

    在 Dialogflow Agent 的设置界面,我们可以根据需要设置相应的匹配阀值,来调节匹配的概率和精确度。

    Dialogflow Agent 的导出和导入

    Dialogflow 中的 Agent 可以导出为一个 Json 包,同时也可以将预置的 Json 包导入到 新的 Agent,同样在设置栏中可以找到。

    更多

    在我看来,Dialogflow 更多的是供个体开发者或普通用户体验或开发,并不适用于太大规模的软件开发使用。匹配的精确度根据个人的需求会有很大的不同,且由于匹配和训练都是在网页上完成,且需要连接外网,在实际应用中会根据网络状况存在不同程度的延时,影响开发和使用。

    当然,Dialogflow 自己的官网也有相应的解释说明文档,使用时可以参考查看。

    如有读者,感谢阅读。

    展开全文
  • 目前,人工和客服机器人的协作,已然普及了,可以实时的依据客户的问题辅助人工回答。因此,一个完善的客服机器人的知识是对人工的一大帮助。那么,客服机器人是如何分辨客户的问题的呢?我们应该如何完善客服...

    知识库是客服机器人的核心,机器人知识库就是基于知识的系统,不同于一般应用程序将信息隐含地编码在程序中,它可以将实际问题的对应知识显式地表达,并组成一个相对独立的程序主体,有利于实际问题的快速准确匹配。

    目前,人工和客服机器人的协作,已然普及了,可以实时的依据客户的问题辅助人工回答。因此,一个完善的客服机器人的知识库是对人工的一大帮助。那么,客服机器人是如何分辨客户的问题的呢?我们应该如何完善客服机器人的知识库呢?

    客服机器人的知识库是什么?应该如何完善

    1、自然语义理解

    客服机器人是通过句法分析、上下文理解、缩略语识别、模糊推理等语义技术让企业的客户能以最自然的方式表达自己的意思,并能够获得其最想要的精准信息。

    2、全渠道统一智能服务

    智能机器人客服通常能够覆盖包括网页端、APP、微信、微博、H5等多个咨询渠道,并且不同渠道之间能够实现信息共享,包括知识库信息共享和用户咨询信息共享,客服能够通过一个统一的后台管理来自不同端口的用户咨询,同时用户的咨询记录能够同步到各个渠道。

    智能客服机器人的知识库可以再日常工作中,自主完善储备问题,那么前期应该如何完善呢?

    词库管理,词库包括业务词、同义词、禁用词和敏感词这四类不同的特殊词汇,用于帮助客服机器人提高匹配度及分析网站咨询的词汇热度和习惯。

    1、业务词

    业务词的设置目的是为了让机器人能够更顺利地匹配到答案,因为在客户咨询的时候,知识库将问题进行匹配通常是将客户的问题断成多个词汇,再去匹配知识库的问题及获取答案。

    2、同义词

    我们知道机器人在不能完全匹配到客户某个问题的情况下会匹配到相似问题推荐给客户,这是为了配合不同客户的提问习惯。同义词的目的也是这样,由于每个人说话的方式和用语不一样,很多时候不同的词语都是为了表达相同的意思,所以为了是机器人更好地匹配知识库,我们将意思相近的词语设置成一个标准问题的同义词。

    3、禁用词

    禁用词目的就简单得多,是为了屏蔽一些访客的不当言辞,有些访客会言辞不文明或使用一些国家规定的禁用词,这种情况下我们我们通过设置好的禁用词提示访客更换提问方式。

    4、敏感词

    敏感词属于企业比较关注的一类词语,目的是为了了解网站的咨询热词,可设置一些想要关注的词语看看访客咨询机器人的时候提到这些你设置的敏感词的都有哪些、提及次数是多少等,比如:投诉,退换货,预约,退款这些等等。

    客服机器人的知识库是什么?应该如何完善

    智能客服机器人自主学习包括4个方面的内容:待优化问题、待回答问题、含敏感词问题和含禁用词问题。

    1、待优化问题

    支持搜索在某段时间内系统自动统计出有多少对话是已经给出访客答案但是访客评价为不满意的问题,统计的数据中不仅展现了访客的真实问法,还直接给出了匹配到的问题标题,匹配的这个问题的具体的哪一个问法,给出的答案等,所在的知识库和目录,同时可以直接点击展开访客咨询的对话详情,方便联系上下文看看访客为什么对这个答案不满意,从而进行优化完善。

    2、待回答问题

    统计的是未命中问题,就是客户提出的问题,机器人在知识库中找不到匹配答案,这里根据时间顺序罗列出来,方便我们直接补充作答。

    3、含敏感词问题

    这里是用于统计咱们在之前“词库管理”中设置的敏感词被访客提及的热度情况,比如我设置了”投诉“这个敏感词,这里就会帮你统计出来看看访客有多少人在咨询的时提到了”投诉“的。

    但一个敏感词很可能在多个问题中,所以会把含有相同敏感词的问题放在一起,以数字标注的形式告诉你这个敏感出现在了几个问题里,点击可以展开显示全部的访客问题和对应的每个问题的对话详情前后文。

    4、含禁用词问题

    这里是用于统计咱们在“词库管理”中设置的禁用词汇被被提及的次数,和敏感词一样相同的词语的问题会合并到一起,可以点击展开详细的每个问题,和每个问题的对话内容。

    展开全文
  • AppleQueryChatBot:一个聊天机器人回答有关Apple产品的问题。 使用chatterbot对chatbot进行了培训,并使用tkinter通过GUI实现了chatbot
  • 面向机器人学习的对话知识构建方法 摘 要本文提出了一种基于模板自动生成的面向机器人学习的对话知识构建方法并且实现了一个基于这种知识构建方法的对话系统该构建方法的核心思想是利用句子中的词性根据句子中...
  • 机器人工程

    2015-06-14 02:55:39
    机器人不但将在工厂、实验室与人一起工作,还将在车站、机场、码头、交通路口为人们指引路径、回答问题、帮助行人。机器人还将步入千家万户,为老人端茶送水,护理伤病人等等。未来机器人将会越来越广泛地进入人类...
  • 图灵机器人

    2016-06-02 09:57:13
    在bean包中封装了四个机器人毛毛的回答数据类4.实现聊天记录的存储功能。1.完成网络访问 首先需要第三方资源,图灵机器人的网址:http://www.tuling123.com/ 可以设置自己的专属机器人。 下

    最近做了一个和机器人聊天的App,还没有全部做完,我先整理出基本的功能,以后慢慢加(此版本为1.0)。
    功能:
    1.实现网络访问

    2.可以和机器人进行简单聊天

    3.在bean包中封装了四个机器人毛毛的回答数据类

    4.实现聊天记录的存储功能。

    1.完成网络访问
    首先需要第三方库资源,图灵机器人的网址:http://www.tuling123.com/ 可以设置自己的专属机器人。
    下载它的API接入文档,里面有详细的请求说明,这里不赘述。
    上代码

     public static void doPost(final String massage,final HttpCallbackListner listner) {
    
     final StringBuffer sbf = new StringBuffer();
         new Thread(new Runnable() {
              @Override
               public void run() {
                  try {
                      URL url =  new URL(API_ROBOT);
                       HttpURLConnection connection =
                      (HttpURLConnection)url.openConnection();
                        connection.setReadTimeout(5000);
                        connection.setConnectTimeout(5000);
                        connection.setDoInput(true);
                        connection.setDoOutput(true);
                        connection.setRequestMethod("POST");
                        //规定访问需要“utf-8"模式
                connection.setRequestProperty("content-type","applcation/json: charset = utf-8");
                //将发送的问题,封装成一个javabean
                        SendMsg sm = new SendMsg();
                        sm.setKey(API_KRY);
                        //不用这种方式了
                      String Info = URLEncoder.encode(massage);
                        sm.setInfo(massage);
                        String msg =ParaseJson.convertJson(sm);
    
                   OutputStream out = connection.getOutputStream();
    
                       out.write(msg.getBytes());
                        out.flush();
                        BufferedReader br = new BufferedReader(new InputStreamReader(
                                connection.getInputStream()));
    
                       String str = null;
                        while ((str = br.readLine())!=null){
                            sbf.append(str);
                        }
    
                          str = sbf.toString();
    
                        Log.d("TAG","request message is"+str);
    
                            br.close();
                            out.close();
    
                        if (listner!=null){
                            String result = sbf.toString();
    
                            listner.onSuccess(result);
                        }
    
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
    
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    } catch (ProtocolException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        listner.onFailed(e);
                        e.printStackTrace();
                    }
                }
            }).start();
    

    2 .Json数据解析

    public static Object parseJson(String result)  {
            List<String> list = null;
    
            try {
                JSONObject jsonobject =new JSONObject(result);
                int code = jsonobject.getInt("code");
                String msg = jsonobject.getString("text");
                if (jsonobject.has("url")){
                  String url = jsonobject.getString("url");
                    if (jsonobject.has("list")){
                        JSONArray jsonArray = jsonobject.getJSONArray("list");
                        for (int i = 0;i<jsonArray.length();i++){
                        JSONObject jFather = jsonArray.getJSONObject(i);
                        String address = jFather.getString("detailurl");
                        list.add(address);
                        }
                       NewsMsg n = new NewsMsg();
                        n.setmCode(code);
    
                        StringBuilder sb =new StringBuilder();
                        sb.append(msg);
    
                        for (int k = 0; k<list.size(); k++){
                            sb.append(list.get(k));
                        }
                        msg = sb.toString();
                        n.setmMsg(msg);
                        return n;
                    }else {
                       LinkMsg l =  new LinkMsg();
                        l.setUrl(url);
                        l.setmCode(code);
                        l.setmMsg(msg+url);
                        return l;
                    }
    
                }else {
                    TextMsg t =new TextMsg();
                    t.setmMsg(msg);
                    t.setmCode(code);
                    return t;
                }
    
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

    3 .简单聊天界面的实现
    这部分代码实在太多,就捡比较重要的说,这次是仿微信界面,消息的布局分左右两种,先创建一个CheatMessageAdapter 的类让它继承BaseAdapter,然后覆写它的 getItemViewType(int position)和getViewTypeCount()方法。

          @Override
        public int getItemViewType(int position) {
            Object object = mDates.get(position);
    
            if (object instanceof ReturnMessage){
    
                return 0;
    
            }else
                return 1;
    
        }
    
        @Override
        public int getViewTypeCount() {
            return 2;
        }
    

    在getView()方法里也要进行不同判断

     @Override
        public View getView(int position, View convertView, ViewGroup viewGroup) {
            Object message = mDates.get(position);
            ViewHolder mHolder = null;
           if (convertView ==null) {
               if (getItemViewType(position) == 0) {
                   convertView = mInflater.inflate(R.layout.cheat_robot_layout, null);
                   mHolder = new ViewHolder();
                   mHolder.msgText = (TextView) convertView.findViewById(R.id.id_tvt_cheat_robot);
                   mHolder.showTimeText = (TextView) convertView.findViewById(R.id.id_tvt_timeshow);
    
               } else {
                   convertView = mInflater.inflate(R.layout.cheat_me_layout, null);
                   mHolder = new ViewHolder();
                   mHolder.msgText = (TextView) convertView.findViewById(R.id.id_tvt_cheat_me);
                   mHolder.showTimeText = (TextView) convertView.findViewById(R.id.id_tvt_timeshow);
    
               }
               convertView.setTag(mHolder);
           }else{
               mHolder = (ViewHolder) convertView.getTag();
           }
               if (message instanceof ReturnMessage) {
                   setDate(mDates.get(position),mHolder);
               }else if (message instanceof CheatMessage){
                  setDate(mDates.get(position),mHolder);
               }
            return convertView;
        }
    
       private final class ViewHolder{
          TextView showTimeText;
           TextView msgText;
        }
    
        private void setDate(Object object,ViewHolder holder) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            if (object instanceof CheatMessage) {
                holder.showTimeText.setText(sdf.format(((CheatMessage) object).getDate()));
    
                holder.msgText.setText(((CheatMessage) object).getMsg());
            } else {
                if (object instanceof ReturnMessage) {
                    switch (typeConvertNumber((ReturnMessage)object)) {
                        case 0:
                            holder.showTimeText.setText(sdf.format(new Date()));
    
                            holder.msgText.setText("出错了,我没有找到匹配的东西");
                            break;
                        case 1:  holder.showTimeText.setText(sdf.format(new Date()));
    
                                holder.msgText.setText(((TextMsg) object).getmMsg());
                            break;
                        case 2:holder.showTimeText.setText(sdf.format(new Date()));
    
                            holder.msgText.setText(((LinkMsg) object).getmMsg());
                            break;
                        case 3:holder.showTimeText.setText(sdf.format(new Date()));
    
                            holder.msgText.setText(((NewsMsg) object).getmMsg());
                    }
    
    
                }
            }
        }
        private int typeConvertNumber(ReturnMessage message){
            int n = 0;
            if (message instanceof TextMsg){
                n=1;
                return n;
            }else if (message instanceof LinkMsg){
                n=2;
                return n ;
            }else if (message instanceof NewsMsg){
                n =3;
                return n;
            }
            return 0;
        }

    未完待续,先写到这里,等1.0版本写完了,我会上传到github上,敬请期待。

    展开全文
  • NLTK是一个比较优秀的自然语言处理工具包,是我们聊天机器人需要的比较重要的一个工具,本节介绍它的安装和基本使用 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 NLTK安装 pip install ...
  • 你的题目 YOUR_SHORT_DESCRIPTION ·· 目录 关于该项目 这是开始使用的空白模板:为了避免重新键入太多信息。 搜索并替换为以下文本编辑器: Template 建于 入门 要启动并运行本地副本,请遵循以下简单步骤。...
  • “小海”集成了传感器、语音识别、语音合成、机器学习、导航与定位及视觉技术,不仅能通过其内置的知识库回答办事群众的问题,还能在与公众的沟通中进行学习,不断丰富自己的知识[3]。在2017年的机器人大会上,...
  • 数据形式为键值对,及提问回答模式。好了,假如我存储数据为10万条,那如果用户每说一句话,我要对这10万条数据逐一进行相似度匹配得分,最终远处最高得分的作为回答。我的思路是这样的,但是这样的话效率太低了。请...
  • 一个雄心勃勃的Discord机器人,可以管理新用户,建立播放器数据库并回答问题。 该项目分为三个主要部分。 首先,机器人会教新玩家,获取他们的数据,并将新玩家列入白名单。 其次,机器人回答玩家的问题。 这两...
  • 聊天宝 ChatBot是使用Python构建的基于机器学习的对话对话框... 该程序通过搜索与输入匹配的最匹配的已知语句来选择最匹配的响应,然后根据机器人与之通信的人员发出每个响应的频率,将最有可能的响应返回给该语句。
  • 多功能C#聊天机器人--含源代码

    热门讨论 2011-10-19 21:20:32
    本程序用C#语言编写,内含源代码。功能:自动聊天;机器人回答归属地;机器人帮你计算;可以管理机器人知识;可以教机器人学习
  • 聊天机器人项目

    2019-09-16 20:33:12
    基于seq2seq注意力模型实现聊天机器人 分类 根据应用目的划分 ...事先存好一个对话,系统接收到用户输入的问句后搜索对话中最为匹配的回答。这要求对话覆盖的内容情形要足够多。优点是回答质量...
  • 客服机器人的知识

    2021-07-01 14:15:04
    目前,人工和客服机器人的协作,已然普及了,可以实时的依据客户的问题辅助人工回答。因此,一个完善的客服机器人的知识是对人工的一大帮助。那么,客服机器人是如何分辨客户的问题的呢?我们应该如何完善客服...
  • 聊天机器人 2020

    2020-10-07 12:23:50
    现在已经到了2020年,时间如梭,现在企业大量使用机器人客服、外呼机器人和内部智能问答知识;知识图谱和深度学习等加快在企业软件中应用,可以说,聊天机器人的市场在快速成长。 那么市场成长的速度究竟怎么样?...
  • 需要准备的资源:图灵机器人账号...可以看到如截图所示的界面,在"机器人设定"界面可以进行机器人昵称、年龄、性别等信息的设定,在"机器人调教"界面可以教你的机器人回答特定问题,"知识"可以导入知识,增加你...
  • Python3从零开始搭建一个语音对话机器人

    万次阅读 多人点赞 2019-07-19 17:00:20
    从零开始搭建一个语音对话机器人 目录 01-初心缘由 02-准备工作 03-语音机器人的搭建思路 04-语音生成音频文件 05-音频文件转文字STT 06-与图灵机器人对话 07-文字转语音 08-语音对话机器人的完整代码 09-...
  • 之后在图灵机器人网站上登录你的图灵账号,可以看到如截图所示的界面,在”机器人设定”界面可以进行机器人昵称、年龄、性别等信息的设定,在”机器人调教”界面可以教你的机器人回答特定问题,”知识”可以导入...
  • 当我们打开微信,就会秒收到一些活跃分子的回复,有的时候感觉对方回答很在理,但是有的时候发现对方的回答其实是驴唇不对马嘴,仔细深究发现,原来对方是机器人。首先需要安装wxpy,其次需要去图灵机器人官网注册...
  • 机器人学.pdf

    2015-06-14 03:01:47
    机器人不但将在工厂、实验室与人一起工作,还将在车站、机场、码头、交通路口为人们指引路径、回答问题、帮助行人。机器人还将步入千家万户,为老人端茶送水,护理伤病人等等。未来机器人将会越来越广泛地进入人类...
  • 自主移动机器人概述

    万次阅读 2019-04-26 10:12:22
    从其他地方“借来的”...2、商用机器人:无人车、无人机、送餐机器人、导览机器人;3、消费类机器人:扫地机。 移动机器人的核心技术紧紧围绕着**“感知”、“决策”、“执行”**这三方面。 关键技术一:定位与建...
  • 机器人基础】机器人阻抗控制概念

    万次阅读 多人点赞 2019-02-28 10:14:24
    现在的机器人绝大多数基于位置控制的,比如说仓库里的搬运机器人,从规定的位置出发,到达指定位置,装货,按设计的路线移动,卸货。基于位置控制的机器人能控制位置、速度、加速度(角度、角速度、角加速度),所以...
  • Python实现微信机器人

    万次阅读 2019-06-12 13:32:05
    当我们打开微信,就会秒收到一些活跃分子的回复,有的时候感觉对方回答很在理,但是有的时候发现对方的回答其实是驴唇不对马嘴,仔细深究发现,原来对方是机器人。 首先需要安装wxpy,其次需要去图灵机器人官网...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,889
精华内容 3,955
关键字:

机器人回答库