如何处理chatbot问题中的缩写?

时间:2018-06-28 13:02:19

标签: chatterbot

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

1 个答案:

答案 0 :(得分:2)

我为此找到了解决方案。我们可以编写自己的预处理功能,并在chatbot实例中调用它。

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