参考自:

(1)构造聊天机器人

https://www.jianshu.com/p/c3ebd99d6fc4

https://zhuanlan.zhihu.com/p/86681217

(2)Chatbot的前世今生

https://zhuanlan.zhihu.com/p/55201625

基于模板匹配模方法:

图灵机器人http://www.turingapi.com/

API接口教程https://www.kancloud.cn/turing/www-tuling123-com/718227

代码1:

from flask import Flask
import requestsapp = Flask(__name__)# 装饰器里面写的是访问路径
@app.route("/")
def hello_world():url = "http://openapi.tuling123.com/openapi/api/v2"data_param = {"reqType": 0,"perception": {"inputText": {"text": "附近的酒店"},"inputImage": {"url": "imageUrl"},"selfInfo": {"location": {"city": "北京","province": "北京","street": "信息路"}}},"userInfo": {
#在上面提供的网址中注册登录获取你的机器人apikey,userId可以随便填写"apiKey": "xxxxxxxxxxxxxxxxxxxxxx","userId": "xxxxxxxxxxxxxxxxxx"}}response = requests.post(url=url,json=data_param)print(response.text)return "贪心学院"if __name__ == "__main__":app.run()

运行结果:

刷新 http://127.0.0.1:5000/

会得到返回的信息:

{"intent":{"code":4003},"results":[{"groupType":0,"resultType":"text","values":{"text":"在外住酒店,还是得小心点好哦~"}}]}

代码2:

from flask import Flaskapp = Flask(__name__)# 装饰器里面写的是访问路径
@app.route("/greedyai/<data>")
def hello_world(data):return dataif __name__ == "__main__":app.run()

运行结果:

代码3:

from flask import Flask
import requestsapp = Flask(__name__)# 装饰器里面写的是访问路径
@app.route("/greedyai/<data>")
def hello_world(data):if "帅" in data:return "大周老师"elif "线上" in data:return "线上课程为主"elif "助教" in data or "服务" in data:return "为提高服务质量,课程配有专业的助教老师"elif "基础" in data:return "http://aijiaoai.greedyai.com/home"elif "优势" in data:return "这你都问,大周老师就是优势"elif "有效期" in data:return "只要你想学,我一直在你身边"else:return "哎哟,小主,我不懂你的意思"if __name__ == "__main__":app.run()

然后跟上面的示例一样,在路径之后输入一句话,如果这一句话里面包含了某个关键词,那么就会输出相应的回复
这是部分输入的回复:

实例代码4:

from flask import Flask
import requestsapp = Flask(__name__)# 装饰器里面写的是访问路径
@app.route("/chat/<data>")
def hello_world(data):url = "http://openapi.tuling123.com/openapi/api/v2"if "帅" in data:return "大周老师"elif "线上" in data:return "线上课程为主"elif "助教" in data or "服务" in data:return "为提高服务质量,课程配有专业的助教老师"elif "基础" in data:return "http://aijiaoai.greedyai.com/home"elif "优势" in data:return "这你都问,大周老师就是优势"elif "有效期" in data:return "只要你想学,我一直在你身边"else:data_param = {"reqType": 0,"perception": {"inputText": {"text": "data"},"inputImage": {"url": "imageUrl"},"selfInfo": {"location": {"city": "北京","province": "北京","street": "信息路"}}},"userInfo": {"apiKey": "6cdbed64eeb14e6ea453538622bc1d74","userId": "582149"}}response = requests.post(url=url,json=data_param)print(response.text)if __name__ == "__main__":app.run()

运行结果:

基于搜索的方法

用户输入 -> 检索模型 -> 输入

如何计算相似度(文本的向量表示)

余弦相似度

课程demo

import jieba
word_vector_list = ["我们", "来", "贪心", "学院", "学习", "人工智能", "和", "python"]# 词典
s1 = "我来贪心学院学习python"
s2 = "我学习人工智能"
s3 = "Python课程的学习周期是多久"
question = "Python学习多久"
# 第一种切分模式:精确模式,比较适合做文本分析,['我来', '贪心', '学院', '学习', 'python']
s1_result_list = list(jieba.cut(s1))
print(s1_result_list)
# 全模式,['我来', '贪心', '学院', '学习', 'python']
s1_result_list = list(jieba.cut(s1, cut_all=True))
print(s1_result_list)
# 搜索引擎模式,['我来', '贪心', '学院', '学习', 'python']
s1_result_list = list(jieba.cut_for_search(s1))
print(s1_result_list)
# 向量转换
import numpy as np
def get_vector(data):vector_list = []for i in word_vector_list:if i in list(jieba.cut(data)):vector_list.append(1)else:vector_list.append(0)print(data)print(vector_list)return np.array(vector_list).reshape(1, -1)
question_vector_list = get_vector(question)#输出:Python学习多久[0, 0, 0, 0, 1, 0, 0, 0]
s1_vector_list = get_vector(s1)            #输出:我来贪心学院学习python[0, 0, 1, 1, 1, 0, 0, 1]
s2_vector_list = get_vector(s2)            #输出:我学习人工智能[0, 0, 0, 0, 1, 1, 0, 0]
s3_vector_list = get_vector(s3)            #输出:Python课程的学习周期是多久[0, 0, 0, 0, 1, 0, 0, 0]
# 相似度计算
from sklearn.metrics.pairwise import cosine_similarity
# print(cosine_similarity([[1, 0, 1]], [[0, 0, 1]]))
print(cosine_similarity(question_vector_list, s1_vector_list))
print(cosine_similarity(question_vector_list, s2_vector_list))
print(cosine_similarity(question_vector_list, s3_vector_list))
#输出[[0.5]],[[0.70710678]],[[1.]]

作业

完成一个完整的项目,能够根据已有的语料库,自动根据输入去计算哪个答案最符合

import jieba
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from flask import Flask# 建立语料库
corpus = {"Python课程是线上课程还是线下课程?": "线上课程为主","Python课程有助教吗?": "为提高服务效率和质量,课程都配备专业的全职助教。","我没有基础应该从哪个课开始学?": "大周老师的Python基础集训营非常适合你哦,""可以在这里学习:http://aijiaoai.greedyai.com/info/5","Python的学习周期是多久?": "如果你没有基础的话两个月可以搞定","Python课程的学习方式是什么呢?": "无需安装环境,在线直接写代码、看视频、看漫画,趣味性学习","Python课程的优势是什么呢?": "全网覆盖最全的Python基础知识体系练与学的深度结合,""每一个知识点都配有练习项目,生动有趣、授课方式多样,视频、文字、图片、在线代码编辑,""在聊天与娱乐中学习","Python课程的有效期是多久呢?": "我们把有效期确定为1年,1年内可无限次学习","Python课程有优惠吗?": "我们定价为开课后是599,现在是针对老学员预售199,开课后恢复原价"
}
# 建立词典,对于所有语料库中的问题进行jieba分词
all_question = ""
for question in corpus:all_question += question
dictionaries = list(set(jieba.cut(all_question)))  # 加上set是为了方便去重# 单个词典转换为向量
def transform_vector(date):vector_list = []for wd in dictionaries:if wd in list(jieba.cut(date)):vector_list.append(1)else:vector_list.append(0)return np.array(vector_list).reshape(1, -1)  # .reshape(1,-1)是为了后期余弦计算# 单个余弦相似度计算
def get_cosine(user_question, corpus_question):similar_list = cosine_similarity(transform_vector(user_question), transform_vector(corpus_question))similar_num = similar_list[0][0]  # 相似度return similar_num# 计算语料库中的所有相似度
def get_corpus_consine(user_question):ori_question_dict = {}ori_answer_dict = {}similar_list = []  # 保存所有余弦值for key in corpus:similar_num = get_cosine(user_question, key)  # 获得余弦值similar_list.append(similar_num)  # 保存所有余弦值ori_question_dict[similar_num] = key  # 获取原问题并储存ori_answer_dict[similar_num] = corpus[key]  # 获取原答案并储存return similar_list, ori_question_dict, ori_answer_dict# 得到最佳回答
def get_best_answer(similar_list, ori_question_dict, ori_answer_dict):max_similar = max(similar_list)if max_similar == 0: # 没有匹配项best_similar = 0best_question = "未检索到相似的问题"best_answer = "对不起,我听不懂你在说什么"else: # 返回值best_similar = max_similarbest_question = ori_question_dict[max_similar]best_answer = ori_answer_dict[max_similar]return [best_similar, best_question, best_answer]# 使用faslk,以接口的形式完成问答
app = Flask(__name__)@app.route("/<user_question>")
def question_for_web(user_question):similar_list, ori_question_dict, ori_answer_dict = get_corpus_consine(user_question)  # 计算所有相似度res = get_best_answer(similar_list, ori_question_dict, ori_answer_dict)  # 得到最佳答案html_ = '<html><body>' \'<p>' \'<h2>问题:{}</h2>' \'</p>' \'<p>' \'<li>最高相似度:{}</li>' \'<li>最高相似度的问题:{}</li>' \'<h2>最佳回答为:{}</h2>' \'</p>' \'</body></html>'.format(user_question, res[0], res[1], res[2])return html_  # 返回html并写入网页if __name__ == "__main__":app.run()

运行结果:

(一)图灵机器人API2.0接口构造聊天机器人相关推荐

  1. 基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人

    基于 QT5 百度语音API 图灵机器人API 的智能语音聊天机器人 程序简介 代码一共分为以下几个模块 伪代码形式为 部分代码 源代码下载地址 程序简介 程序界面包含录音和发送两个按钮 点录音将开始 ...

  2. 用深度学习构造聊天机器人简介

    聊天机器人(也可以称为语音助手.聊天助手.对话机器人等)是目前非常热的一个人工智能研发与产品方向.很多大的互联网公司重金投入研发相关技术,并陆续推出了相关产品,比如苹果 Siri .微软 Cortan ...

  3. 如何用tf2.0训练中文聊天机器人chatbot

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 一个可以自己进行训练的中文聊天机器人, 根据自己的语料训练出自己想要的聊天机器人,可以用于智能 ...

  4. 如何用图灵添加一个简单的QQ聊天机器人

    tip:这里是使用简单的软件,添加一个QQ聊天机器人, 如果想要用代码实现, 请按Ctrl + F4 本文比较墨迹, 看的懂的话, 请开3倍速.本文写于2017/05/9,过期就不用看了 1.进入图灵 ...

  5. rasa聊天机器人_Rasa-X是持续改进聊天机器人的独特方法

    rasa聊天机器人 介绍 (Introduction) When it comes to chatbot improvement, three elements are paramount: 在改善聊 ...

  6. python制作聊天机器人_如何制作一个聊天机器人?

    这样,我们岂安科技的斜杠青年用1100字教你做一个聊天机器人出来吧.关键词Zulip.Python.以下,GO~ ------- Zulip是什么 Zulip是移动和桌面办公聊天解决方案开发商 一个强 ...

  7. Simsimi 小黄鸡机器人最新无限制接口api simsimi机器人接口api 微信公众号

    一.什么是Simsimi? simsimi公司是提供智能服务,其中一个服务是simsimi聊天机器人服务,每天有超过百万的用户聊天,国内最大的搜索引擎--百度的产品siri使用的就是simsimi提供 ...

  8. python自动聊天机器人手机版_Python实现聊天机器人

    一.AIML是什么 AIML全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由RichardS. W ...

  9. 机器人对话常用语模板_聊天机器人的技术原理和未来的发展

    近年来,人工智能越来越火,那你们真的知道人工智能吗? 一.人工智能是什么 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论. ...

最新文章

  1. 零基础入门学习Python(28)文件系统
  2. 【POJ 2503】Babelfish(水题)stl map存取即可
  3. ASP.NET Core Filter与IOC的羁绊
  4. (9)有一些人在学习编程的时候总以为代码是死板的
  5. VMware配置额外内存设置
  6. 正确评估SQL数据库性能,你必须知道的原理和方法!
  7. Rotate Array
  8. Redfish数据中心管理标准详解
  9. 电脑文件删除不掉什么原因?程序显示被占用清理不掉如何操作?
  10. CFA一级学习笔记--衍生品(二)--定价与估值
  11. python中math的ln_Python math库 ln(x)运算的实现及原理
  12. SpriteKit:模拟器中播放效果音有延时的解决办法
  13. pacemaker+drbd主从
  14. ks:能定阈值的评价指标
  15. 通过小程序和微信社群来构建产品运营体系
  16. 短波红外SWIR应用
  17. 2018年固态硬盘会大规模降价吗?
  18. 福州室外婚纱摄影哪家好?
  19. 商品期货套利 - 多品种网格对冲模型 注释版
  20. 面试问题系列:HR面试和压力面试(续)

热门文章

  1. 转载 百度腾讯阿里,其大数据优劣势与策略分析
  2. P15 - 信息系统测试 之 应遵循的八大基本原则
  3. ENVI下的秸秆焚烧实时遥感监测方案及实现
  4. S5PV210开发板刷机(SD卡uboot、fastboot刷机方法介绍)
  5. 使用ffmpeg通过命令行对视频进行裁剪、转换尺寸和转换erp格式
  6. 【MongoDB】--MongoDB聚合Aggregation
  7. 单片机简易计算机有程序,AT89C51单片机C实现简易计算器
  8. R语言基于mediation包行中介效应分析
  9. 雄迈sdk二次开发,c++,一次拉跨的测试
  10. 表单事件(城市列表等)