在字符串c+中查找关键字+; 对于C++和编程,我还是相当新的,所以我可能会在这里漏掉一些大的东西。p>
我正在尝试为图书馆创建一个聊天机器人,处理开放时间等问题。我希望聊天机器人能够在输入中拾取关键字,然后能够调用正确的函数,该函数将能够返回一些文本给他们 例如: 用户:图书馆什么时候开放? //chatbot拾取关键字“open”并返回正确的函数 聊天机器人:图书馆在6点到5点之间开放 要让聊天机器人做到这一点应该不像我发现的那么难 我使用的函数有问题:在字符串c+中查找关键字+; 对于C++和编程,我还是相当新的,所以我可能会在这里漏掉一些大的东西。p>,c++,vector,nlp,chatbot,C++,Vector,Nlp,Chatbot,我正在尝试为图书馆创建一个聊天机器人,处理开放时间等问题。我希望聊天机器人能够在输入中拾取关键字,然后能够调用正确的函数,该函数将能够返回一些文本给他们 例如: 用户:图书馆什么时候开放? //chatbot拾取关键字“open”并返回正确的函数 聊天机器人:图书馆在6点到5点之间开放 要让聊天机器人做到这一点应该不像我发现的那么难 我使用的函数有问题: std::string GetKeywords(){ std::string KQuery = GetQuery(); std::vect
std::string GetKeywords(){
std::string KQuery = GetQuery();
std::vector<std::string> keywords{"open", "opening", "times", "close", "closing", "shut"};
if(std::find(keywords.begin(), keywords.end(), KQuery) != keywords.end()){
std::cout << "Library is open when I say it is" << std::endl;
}
return 0;
};
std::string GetKeywords(){
std::string KQuery=GetQuery();
向量关键字{“打开”、“打开”、“时间”、“关闭”、“关闭”、“关闭”};
if(std::find(keywords.begin()、keywords.end()、KQuery)!=keywords.end()){
std::cout
std::find(keywords.begin(), keywords.end(), KQuery)
它将检查KQuery
中的整个字符串是否与您的某个关键字匹配。因为KQuery
中有一个句子,所以它不会找到匹配项。您需要做的是循环检查所有关键字,看看KQuery.find(关键字)
是否返回有效结果
您可以使用std::find_if
和类似lambda的
std::find_if(keywords.begin(), keywords.end(),
[&](auto const& keyword){ return KQuery.find(keyword) != std::string::npos; });
这将返回一个迭代器到它在KQuery
或keywords.end()
中找到的第一个关键字,如果没有找到任何关键字。不是所有的代码:。
。实际上,我们宁愿使用一个迭代器,而不是所有的代码。
std::find_if(keywords.begin(), keywords.end(),
[&](auto const& keyword){ return KQuery.find(keyword) != std::string::npos; });