Должен быть способ узнать, какой адаптер logi c использовался в Chatterbot или, если ни один из них не использовался. Самый простой способ обдумать это - использовать default_response
.
Set default_response = '-2E-'
или что-то еще. Затем добавьте условие if else, чтобы увидеть, равно ли значение str(bot.get_response(userText))
-2E-
. Если они совпадают, это означает, что ни один из адаптеров logi c не использовался и не было найдено совпадений для пользовательского ввода.
Не используется адаптер logi c означает, что это вход, для которого нет ответа , Теперь вы можете добавить пользовательский ввод, который хранится в userText
, в текстовый файл.
Код:
## initialize chatter bot
bot = ChatBot(
'robot',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
preprocessors=[
'chatterbot.preprocessors.clean_whitespace',
],
logic_adapters=[
{
'import_path': 'chatterbot.logic.BestMatch',
'default_response': '-2E-',
'maximum_similarity_threshold': 0.90,
'statement_comparison_function': chatterbot.comparisons.levenshtein_distance,
'response_selection_method': chatterbot.response_selection.get_first_response
},
'chatterbot.logic.MathematicalEvaluation'
],
database_uri='sqlite:///database.db',
read_only=True
)
Ниже приведен пример логики c для использования в коде. Вам следует изменить этот лог c с учетом ваших собственных требований.
## Open a file to write unknown user inputs
with open("unanswered.txt", "a") as f:
## Loop and get user input
## Check to see if none of the logic adapters was used
if str(bot.get_response(userText)) == "-2E-":
f.write(userText)
return "Sorry, I do not understand."