Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在字符串c+中查找关键字+; 对于C++和编程,我还是相当新的,所以我可能会在这里漏掉一些大的东西。p>_C++_Vector_Nlp_Chatbot - Fatal编程技术网

在字符串c+中查找关键字+; 对于C++和编程,我还是相当新的,所以我可能会在这里漏掉一些大的东西。p>

在字符串c+中查找关键字+; 对于C++和编程,我还是相当新的,所以我可能会在这里漏掉一些大的东西。p>,c++,vector,nlp,chatbot,C++,Vector,Nlp,Chatbot,我正在尝试为图书馆创建一个聊天机器人,处理开放时间等问题。我希望聊天机器人能够在输入中拾取关键字,然后能够调用正确的函数,该函数将能够返回一些文本给他们 例如: 用户:图书馆什么时候开放? //chatbot拾取关键字“open”并返回正确的函数 聊天机器人:图书馆在6点到5点之间开放 要让聊天机器人做到这一点应该不像我发现的那么难 我使用的函数有问题: std::string GetKeywords(){ std::string KQuery = GetQuery(); std::vect

我正在尝试为图书馆创建一个聊天机器人,处理开放时间等问题。我希望聊天机器人能够在输入中拾取关键字,然后能够调用正确的函数,该函数将能够返回一些文本给他们

例如:

用户:图书馆什么时候开放? //chatbot拾取关键字“open”并返回正确的函数 聊天机器人:图书馆在6点到5点之间开放

要让聊天机器人做到这一点应该不像我发现的那么难

我使用的函数有问题:

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; });