Как сохранить неотвеченные вопросы CHATBOT в текстовом файле - PullRequest
2 голосов
/ 02 февраля 2020

я новичок ie до python и создание чат-бота с использованием библиотеки chatterbot , и я хочу хранить те вопросы, которые задают пользователи, на которые чат-бот не может ответить (я имею в виду хранение оставшихся без ответа вопросов) в текстовом файле или базе данных , чтобы мы могли разместить их ответы позже. вот код болтун конструктор

self.chatbot = ChatBot(
            "GUI Bot",
            storage_adapter="chatterbot.storage.SQLStorageAdapter",
            logic_adapters=[{
                'import_path': 'chatterbot.logic.BestMatch',
                'default_response': 'I am sorry, but I do not understand.',
                'maximum_similarity_threshold': 0.75
} ]
        )

вот полный код класса

class TkinterGUIExample(tk.Tk):

    def __init__(self, *args, **kwargs):
        """
        Create & set window variables.
        """
        tk.Tk.__init__(self, *args, **kwargs)

        self.chatbot = ChatBot(
            "GUI Bot",
            storage_adapter="chatterbot.storage.SQLStorageAdapter",
            logic_adapters=[{
                'import_path': 'chatterbot.logic.BestMatch',
                'default_response': 'I am sorry, but I do not understand.',
                'maximum_similarity_threshold': 0.75
} ]
        )


        for files in os.listdir('C:/Users/HP/Desktop/FYP BOT/training_data/'):
            con=open('C:/Users/HP/Desktop/FYP BOT/training_data/'+files,'r').readlines()
            trainer = ListTrainer(self.chatbot)
            trainer.train(con)
        self.title("Chatterbot")

        self.initialize()

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Должен быть способ узнать, какой адаптер 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."
0 голосов
/ 02 февраля 2020

Вы можете установить переменную для открытия текстового файла для записи и l oop каждой строки, которую вы хотите добавить из списка с форматированием, как показано ниже:

file1 = open('your_txt_file.txt', 'w')
for questions in questio_list:
    file1.write('{}\n'.format(questions))
file1.close()
...