trailminator #1
@ -1,20 +1,20 @@
|
||||
user Dzień dobry
|
||||
system Dzień dobry, jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.W czym mogę pomóc?
|
||||
user chcę dowiedzieć się ilę zapłacę za bilet do Warszawy
|
||||
system W jakim dniu/Kiedy podróż ma się odbyć?
|
||||
user jutro
|
||||
system Gdzie podróż miałaby się zacząć?
|
||||
user Poznań Główny
|
||||
system W Warszawie dostępne są stacje: Warszawa główny, Warszawa zachodni. Która z tych stacji będzie stacją końcową?
|
||||
user warszawa główna
|
||||
system Ile osób będzie podróżować?
|
||||
user 1
|
||||
system Ilu pasażerów będzie podróżować z ulgą?
|
||||
user 0
|
||||
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2)
|
||||
user 2
|
||||
system W jakim wagonie ma zostać wykonana rezerwacja? (przedziałowy / bezprzedziałowy)
|
||||
user bez przedziałowy
|
||||
system W dniu 24.03.2022 ze stacji Poznań główny do Warszawa główna są dostępne połączenia: 8:10 - 12:24, 10:20 - 14:30, 14:15-18:45
|
||||
system Które połączenia pana / panią interesuje?
|
||||
user 14.15-18.45
|
||||
user Dzień dobry hello()
|
||||
system Dzień dobry, jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.W czym mogę pomóc? wlcomemsg()
|
||||
user chcę dowiedzieć się ilę zapłacę za bilet do Warszawy "request(price&to=""Warszawa"")"
|
||||
system W jakim dniu/Kiedy podróż ma się odbyć? request(date)
|
||||
user jutro inform(date)
|
||||
system Gdzie podróż miałaby się zacząć? request(from)
|
||||
user Poznań Główny inform(from)
|
||||
system W Warszawie dostępne są stacje: Warszawa główny, Warszawa zachodni. Która z tych stacji będzie stacją końcową? request(to)
|
||||
user warszawa główna inform(to)
|
||||
system Ile osób będzie podróżować? request(travelers_count)
|
||||
user 1 inform(travelers_count)
|
||||
system Ilu pasażerów będzie podróżować z ulgą? request(travelers_discounts)
|
||||
user 0 inform(travelers_discounts)
|
||||
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2) request(carriage_class)
|
||||
user 2 inform(carriage_class)
|
||||
system W jakim wagonie ma zostać wykonana rezerwacja? (przedziałowy / bezprzedziałowy) request(carriage_type)
|
||||
user bez przedziałowy inform(carriage_class)
|
||||
system W dniu 24.03.2022 ze stacji Poznań główny do Warszawa główna są dostępne połączenia: 8:10 - 12:24, 10:20 - 14:30, 14:15-18:45 "offer(date=""24.03.2022""&from=""Poznań główny&to=""Warszawa główna"")"
|
||||
system Które połączenia pana / panią interesuje? request(connection)
|
||||
user 14.15-18.45 inform(connection)
|
Can't render this file because it has a wrong number of fields in line 10.
|
@ -1,8 +1,8 @@
|
||||
user Cześć
|
||||
system Cześć, Jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.
|
||||
system W czym mogę pomóc?
|
||||
user Chciałbym kupić bilet
|
||||
system W jakim dniu miała by się odbyć podróż?
|
||||
user W najbliższą sobotę
|
||||
system Gdzie chciał(a)by Pan(i) się udać?
|
||||
user Z Poznania do Krakowa
|
||||
user "Cześć " hello()
|
||||
"system " Cześć, Jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce. welcomemsg()
|
||||
"system " W czym mogę pomóc? welcomemsg()
|
||||
user Chciałbym kupić bilet request(ticket)
|
||||
system W jakim dniu miała by się odbyć podróż? request(date)
|
||||
user W najbliższą sobotę inform(date)
|
||||
"system " Gdzie chciał(a)by Pan(i) się udać? request(to)
|
||||
user Z Poznania do Krakowa "inform(from=""Poznań""&to=""Kraków"")"
|
|
@ -1,18 +1,18 @@
|
||||
user Dzień dobry
|
||||
system Cześć, jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.
|
||||
system W czym mogę pomóc?
|
||||
user Chciałbym kupić 2 bilety z Poznania do Krakowa.
|
||||
system W jakim dniu miała by się odbyć podróż?
|
||||
user W następną środę, najlepiej od rana
|
||||
system Nie zrozumiałem
|
||||
user W środę
|
||||
system W poznaniu dostępne są stacje: Poznań główny, Poznań nie główny. Która z tych stacji będzie stacją początkową?
|
||||
user Poznań główny
|
||||
system W Krakowie dostępne są stacje: Kraków główny, Kraków nie główny. Która z tych stacji będzie stacją końcową?
|
||||
user Kraków nie główny
|
||||
system Ile osób będzie podróżować?
|
||||
user 2
|
||||
system Ilu pasażerów będzie podróżować z ulgą?
|
||||
user 0
|
||||
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2)
|
||||
user 1
|
||||
user Dzień dobry hello()
|
||||
system Cześć, jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce. hellomsg()
|
||||
system W czym mogę pomóc? hellomsg()
|
||||
user Chciałbym kupić 2 bilety z Poznania do Krakowa. "request(ticket&travelers_count=2&from=""Poznań""&to=""Warszawa"")"
|
||||
system W jakim dniu miała by się odbyć podróż? request(date)
|
||||
user W następną środę, najlepiej od rana inform(date)
|
||||
system Nie zrozumiałem repeat()
|
||||
user W środę inform(date)
|
||||
system W poznaniu dostępne są stacje: Poznań główny, Poznań nie główny. Która z tych stacji będzie stacją początkową? select(from)
|
||||
user Poznań główny "inform(from=""Poznań główny"")"
|
||||
system W Krakowie dostępne są stacje: Kraków główny, Kraków nie główny. Która z tych stacji będzie stacją końcową? select(to)
|
||||
user Kraków nie główny "inform(to=""Kraków nie główny)"
|
||||
system Ile osób będzie podróżować? request(travelers_count)
|
||||
user 2 inform(travelers_count=2)
|
||||
system Ilu pasażerów będzie podróżować z ulgą? request(travelers_discount_count)
|
||||
user 0 inform(travelers_discount_count=0)
|
||||
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2) request(carriage_class)
|
||||
user 1 inform(carriage_class=1)
|
Can't render this file because it has a wrong number of fields in line 2.
|
BIN
requirements-analysis.pdf
Normal file
BIN
requirements-analysis.pdf
Normal file
Binary file not shown.
1
trailminator/.gitignore
vendored
Normal file
1
trailminator/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
__pycache__
|
14
trailminator/dp.py
Normal file
14
trailminator/dp.py
Normal file
@ -0,0 +1,14 @@
|
||||
class Dp:
|
||||
def __init__(self, act, param):
|
||||
self.act = act
|
||||
self.param = param
|
||||
self.answers = {
|
||||
'request': {'imie': "welcomemsg"}
|
||||
}
|
||||
|
||||
def identify(self):
|
||||
req = self.answers.get(self.act)
|
||||
response = req.get(self.param[0]) if not req is None else "null"
|
||||
return response if not response is None else "null"
|
||||
|
||||
|
9
trailminator/dst.py
Normal file
9
trailminator/dst.py
Normal file
@ -0,0 +1,9 @@
|
||||
class Dst:
|
||||
def __init__(self):
|
||||
self.messages = []
|
||||
|
||||
def store(self, message):
|
||||
self.messages.append(message)
|
||||
|
||||
def get_messages(self):
|
||||
return self.messages
|
14
trailminator/nlg.py
Normal file
14
trailminator/nlg.py
Normal file
@ -0,0 +1,14 @@
|
||||
import random
|
||||
from urllib import response
|
||||
|
||||
from scipy import rand
|
||||
|
||||
class Nlg:
|
||||
def __init__(self, response_type: str) -> None:
|
||||
self._response_type = response_type
|
||||
self.responses = {"welcomemsg": ["I AM TRAIlMinATor!", "Cześć, jestem TrailMinator"],
|
||||
"null": "Can't hear you"}
|
||||
|
||||
def response(self) -> str:
|
||||
avail_resps = self.responses.get(self._response_type)
|
||||
return avail_resps[random.randint(0, len(avail_resps)-1)]
|
44
trailminator/nlu.py
Normal file
44
trailminator/nlu.py
Normal file
@ -0,0 +1,44 @@
|
||||
import re
|
||||
|
||||
class Nlu:
|
||||
def __init__(self):
|
||||
self.acts = {
|
||||
"request": {
|
||||
'triggers': ['jak', 'kiedy'],
|
||||
'parameters': ['imie']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def tokenize(self, string):
|
||||
clean_string = self.get_str_cleaned(string)
|
||||
|
||||
return clean_string.split()
|
||||
|
||||
|
||||
def get_str_cleaned(self, str_dirty):
|
||||
punctuation = '!"#$%&\'()*+,-./:;<=>?@[\\\\]^_`{|}~'
|
||||
new_str = str_dirty.lower()
|
||||
new_str = re.sub(' +', ' ', new_str)
|
||||
|
||||
for char in punctuation:
|
||||
new_str = new_str.replace(char,'')
|
||||
|
||||
return new_str
|
||||
|
||||
def parse(self, message):
|
||||
tokens = self.tokenize(message)
|
||||
act = None
|
||||
param = []
|
||||
|
||||
for k, v in self.acts.items():
|
||||
if any(t in v['triggers'] for t in tokens):
|
||||
act = k
|
||||
|
||||
for t in tokens:
|
||||
if t in v['parameters']:
|
||||
param.append(t)
|
||||
|
||||
|
||||
return (act, param)
|
||||
|
12
trailminator/trailminator.py
Normal file
12
trailminator/trailminator.py
Normal file
@ -0,0 +1,12 @@
|
||||
import dst
|
||||
import nlu
|
||||
import dp
|
||||
import nlg
|
||||
|
||||
if __name__ == "__main__":
|
||||
msg = "Jak masz na imie?"
|
||||
dp_params = nlu.Nlu().parse(msg)
|
||||
# print(dp_params)
|
||||
nlg_params = dp.Dp(*dp_params).identify()
|
||||
# print(nlg_params)
|
||||
print(f"{msg}\n{nlg.Nlg(nlg_params).response()}")
|
Loading…
Reference in New Issue
Block a user