1

我有一个场景,用户可以以不同的方式向聊天机器人提出相同的问题。例如,问题可以是“什么是结核病?” 或者它可以是“什么是过渡福利?”。这两个问题的答案是一样的,但提问的方式不同。我在我的代码中使用 levenshtein_distance 进行语句比较,但在这种情况下不起作用,因为它匹配逐个字母的修正。在这种情况下,我该如何比较我的陈述?我应该向我的培训数据提供这两个问题,还是有其他聪明的方法可以做到这一点。请建议。

4

1 回答 1

2

我有一个解决方案。我们可以编写自己的预处理函数并在聊天机器人实例中调用它。

bot = ChatBot("Norman",
          read_only=True,
          preprocessors=[
                       'chatterbot.preprocessors.TB_Correction'
                        ])

在 Preprocessors.py 中(位于 C:\Users\User_Name\AppData\Local\Continuum\Anaconda3\Lib\site-packages\chatterbot 下),我们可以向它添加一个函数,如下所示:

def TB_Correction(chatbot,statement):
    '''
    Replacing TB with Transition Benefits
    '''
    import re

    if 'TB' in statement.text:
            statement.text = re.sub(r'[T][B]','Transition Benefits',statement.text)
    return statement
于 2018-06-30T09:54:36.183 回答