Python中使用responses()函数编写智能问答系统
发布时间:2023-12-24 01:35:59
在Python中,可以使用responses()函数编写智能问答系统。responses()函数可以在给定一组问题和对应的答案后,根据用户提出的问题返回相应的答案。
下面是一个简单的例子,展示如何使用responses()函数编写一个智能问答系统:
# 导入必要的库
from nltk.corpus import stopwords
from nltk.metrics.pairwise import cosine_similarity
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
# 定义一组问题和对应的答案
questions = ["What is your name?", "How old are you?", "What is your favorite color?"]
answers = ["My name is ChatBot.", "I am 25 years old.", "My favorite color is blue."]
# 实现responses()函数,用于返回给定问题的答案
def responses(user_question):
# 将用户问题添加到问题列表中
questions.append(user_question)
# 使用CountVectorizer进行文本向量化
vectorizer = CountVectorizer().fit_transform(questions)
# 计算文本的相似度矩阵
similarity_matrix = cosine_similarity(vectorizer[-1], vectorizer)
# 获取最相似的问题的索引
most_similar_index = np.argmax(similarity_matrix)
if most_similar_index == len(questions) - 1:
# 如果最相似的问题是用户的问题,则返回对应的答案
return answers[most_similar_index]
else:
# 如果最相似的问题是预定义的问题,则返回预定义的答案
return answers[most_similar_index]
# 测试智能问答系统
user_question = input("Ask a question: ")
response = responses(user_question)
print(response)
在上述代码中,首先定义了一组问题和对应的答案。然后,通过实现responses()函数来返回用户提出问题的答案。在responses()函数中,首先将用户的问题添加到问题列表中,并使用CountVectorizer对问题列表进行文本向量化。然后,使用余弦相似性计算文本相似度矩阵。最后,找到最相似的问题的索引,并根据索引返回对应的答案。
在测试智能问答系统时,用户可以通过输入问题来与系统进行交互。系统将使用responses()函数返回相应的答案,并将其打印出来。
有了这个简单的例子,你可以根据自己的需要扩展智能问答系统,例如添加更多的问题和答案,优化相似度计算算法或增加对话交互的功能。
