首页 > 解决方案 > 当问题字符串反转时,Chatter 机器人返回错误响应

问题描述

yaml 文件:

- - Invalid Password
  - contact xyz@gmail.com

我正在使用 python Chatterbot 库,如果我询问Invalid Password,它会返回响应联系人 xyz@gmail.com,但如果我询问Password Invalid,它会给我在创建聊天机器人实例时设置的默认响应。

bot = ChatBot(
    'Norman',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    input_adapter='chatterbot.input.TerminalAdapter',
    output_adapter='chatterbot.output.TerminalAdapter',
    logic_adapters=[
        {
            'import_path': 'my_logic_adapter.MyLogicAdapter',
            "statement_comparison_function": "chatterbot.comparisons.JaccardSimilarity",
            "response_selection_method": "chatterbot.response_selection.get_random_response",
            'threshold': 0.65,
            'default_response': 'I am sorry, but I do not understand.'
        }
    ],
    filters=["chatterbot.filters.RepetitiveResponseFilter"],
    preprocessors=[
        'chatterbot.preprocessors.clean_whitespace',
        'chatterbot.preprocessors.unescape_html',
        'chatterbot.preprocessors.convert_to_ascii'
    ],
    database='./database.sqlite3',
    trainer='chatterbot.trainers.ListTrainer'
)
bot.set_trainer(ListTrainer)

标签: pythonchatterbot

解决方案


问题是 Chatterbot 将非结构化和未经训练的数据存储到 SQLite DB 中。如果您输入一个反向字符串并且响应未存储在 YAML 文件中,它将无法理解,因此它将获取一些随机响应。你需要训练这些数据(增加频率)。同样根据我的理解,Jaccard Similarity 在这种情况下也无济于事。

如果您只插入密码而没有存储在 YAML 中的其他密码字,那么我认为它会给出正确的答复。Chatterbot 本身是使用 NLP 创建的,但您需要根据您的要求更改逻辑适配器的代码。


推荐阅读