我需要一个网页和一个后端服务,后端服务可以用 Python Flask 框架搭建。 在后端服务中,使用自然语言处理,来处理用户的键盘输入和输出。同时,将问题和答案的 Excel 文件导入到后端服务中,以便进行问题匹配和回答。 对于前端界面,使用 HTML、CSS 和 JavaScript 语言来实现。需要添加一个输入框,用于用户输入文本问题,一个按钮用于提交问题,以及一个输出框,用于展示机器人的回答。 当用户点击提交按钮后,前端界面会向后端发送请求,后端服务会将问题传递给自然语言处理模型进行处理,并将处理后的文本与 Excel 文件中的问题进行匹配。匹配成功后,后端服务会将对应的答案传递回前端界面输出框展示给用户。写代码示例
时间: 2024-03-12 08:44:05 浏览: 53
后端开发框架例程基于Python和Flask框架
前端代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>机器人问答系统</title>
<style>
#input {
width: 400px;
height: 50px;
font-size: 18px;
margin-top: 20px;
}
#output {
width: 400px;
height: 150px;
font-size: 18px;
margin-top: 20px;
}
#submit {
width: 100px;
height: 40px;
font-size: 18px;
margin-top: 20px;
}
</style>
</head>
<body>
<label>请输入问题:</label>
<input type="text" id="input">
<button id="submit">提交</button>
<br>
<label>机器人回答:</label>
<br>
<textarea id="output" readonly></textarea>
<script>
const submitButton = document.getElementById("submit");
const inputBox = document.getElementById("input");
const outputBox = document.getElementById("output");
submitButton.onclick = function () {
const question = inputBox.value;
if (question.trim().length === 0) {
return;
}
fetch("/chat", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({question: question})
})
.then(response => response.json())
.then(data => {
outputBox.value = data.answer;
});
};
</script>
</body>
</html>
```
后端代码:
```python
from flask import Flask, request, jsonify
import pandas as pd
import jieba
app = Flask(__name__)
df = pd.read_excel("questions.xlsx") # 读取问题和答案的Excel文件
questions = df["问题"].tolist()
answers = df["答案"].tolist()
@app.route("/chat", methods=["POST"])
def chat():
question = request.json.get("question")
if not question:
return jsonify({"answer": "请输入问题!"})
seg_list = jieba.lcut(question, cut_all=False) # 使用jieba分词
for q in questions:
seg_q = jieba.lcut(q, cut_all=False)
if set(seg_list) & set(seg_q): # 如果问题中包含关键词
answer = answers[questions.index(q)]
return jsonify({"answer": answer})
return jsonify({"answer": "很抱歉,我不知道如何回答这个问题。"})
if __name__ == "__main__":
app.run()
```
需要注意的是,上述代码使用了 jieba 分词工具来进行中文分词,需要先安装 jieba 库。同时,需要将问题和答案的 Excel 文件保存为 questions.xlsx,并与 Python 文件放在同一目录下。
阅读全文