-1

わかりましたので、私はチャットボットに取り組んでおり、m_sResponse という名前のプライベート std::string を持っています。この文字列は次を使用して出力されます

void print_response() const {
    if(m_sResponse.length() > 0) {
        std::cout << m_sResponse << std::endl;
    }
}

5% の確率で m_sRensponse のスペルを間違える関数を作成して、チャットボットがより人間らしくなるようにしたいと考えています。どうすればこれを達成できますか?

4

3 に答える 3

5

より現実的に見えるようにするためにmap<char,vector<char>>、キーボード レイアウト (QWERTY など) に基づいて適切な「置換」キーを作成します。基本的に、「w」と「e」が隣り合っているので、「responsl」よりも「responsw」の方がよりリアルに見えます。文字をランダムに削除または挿入することもできます。「エラー」に頻度を割り当ててから、各種類のエラーの頻度を割り当てます。

これと、ランダム性の側面を処理する他の回答 ( if(rand(100)<5)) を取得したので、目的のタイプミス ハンドラーを複製できるはずです。

于 2013-11-04T20:19:36.400 に答える
0

擬似コード:

if rand(100) < 5
    randomIndex = rand(string.length())
    randomChar = rand(26)
    string[randomIndex] = randomChar
于 2013-11-04T20:09:22.213 に答える
0

ランダム シードを使用して %5 を 20% の確率で使用できます。

if((rand() % 5) == 0) {
          int t = rand() & m_sResponse.length();
          char a = m_sResponse[t];
          m_sResponse[t] = m_sResponse[t+1];
          m_sResponse[t+1] = a;
}
于 2013-11-04T20:10:43.837 に答える