removed usage of nltk.chat

This commit is contained in:
Adrian Charkiewicz 2022-03-12 22:48:14 +01:00
parent 0c12a2c27b
commit b79bb0ccf7

View File

@ -1,111 +1,134 @@
from nltk.chat.util import Chat
import re
import random
# "cheddar" chatbot
reflections = {
"jestem": "jestes",
"bylem": "byles",
"bylam": "bylas",
"ja": "ty",
"jestem": "jestes",
"chcialbym": "chcialbys",
"chcialabym": "chcialabys",
"mam": "masz",
"bede": "bedziesz",
"moj": "twoj",
"twoja": "moja",
"moim": "twoim",
"mojego": "twojego",
"jestes": "jestem",
"byles": "bylem",
"masz": "mam",
"bedziesz": "bede",
"twoj": "moj",
"twoja": "moja",
"twoim": "moim",
"twojego": "mojego",
"ty": "ja",
"nasz": "wasz",
"moge": "mozesz"
}
class Elizabeth:
questions = ((r'Potrzebuję (.*)',
('Czemu potrzebujesz %1?',
'Naprawdę pomogłoby, gdybyś miał %1?',
'Czy aby na pewno potrzebujesz %1?')),
(r'Jestem (.*)',
('Czy przyszedłeś dziś do mnie, ponieważ jesteś %1?',
'Jak długo jesteś %1?',
'Jak czujesz się z byciem %1?')),
('Jesteś (.*)',
('Czemu to ważne, że jestem %1?',
'Chciałbyś, abym nie był %1?',
'Mozę to ty uważasz, że jestem %1.',
'Mogę być %1, co o tym sądzisz?')),
(r'Co (.*)',
('Czemu pytasz?',
'W jaki sposób odpowiedź na to pytania by ci pomogą?',
'A co ty myślisz?')),
(r'Jak (.*)',
('A jak myślisz?',
'Może sam odpowiedz sobie na to pytanie',
"Jakie jest twoje PRAWDZIWE pytanie")),
(r'Ponieważ (.*)',
('Czy to na pewno prawdziwy powód?',
'Jakie inne powody przychodzą ci na myśl?',
'Skoro %1, to jakie inne powody są prawdziwe?')),
(r'(.*) przepraszam (.*)',
('Nie masz za co przepraszać',
'Jakie uczucia masz w sobie, gdy przepraszasz?')),
(r'Myślę, że (.*)',
('Jesteś niepewny co do %1?', 'Naprawdę tak myślisz?', "Ale nie jesteś pewien czy %1?")),
(r'Dlaczego (.*)',
("Czemu to ty nie powiesz mi dlaczego %1?", 'CZemu myślisz, że %1?')),
(r'Chcę (.*)',
('Co to by dla ciebie oznaczało, gdybyś dostał %1?',
'Czemu chcesz %1?',
'Co byś zrobił, gdybyś dostał %1?',
'Gdybyś dostał %1, to co byś zrobił?')),
(r'(.*)matka(.*)',
('Powiedz mi więcej o swojej matce.',
'Jak wyglądałą relacja z twoją matką?',
'Jakie są twoje uczucia dziś?')),
(r'(.*) ojciec(.*)',
('Powiedz mi więcej o swoim ojcu.',
'Jak twój ojciec sprawia, że się czujesz?'
)),
pairs = (
(
r"Potrzebuje (.*)",
(
"Dlaczego potrzebujesz %1?",
"Czy naprawdę pomogloby Ci zdobycie %1?",
"Czy jestes pewien, ze potrzebujesz %1?",
),
),
(
r"Dlaczego nie moge (.*)",
(
"Czy uwazasz, ze powinienes moc %1?",
"Gdybys mogl %1, co bys zrobil?",
"Nie wiem, dlaczego nie mozesz %1?",
"Czy naprawde probowales?",
),
),
(
r"Nie moge (.*)",
(
"Skad wiesz, ze nie mozesz %1?",
"Byc moze moglbys %1, gdybys sprobowal.",
"Co musialbys zrobic zeby %1?",
),
),
(
r"Jestem (.*)",
(
"Czy rozmawiasz ze mna poniewaz jestes %1?",
"Od jak dawna jestes %1?",
"Jak sie czujesz z tym, ze jestes %1?",
"Jak sie czujesz bedac %1?",
"Dlaczego mowisz mi, ze jestes %1?",
"Dlaczego uwazasz, ze jestes %1?",
),
),
(
r"Czy jestes (.*)",
(
"Dlaczego ma to znaczenie czy jestem %1?",
"Czy wolabys gdybym nie byl %1?",
"Byc moze uwazasz, ze jestem %1.",
"Byc moze jestem %1, co o tym sadzisz?",
),
),
(
r"Co (.*)",
(
"Dlaczego pytasz?",
"W jaki sposob pomoglaby ci odpowiedz na to pytanie?",
"Co o tym myslisz?",
),
),
(
r"Jak (.*)",
(
"Jak sadzisz?",
"Byc moze potrafisz odpowiedziec na swoje wlasne pytanie.",
"O co tak naprawde pytasz?",
),
),
(
r"Poniewaz (.*)",
(
"Czy to jest prawdziwy powod?",
"Jakie inne powody przychodza Ci na mysl?",
"Czy ten powod odnosi sie do czegos innego?",
"Jesli %1, to co jeszcze musi byc prawda?",
),
),
)
(r'(.*)\\?',
('Być może odpowiedź jest w tobie?',
'Czemu to TY nie powiesz MI?',
"Czemu o to pytasz?")),
cheddar = Chat(pairs, reflections)
(r'(.*)',
('Proszę, powiedz mi więcej',
"Zmieńmy temat... opowiedz mi o swojej rodzinie.",
'Możesz rozwinąć?',
'Możesz powiedzieć mi więcej o %1?',
'Rozumiem.',
'To bardzo interesujące',
'Rozumiem.. i co Ci to mówi?',
'Jakie uczucia to w tobie wywołuje?',
'Jak się czujesz, mówiąc to?')),
print("\nNapisz 'quit' aby zakonczyc.")
print("-" * 70)
(
r"Nie moge (.*)",
(
"Skad wiesz, ze nie mozesz %1?",
"Byc moze moglbys %1, gdybys sprobowal.",
"Co musialbys zrobic zeby %1?",
)),
(
r"Jestem (.*)",
(
"Czy rozmawiasz ze mna poniewaz jestes %1?",
"Od jak dawna jestes %1?",
"Jak sie czujesz z tym, ze jestes %1?",
"Jak sie czujesz bedac %1?",
"Dlaczego mowisz mi, ze jestes %1?",
"Dlaczego uwazasz, ze jestes %1?",
)),
(
r"Czy jestes (.*)",
(
"Dlaczego ma to znaczenie czy jestem %1?",
"Czy wolabys gdybym nie byl %1?",
"Byc moze uwazasz, ze jestem %1.",
"Byc moze jestem %1, co o tym sadzisz?",
)),
(
r"Co (.*)",
(
"Dlaczego pytasz?",
"W jaki sposob pomoglaby ci odpowiedz na to pytanie?",
"Co o tym myslisz?",
)),
(
r"Jak (.*)",
(
"Jak sadzisz?",
"Byc moze potrafisz odpowiedziec na swoje wlasne pytanie.",
"O co tak naprawde pytasz?",
)),
(
r"Poniewaz (.*)",
(
"Czy to jest prawdziwy powod?",
"Jakie inne powody przychodza Ci na mysl?",
"Czy ten powod odnosi sie do czegos innego?",
"Jesli %1, to co jeszcze musi byc prawda?",
))
)
print("Witaj. Jak sie dzisiaj czujesz?")
cheddar.converse()
def ask(self, question):
question = question.lower()
for i in self.questions:
result = re.match(i[0], question)
if result:
print(random.choice(i[1]))
return
ela = Elizabeth()
print("Cześć, o czym chcesz porozmawiać?")
while True:
question = input().lower()
if question == "cześć" or question == "do widzenia":
print("Do widzenia")
break
ela.ask(question)