Как добавить 2-й массив для отношения, чтобы чатбот спросил об отношении из 2-го массива? - PullRequest
0 голосов
/ 03 мая 2019

Я бы хотел добавить в чат-бота новую тему, которую нужно задать пользователю. Примерно так: если я скажу «я чувствую себя счастливым», то чат-робот спросит «Почему ты счастлив», и следующий ответ придет от пользователя: «Потому что мой брат дал мне возможность». и чат-робот спросит "как зовут твоего брата" "

Я пытался добавить новый массив как отношение, но это не сработало.

import random

class simplechatbot:

    def run(self):

        welcome = "Hi, what you want to talk about?"
        goodbye = "goodbye"
        feelings = ["afraid", "sick", "stressed", "happy", "unhappy"]
#         relation = ["father", "mother", "sister", "brother"]   # I want to add this also to interact 
        dummy_sentences = [
            "say something about it",
            "Interesting",
            "I didn't get it, could you please explain",
            "what do you think about it?"
        ]

        # Greet the user
        print(welcome);


        # Process user input. Processing continues until the user says goodbye. 
        s = ""
        while s != goodbye:
            # Read user input
            s = input()
#             s = s.lower()

            if s == goodbye:
                print(goodbye);
                break
            answer = ""
            # Check for feelings
            for feeling in feelings:
#                 for relation in relation:
                if feeling in s:
                    # Found feeling -> generate answer
                    answer = "Why you are feeling " + feeling + "?"
                        # stop processing user input
                    break;
#                     elif relation in s:
#                         answer = "what's the name of your", relation, "?"
#                         # stop processing user input
#                         break;

            # If no feeling has been detected, generate a dummy answer.
            if len(answer) == 0:
                # output random sentence
                answer = random.choice(dummy_sentences)

            print(answer)

mychatbot = simplechatbot()
mychatbot.run()

Мой фактический результат:

Hi, what you want to talk about?
Hi
say something about it
I'm sick 
Why you are feeling sick?

Я хочу сказать кое-что о моем отце. ###### здесь чатбот должен спросить о моем отце скажи что-нибудь об этом

1 Ответ

0 голосов
/ 03 мая 2019

Существует проблема высокого уровня, которая блокирует вашу функциональность. Попытка отладки поймала бы это быстро. Смотрите этот прекрасный debug блог за помощью.

В частности, обратите внимание на строки

    relation = ["father", "mother", "sister", "brother"]
    ...
        for feeling in feelings:
          for relation in relation:

К этому моменту вы уничтожили свой список отношений: переменная relation теперь относится только к строке «папа». В следующий раз, когда вы нажмете этот оператор - на второй итерации цикла feelings, вы будете перебирать символы father, назначая relation = 'f' и теряя остальные.

Я предлагаю вам относиться к списку отношений так же, как с feelings:

    relations = ["father", "mother", "sister", "brother"]
    ...
        for feeling in feelings:
          for relation in relations:

Теперь мы можем добиться некоторого прогресса. Пример диалога:

Hi, what you want to talk about?
I'm sick
Why you are feeling sick?
My father has the flu, and I think I might catch it.
("what's the name of your", 'father', '?')

Это последнее «предложение» имеет другой формат, потому что вы назначили фрагменты как кортеж, а не объединили их. Вы можете взять это отсюда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...