以下是一份简单的 C++ 代码,实现了一个基于命令行界面的聊天人工智能:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 将用户输入的字符串转为小写
void toLowercase(string& str) {
transform(str.begin(), str.end(), str.begin(), ::tolower);
}
int main() {
// 数据库中的问候语
vector<string> greetings = {
"你好呀!",
"Hi~ 欢迎和我聊天!",
"你好啊,有什么想聊的吗?"
};
// 数据库中的问题和回答
vector<pair<string, string>> qa_pairs = {
{"你叫什么名字?", "我是机器人小豆"},
{"你会说中文吗?", "当然会,我是人工智能聊天机器人。"},
{"你有兴趣爱好吗?", "我喜欢和人类聊天,了解他们的生活和思想。"},
{"你喜欢什么样的音乐?", "我不会感受音乐的美感,但我可以分析它的音乐风格和特点。"},
{"你有哪些功能?", "我可以和你聊天、回答问题、与你交互等等。"},
{"再见", "祝你生活愉快!"}
};
// 打印问候语中的一句
srand(time(NULL));
cout << greetings[rand() % greetings.size()] << endl;
// 进入聊天循环
while (true) {
// 得到用户的输入
string input_str;
getline(cin, input_str);
// 将输入字符串转为小写
toLowercase(input_str);
// 查找问题和回答
for (auto& qa_pair : qa_pairs) {
if (input_str.find(qa_pair.first) != string::npos) {
cout << qa_pair.second << endl;
goto end_input_loop;
}
}
// 如果输入了 "再见",则结束程序
if (input_str == "再见") {
cout << "祝你生活愉快!" << endl;
break;
}
// 如果没有找到问题的回答,则回复无法理解
cout << "抱歉,我不理解你的意思…可以换个问题问我嘛。" << endl;
// 跳过多余输入
end_input_loop:
continue;
}
return 0;
}
这份代码中,我们使用了 vector
来存储问候语、问题和回答的数据库,并通过 srand
和 rand
生成随机的问候语。在聊天循环中,我们通过 getline
从命令行读取用户的输入,并通过 find
函数查找匹配的问题和回答。如果用户输入了 "再见",程序就会结束。
当然,这只是一个非常基础而且简陋的人工智能聊天机器人。如果您希望将其进一步优化和扩展,可以考虑以下方面:
- 增加更多的问题和回答,或者使用自然语言处理技术让机器人更智能地回答问题。
- 使用 GUI 界面,让聊天更加直观和友好。
- 为机器人添加其他功能,比如智能推荐、语音输入等等。
- 等等。