reformat files
This commit is contained in:
parent
3aa43e2361
commit
31df87c99d
@ -1,10 +1,10 @@
|
||||
#JSGF V1.0 UTF-8 pl;
|
||||
|
||||
grammar confirm;
|
||||
public <potwierdzenie1> = Czy ta książka to <book>;
|
||||
public <potwierdzenie1> = Czy ta książka to <books> {books};
|
||||
public <potwierdzenie2> = Czy ta książka to <book> <author>;
|
||||
public <potwierdzenie3> = Ksiażka <book> została wypożyczona;
|
||||
public <potwierdzenie4> = Książka <book> została zarezerwowana;
|
||||
public <potwierdzenie3> = Ksiażka <books> {books} została wypożyczona;
|
||||
public <potwierdzenie4> = Książka <books> {books} została zarezerwowana;
|
||||
|
||||
<book> = <books> {books};
|
||||
<author> = <authors> {authors};
|
||||
|
137
main.py
137
main.py
@ -1,55 +1,102 @@
|
||||
from Modules import NLU
|
||||
from typing import List, Tuple
|
||||
import random
|
||||
|
||||
nlu = NLU()
|
||||
|
||||
def answer(sentence):
|
||||
nlu_match = nlu.match(sentence)
|
||||
act, slots = nlu_match['act'], nlu_match['slots']
|
||||
if act == 'hello':
|
||||
return random.choice(['Dzień dobry, witam w interaktywnej bibliotece', 'Witam w interaktywnej biblitece',
|
||||
'Dzień dobry, w czym mogę pomóc?', 'Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc?'])
|
||||
if act == 'bye':
|
||||
return random.choice(['Do zobaczenia', 'Dziękuję i życzę miłej lektury', 'Do widzenia'])
|
||||
if act == 'request':
|
||||
if 'wypożyczyć' in sentence or 'interesuje' in sentence or 'wypożyczenie' in sentence:
|
||||
for slot in slots:
|
||||
return f'Książka {slot[1]} została dla Ciebie zapisana i czeka na odbiór'
|
||||
return 'Niestety nie mamy tej książki'
|
||||
elif 'oddać' in sentence or 'zwrócić' in sentence:
|
||||
return f'Proszę przynieść książkę/i do naszej biblioteki'
|
||||
elif 'rezerwacja' in sentence or 'zarezerwować' in sentence or 'rezerwacji' in sentence:
|
||||
s = 'Książka '
|
||||
for slot in slots:
|
||||
s += slot[1] + ' '
|
||||
if slots:
|
||||
s+= 'została zarezerwowana'
|
||||
return s
|
||||
return 'Nie mamy tej książki, więc nie da się jej zarezerwować'
|
||||
elif 'biblioteka' in sentence or 'otwarta' in sentence:
|
||||
return 'Biblioteka jest otwarta od poniedziałku do soboty w godzinach 8-20, bez świąt'
|
||||
elif 'karta' in sentence or 'biblioteczna' in sentence or 'założyć' in sentence:
|
||||
return """Założyć kartę biblioteczną można przez naszą stronę www.biblioteka.pl,
|
||||
karta przyjdzie pocztą a opłata to 5 zł.
|
||||
Również można ją odebrać w naszej bibliotece od poniedziałku do soboty w godzinach 8-20"""
|
||||
elif 'zgubiłem' in sentece or 'zgubiłam' in sentence or 'zniszczyłam' in sentence or 'zniszczyłem':
|
||||
return 'W razie zgubienia lub zniszczenia karty należy przyjść do biblioteki w celu jej zablokowania.'
|
||||
if act == 'thankyou':
|
||||
return random.choice(['Proszę!', 'Nie ma za co', 'Po to tutaj jestem!'])
|
||||
if act == 'negate':
|
||||
return 'Akcja została cofnięta'
|
||||
if act == 'confirm':
|
||||
if slots:
|
||||
if 'wypożyczona' in sentence:
|
||||
return f'Książka {slots[0][1]} została wypożyczona'
|
||||
elif 'zarezerwowana' in sentence:
|
||||
return f'Książka {slots[0][1]} została zarezerwowana'
|
||||
if act == 'ack':
|
||||
return random.choice(['W czymś jeszcze mogę pomóc?', 'Co mogę jeszcze zrobić'])
|
||||
return 'Nie rozumiem pytania lub nie posiadamy takiej książki'
|
||||
|
||||
def is_in_sentence(*args: str) -> bool:
|
||||
sentence, *words = args
|
||||
return any(word for word in words if word in sentence)
|
||||
|
||||
|
||||
def act_hello() -> str:
|
||||
return random.choice(
|
||||
[
|
||||
"Dzień dobry, witam w interaktywnej bibliotece",
|
||||
"Witam w interaktywnej biblitece",
|
||||
"Dzień dobry, w czym mogę pomóc?",
|
||||
"Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc?",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def act_bye() -> str:
|
||||
return random.choice(
|
||||
["Do zobaczenia", "Dziękuję i życzę miłej lektury", "Do widzenia"]
|
||||
)
|
||||
|
||||
|
||||
def act_request(sentence: str, slots: List[Tuple[str, str]]) -> str:
|
||||
if is_in_sentence(sentence, "wypożyczyć", "interesuje", "wypożyczenie"):
|
||||
book = " ".join(slot[1] for slot in slots)
|
||||
return f"Książka {book} została dla Ciebie zapisana i czeka na odbiór"
|
||||
elif is_in_sentence(sentence, "oddać", "zwrócić"):
|
||||
return "Proszę przynieść książkę/i do naszej biblioteki"
|
||||
elif is_in_sentence(sentence, "rezerwacja", "zarezerwować", "rezerwacji"):
|
||||
if slots:
|
||||
book = " ".join(slot[1] for slot in slots)
|
||||
return f"Książka {book} została zarezerwowana"
|
||||
return "Niestety nie mamy tej książki"
|
||||
elif is_in_sentence(sentence, "biblioteka", "otwarta"):
|
||||
return "Biblioteka jest otwarta od poniedziałku do soboty w godzinach 8-20, bez świąt"
|
||||
elif is_in_sentence(sentence, "założyć kartę", "założyć konto", "założyć"):
|
||||
return """Założyć kartę biblioteczną można przez naszą stronę www.biblioteka.pl,
|
||||
karta przyjdzie pocztą a opłata to 5 zł."""
|
||||
elif is_in_sentence(
|
||||
sentence,
|
||||
"zgubiona",
|
||||
"zgubiłem kartę",
|
||||
"zgubiłam kartę",
|
||||
"zniszczyłem kartę",
|
||||
"zniszczyłam kartę",
|
||||
):
|
||||
return "W razie zgubienia lub zniszczenia karty należy przyjść do biblioteki w celu jej zablokowania."
|
||||
return "Nie rozumiem pytania lub nie posiadamy takiej książki"
|
||||
|
||||
|
||||
def act_thankyou() -> str:
|
||||
return random.choice(["Proszę!", "Nie ma za co", "Po to tutaj jestem!"])
|
||||
|
||||
|
||||
def act_negate() -> str:
|
||||
return "Akcja została cofnięta"
|
||||
|
||||
|
||||
def act_confirm(sentence: str, slots: List[Tuple[str, str]]) -> str:
|
||||
if slots:
|
||||
book = " ".join(slot[1] for slot in slots)
|
||||
if is_in_sentence(sentence, "wypożyczona"):
|
||||
return f"Książka {book} została wypożyczona"
|
||||
elif is_in_sentence(sentence, "zarezerwowana"):
|
||||
return f"Książka {book} została zarezerwowana"
|
||||
return "Nie rozumiem pytania lub nie posiadamy takiej książki"
|
||||
|
||||
|
||||
def act_ack() -> str:
|
||||
return random.choice(["W czymś jeszcze mogę pomóc?", "Co mogę jeszcze zrobić"])
|
||||
|
||||
|
||||
def answer(sentence: str) -> str:
|
||||
nlu_match = nlu.match(sentence)
|
||||
act, slots = nlu_match["act"], nlu_match["slots"]
|
||||
if act == "hello":
|
||||
return act_hello()
|
||||
elif act == "bye":
|
||||
return act_bye()
|
||||
elif act == "request":
|
||||
return act_request(sentence, slots)
|
||||
elif act == "thankyou":
|
||||
return act_thankyou()
|
||||
elif act == "negate":
|
||||
return act_negate()
|
||||
elif act == "confirm":
|
||||
return act_confirm(sentence, slots)
|
||||
elif act == "ack":
|
||||
return act_ack()
|
||||
return "Nie rozumiem pytania lub nie posiadamy takiej książki"
|
||||
|
||||
|
||||
while True:
|
||||
sentence = input('Wiadomość użytkowniak: ')
|
||||
sentence = input("Wiadomość użytkowniak: ")
|
||||
print(answer(sentence))
|
Loading…
Reference in New Issue
Block a user