# 开发者: "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()