-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)制作一个适当的“替换”键。基本上,如果您的拼写错误是“responsw”而不是“responsl”,这似乎更真实,因为“w”和“e”彼此相邻。您还需要随机删除或插入字母。我会为“错误”分配一个频率,然后为每种错误分配一个频率。

既然您已经获得了处理随机性方面的这个和其他答案(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

您可以使用随机种子并在 20% 的时间内使用 %5 。

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 回答