起因

本demo基于基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型而来


无意间发现一个基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型,但由于年代久远代码已经跑不通了,而且采用的是py2,于是边看变改,在自己摸索下,写了一个相对完整的demo且有相对完整的注释,特此开源供各位参考学习

源码与介绍

本项目相较于原项目

实现功能

  • 知识库匹配(AIML)回答问题
  • 任务型对话系统(Task)
  • 利用API完成的闲聊系统回答问题
  • 待更新....

特点

  • AIML知识库更多(共35个)
  • 敏感词库更广(共1.5W个),同时敏感词判断更合理
  • 新增NLP功能,用于处理文本相似度。
  • 更多的API接口demo可以调用(支持莉莉、青云客、ownthink、如意、mcenjoy)

使用方法

首先下载解压你会得到一个这样一个目录结构

目录结构

chatbot_aiml_task_demo

├─ init.py

└─ core

├─ init.py

├─ chatbot.py

├─ config.cfg

├─ crawler

│ ├─ init.py

│ ├─ crawl.py

│ ├─ search.py

│ ├─ stationID.json

│ └─ weather.py

├─ deeplearning

│ ├─ NLP.py

│ ├─ .......

│ ├─ SimilarCharactor

│ ├─ init.py

│ └─ deep.py

├─ log

│ ├─ .gitkeep

│ └─ .......

├─ resources

│ ├─ Book.aiml

│ ├─ .......

│ ├─ save.aiml

│ ├─ load.aiml

│ ├─ main.aiml

│ ├─ sensitive.txt

│ ├─ .......

│ └─ .......

└─ tool

├─ init.py

└─ filter.py

其中:

chatbot.py 是主程序

config.cfg 是各种路径的配置文件

tool文件夹 下是存放的是用于敏感词过滤使用的filter.py文件

resources文件夹 建议存放AIML知识库和敏感词库

deeplearning文件夹 存放的是NLP主要代码

crawler文件夹 存放的是任务型对话系统(Task)主要代码

源码介绍与处理流程

  1. 预处理

    限制字数

    过滤敏感词(恶心、政治、色情、违法......)

    当你需要增加敏感词时候直接在sensitive.txt中添加即可

当你需要更改敏感词库位置时候请在config.cfg中修改filter_file

  1. 知识库匹配(AIML)

    基本功能:打招呼、闲聊......

    异常处理:问题太长、空白问题、找不到回复......

    情绪回答:表情、夸奖、嘲笑......

    如果匹配不到回答,进行步骤三
  2. 任务型对话匹配

    如果可以请不要完全依赖于本人提供的任务功能,请自行修改接口和对应的匹配关键词。因为本人提供的接口随时可能失效,无法保证效果。

    你可以自行添加功能和匹配关键词。包括但不限制于天气查询、汉字查询、空气质量查询、百科等机器人功能

    任务型对话系统(Task)功能函数建议放在search.py

关键词逻辑判断建议写在crawl.py文件中

同时你可要单独写一个功能文件调用,例如给出的例子weather.py用于取天气

  1. 神经网络

    与原作者相同,我也暂时实现不了神经网络部分功能,同样使用了API代替,同时加入了NLP文本相似度计算。

    如果你需要使用API请到deep.py对应的函数中填入自己的api_key

在deep.py的bot_reply()函数中,你可以选择使用的API接口和个数,同时也支持你自己添加API

学习功能

利用AIML模板+shelve存储,同时修复了已知BUG

学习功能模板为learn.aiml库,可以自定义修改

    • 说错 *
    • 答错 *
  1. ......

效果展示:



源码

欢迎Star欢迎━(`∀´)ノ亻!

github

参考

基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型

中文相似度匹配算法

wenyangchou/SimilarCharactor

敏感词过滤的几种实现+某1w词敏感词库

基于人工智能标记语言 (AIML)和任务型对话系统(Task)的深度智能对话机器人demo的更多相关文章

  1. 分布式人工智能标记语言(DAIML)示例

          DAIML(Distributed Artificial Intelligence Markup Language)是用于分布式人工智能系统中智能语言的标记库.DAIML主要分为Patte ...

  2. 标记语言XML

    标记语言概述 标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码.一部分是标记,一部分是标记中的内容,两部分构成标记语言   <标记 ...

  3. XML 概述 (可扩展标记语言)

    XML:eXtensible Markup Language  可扩展标记语言 概念:可扩展:xml中所有的标签都是自定义的.没有预定义的.        功能:            存储数据   ...

  4. Razor标记语言介绍

    什么是Razor?   Razor的中文意思是"剃刀",它不是编程语言,只是一种服务器段的标记语言,与PHP和ASP类似   Razor允许你向网页中嵌入基于服务器的代码(Visu ...

  5. html标记语言 --格式标记

    html标记语言 --格式标记 一.格式标记 1.<br>单标记,强制换行标记,让后面的文字.图片.表格等显示在下一行 2.<p>换段落标记 3.<center>居 ...

  6. java XML(可扩展标记语言)

    XML 是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言,传输数据而不是显示数据,可以自定义标签,具有自我描述性是一种通用的数据交换格 ...

  7. 模型标准化——预测模型标记语言(PMML)

    https://www.cnblogs.com/pinard/p/9220199.html 在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个 ...

  8. 理解Xaml标记语言

    理解XAML XAML基于XAML,因而具有与XAML相似的特性.在XAMl中,同样必须区分大小写,但是Xaml以.xaml作为扩展名,表示这是一个应用程序的标记扩展文件.WPF中的XAML主要用于创 ...

  9. [Markdown]纯文本标记语言MarkdowPad2--MD语法知识

    ##1.标题 代码 注:# 后面保持空格 # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6 ####### h7 // 错误代码 ######## h8 // ...

随机推荐

  1. MongoDB分片集群搭建及扩容

    ### 实验:分片集群搭建及扩容#### 实验目标及流程 * 目标:学习如何搭建一个两分片的分片集群 * 环境:3台Linux虚拟机器,4Core 8GB * 步骤: * 配置域名解析 * 准备分片目 ...

  2. docker容器的本质

    1. 容器其实就是Linux下一个特殊的进程: 2. Docker容器通过namespace实现进程隔离通过cgroups实现资源限制: 3. Docker镜像(rootfs)是一个操作系统的所有文件 ...

  3. Nginx_全局命令设置

    刚安装好的Nginx, 命令需要去sbin目录执行,比较麻烦,设置下全局命令,就无需进入nginx的sbin目录执行nginx命令了 1.创建文件 vim /etc/init.d/nginx 把下面代 ...

  4. 使用 try-catch

    ECMA-262 第 3 版引入了 try-catch 语旬,当 try-catch 语句中发生错误时, 浏览器会认为错误已经被处理了 ,因而不会报告错误.对于那些不要求用户懂技术,也不需要用户理解错 ...

  5. 【Warrior刷题笔记】剑指offer 32. 三道题,让你学会二叉树的深度广度优先遍历与递归迭代技术

    题目一 剑指 Offer 32 - I. 从上到下打印二叉树 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-shang-dao-xi ...

  6. 【分享】让prometheus支持PUSH模式,可以使用remote write协议推送数据

    2021-10-21补充: 我通过修改源码来让prometheus支持remote-write,纯属多此一举: --enable-feature=remote-write-receiver这个命令行参 ...

  7. Druid未授权访问实战利用

    Druid未授权访问实战利用 ​ 最近身边的同学都开始挖src了,而且身边接触到的挖src的网友也是越来越多.作者也是在前几天开始了挖src之路.惊喜又遗憾的是第一次挖src就挖到了一家互联网公司的R ...

  8. WebSphere--WAS概念和原理解析

    WebSphere--WAS概念和原理解析--tigergao收录于2021/04/25

  9. Redis内存满了怎么办(新年快乐)

    Redis内存满了怎么办(新年快乐) 入我相思门,知我相思苦. 长相思兮长相忆,短相思兮无穷极. 一.配置文件 Redis长期使用或者不设置过期时间,导致内存爆满或不足,可以到Redis的配置文件re ...

  10. Serverless Workflow项目

    维基百科对工作流的定义是:对工作流程及其各操作步骤之间业务规则的抽象.概括描述.我们认为工作流的主要职责是: 保证结果一致性,提高容错性要求:对错误重试,捕获,执行回滚或补偿逻辑 为长时间运行的流程维 ...