实现效果
实现效果图如下:
准备工作
一个文件夹,里面装一个python文件,一个questions.txt文件,一个answers.txt文件,下载所需要的库。
在question和answers设置对应的问题和答案。
如:
然后导入代码即可使用。
import jieba
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
# 问题和回答数据文件
questionTXT = 'questions.txt'
answerTXT = 'answers.txt'
# 数据预处理
questions = []
# 读入问题数据
with open(questionTXT, "r", encoding="utf-8") as f:
for line in f:
questions.append(line.strip())
questions = [jieba.lcut(q) for q in questions]
questions = [' '.join(q) for q in questions]
answers = []
# 读入回答数据
with open(answerTXT, "r", encoding="utf-8") as f:
for line in f:
answers.append(line.strip())
# 特征提取
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(questions)
# 聊天循环
while True:
# 读入用户输入
user_input = input('你: ').strip()
if not user_input:
continue
# 预处理用户输入
user_input = jieba.lcut(user_input)
user_input = ' '.join(user_input)
# 匹配最相似的问题
test_X = vectorizer.transform([user_input])
sims = np.dot(test_X[0], X.T)
index = sims.argmax()
# 输出回答
print('虚拟人:', answers[index])