python余弦相似度_Python 简易聊天机器人(附带基础余弦相似度实现)

# 开发者: "Wang"

# 开发时间:2019/8/2913:07

# 文件名称:chatbot.py

# 开发工具:PyCharm

# 各种库

from flask import Flask

import requests

import numpy as np

import sklearn

import jieba

from sklearn.metrics.pairwise import cosine_similarity

# 词典

my_word = "Python课程是线上课程还是线下课程,Python课程有助教吗,我没有基础应该从哪个课开始学,Python的学习周期是多久,Python课程的学习方式是什么呢,Python课程的优势是什么呢,Python的学习侧重点是什么" \

"Python课程的有效期是多久呢,Python课程有优惠吗,Python课程适合没有基础或基础不扎实的我吗"

# 语料预处理

my_word_cut_list = list(jieba.cut(my_word))

my_word_cut_list = list(set(my_word_cut_list))

my_word_cut_list.remove('吗')

my_word_cut_list.remove('呢')

my_word_cut_list.remove(',')

#word_vector_list = ["我们","来","贪心","学院","学习","人工智能","和","Python"]

# 回答模板与用户提问

a1 = "Python课程是线上课程还是线下课程"

a2 = "Python课程有助教吗"

a3 = "我没有基础应该从哪个课开始学"

a4 = "Python的学习周期是多久"

a5 = "Python课程的学习方式是什么呢"

a6 = "Python课程的优势是什么呢"

a7 = "Python的学习侧重点是什么"

a8 = "Python课程的有效期是多久呢"

a9 = "Python课程有优惠吗"

a10 = "Python课程适合没有基础或基础不扎实的我吗"

question = "Python学习多久"

# 向量转换

def get_vector(data):

vector_list = []

for i in my_word_cut_list:

if i in list(jieba.cut(data)):

vector_list.append(1)

else:

vector_list.append(0)

return np.array(vector_list).reshape(1, -1)

a1_vector_list = get_vector(a1)

a2_vector_list = get_vector(a2)

a3_vector_list = get_vector(a3)

a4_vector_list = get_vector(a4)

a5_vector_list = get_vector(a5)

a6_vector_list = get_vector(a6)

a7_vector_list = get_vector(a7)

a8_vector_list = get_vector(a8)

a9_vector_list = get_vector(a9)

a10_vector_list = get_vector(a10)

# 搭建Flask简易环境

app_chat = Flask(__name__)

@app_chat.route('/chattest/')

def answer_question(data):

question_vector_list = get_vector(data)

# 相似度计算

a1_similar = cosine_similarity(question_vector_list, a1_vector_list)

a2_similar = cosine_similarity(question_vector_list, a2_vector_list)

a3_similar = cosine_similarity(question_vector_list, a3_vector_list)

a4_similar = cosine_similarity(question_vector_list, a4_vector_list)

a5_similar = cosine_similarity(question_vector_list, a5_vector_list)

a6_similar = cosine_similarity(question_vector_list, a6_vector_list)

a7_similar = cosine_similarity(question_vector_list, a7_vector_list)

a8_similar = cosine_similarity(question_vector_list, a8_vector_list)

a9_similar = cosine_similarity(question_vector_list, a9_vector_list)

a10_similar = cosine_similarity(question_vector_list, a10_vector_list)

final_answer_list = [a1_similar,a2_similar,a3_similar,a4_similar,a5_similar,a6_similar,a7_similar,a8_similar,a9_similar,a10_similar]

max_value = np.array(0)

for i in final_answer_list:

if i > max_value:

max_value = i

if max_value == 0:

return "兄嘚,换个说法,我get不到你的点。"

elif max_value == a1_similar:

return "线上课程为主"

elif max_value == a2_similar:

return "为提高服务效率和质量,课程都配备专业的全职助教。"

elif max_value == a3_similar:

return "大周老师的Python基础集训营非常适合你哦,可以在这里学习:http://aijiaoai.greedyai.com/info/5"

elif max_value == a4_similar:

return "如果你没有基础的话两个月可以搞定。"

elif max_value == a5_similar:

return "无需安装环境,在线直接写代码、看视频、看漫画,趣味性学习。"

elif max_value == a6_similar:

return "全网覆盖最全的Python基础知识体系练与学的深度结合,每一个知识点都配有练习项目,生动有趣、授课方式多样,视频、文字、图片、在线代码编辑,在聊天与娱乐中学习"

elif max_value == a7_similar:

return "练,只有反复的练习就一定能够掌握。"

elif max_value == a8_similar:

return "我们把有效期确定为1年,1年内可无限次学习。"

elif max_value == a9_similar:

return "我们定价为开课后是599,现在是针对老学员预售199,开课后恢复原价。"

elif max_value == a10_similar:

return "必须适合,这门课程就是给基础不扎实并觉得学习很无聊,无法坚持的同学设计的。"

else:

return "我又不懂你了"

if __name__ == '__main__':

app_chat.run()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值