1 に答える
しばらく前に IRC ボットで同様のことを行いましたが、これには AIML を使用しました。文中にキーワードが出現する回数を数えることは、あまり正確な方法ではないようです。AIML を使用するのがおそらく最善の方法です。AIML を使用した場合、実際の「頭脳」(と呼ばれることもある) は AIML で記述されているため、C++ コードの記述に多くの手間をかける必要はありません。libaiml.xml (ボットの AIML コードを含むファイル) をロードするために私が書いたコード (大部分は例から来たと思います) からの小さな抜粋:
#include <aiml.h>
// ...
using namespace aiml;
// setup Ai bot:
cInterpreter* interpreter = cInterpreter::newInterpreter();
try {
if(!interpreter->initialize("libaiml.xml"))
throw 1;
} catch(int _ret) {
cout << "ERROR: " << interpreter->getErrorStr(interpreter->getError())
<< " (" << interpreter->getError() << ")" << endl;
if(!interpreter->getRuntimeErrorStr().empty())
cout << "Runtime Error: " << interpreter->getRuntimeErrorStr() << endl;
}
するとinterpreter->respond(message, "name", result);
、返事が返ってくることがありました。http://www.alicebot.org/downloads/programs.htmlにある libaiml とリンクしました (libxml2 が必要です)。 . ライブラリの更新により、コードが機能しなくなる可能性がありますが、わかりません。幸いなことに、libaiml には、当時の私にとって非常に役立った素晴らしい例も含まれています。
XML フォーマット自体に関するかなりの数のドキュメントを見つけることができるはずです。http://www.alicebot.org/TR/2011/ . 上記の例 (libaiml に含まれています) も参照することをお勧めします。
がんばって!