Chatter Bot возвращает неверный ответ, когда строка вопроса перевернута - PullRequest
1 голос
/ 10 апреля 2019

файл yaml:

- - Invalid Password
  - contact xyz@gmail.com

Я использую библиотеку Python Chatterbot, если я спрашиваю Неверный пароль , он возвращает контактный ответ xyz@gmail.com, но если я спрашиваю Неверный пароль он дает ответ по умолчанию, который я установил при создании экземпляра чат-бота.

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)

1 Ответ

0 голосов
/ 10 апреля 2019

Дело в том, что Chatterbot хранит неструктурированные и необученные данные в БД SQLite.Если вы введете обратную строку и ответ не будет сохранен в файле YAML, он не сможет понять, следовательно, он получит некоторый случайный ответ.Вам необходимо обучить такие данные (увеличить частоту).Также, насколько я понимаю, Jaccard Similarity не поможет в этом случае.

, если вы введете только пароль и никакое другое слово пароля, хранящееся в YAML, то я думаю, что он даст правильный ответ.Сам Chatterbot создан с использованием NLP, но вам необходимо изменить код адаптера логики в соответствии с вашими требованиями.

...