trailminator #1
@ -1,20 +1,20 @@
|
|||||||
user Dzień dobry
|
user Dzień dobry hello()
|
||||||
system Dzień dobry, jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.W czym mogę pomóc?
|
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
|
user chcę dowiedzieć się ilę zapłacę za bilet do Warszawy "request(price&to=""Warszawa"")"
|
||||||
system W jakim dniu/Kiedy podróż ma się odbyć?
|
system W jakim dniu/Kiedy podróż ma się odbyć? request(date)
|
||||||
user jutro
|
user jutro inform(date)
|
||||||
system Gdzie podróż miałaby się zacząć?
|
system Gdzie podróż miałaby się zacząć? request(from)
|
||||||
user Poznań Główny
|
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ą?
|
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
|
user warszawa główna inform(to)
|
||||||
system Ile osób będzie podróżować?
|
system Ile osób będzie podróżować? request(travelers_count)
|
||||||
user 1
|
user 1 inform(travelers_count)
|
||||||
system Ilu pasażerów będzie podróżować z ulgą?
|
system Ilu pasażerów będzie podróżować z ulgą? request(travelers_discounts)
|
||||||
user 0
|
user 0 inform(travelers_discounts)
|
||||||
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2)
|
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2) request(carriage_class)
|
||||||
user 2
|
user 2 inform(carriage_class)
|
||||||
system W jakim wagonie ma zostać wykonana rezerwacja? (przedziałowy / bezprzedziałowy)
|
system W jakim wagonie ma zostać wykonana rezerwacja? (przedziałowy / bezprzedziałowy) request(carriage_type)
|
||||||
user bez przedziałowy
|
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
|
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?
|
system Które połączenia pana / panią interesuje? request(connection)
|
||||||
user 14.15-18.45
|
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ść
|
user "Cześć " hello()
|
||||||
system Cześć, Jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.
|
"system " Cześć, Jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce. welcomemsg()
|
||||||
system W czym mogę pomóc?
|
"system " W czym mogę pomóc? welcomemsg()
|
||||||
user Chciałbym kupić bilet
|
user Chciałbym kupić bilet request(ticket)
|
||||||
system W jakim dniu miała by się odbyć podróż?
|
system W jakim dniu miała by się odbyć podróż? request(date)
|
||||||
user W najbliższą sobotę
|
user W najbliższą sobotę inform(date)
|
||||||
system Gdzie chciał(a)by Pan(i) się udać?
|
"system " Gdzie chciał(a)by Pan(i) się udać? request(to)
|
||||||
user Z Poznania do Krakowa
|
user Z Poznania do Krakowa "inform(from=""Poznań""&to=""Kraków"")"
|
|
@ -1,18 +1,18 @@
|
|||||||
user Dzień dobry
|
user Dzień dobry hello()
|
||||||
system Cześć, jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce.
|
system Cześć, jestem jestem systemem służącym do rezerwacji biletów kolejowych w Polsce. hellomsg()
|
||||||
system W czym mogę pomóc?
|
system W czym mogę pomóc? hellomsg()
|
||||||
user Chciałbym kupić 2 bilety z Poznania do Krakowa.
|
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óż?
|
system W jakim dniu miała by się odbyć podróż? request(date)
|
||||||
user W następną środę, najlepiej od rana
|
user W następną środę, najlepiej od rana inform(date)
|
||||||
system Nie zrozumiałem
|
system Nie zrozumiałem repeat()
|
||||||
user W środę
|
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ą?
|
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
|
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ą?
|
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
|
user Kraków nie główny "inform(to=""Kraków nie główny)"
|
||||||
system Ile osób będzie podróżować?
|
system Ile osób będzie podróżować? request(travelers_count)
|
||||||
user 2
|
user 2 inform(travelers_count=2)
|
||||||
system Ilu pasażerów będzie podróżować z ulgą?
|
system Ilu pasażerów będzie podróżować z ulgą? request(travelers_discount_count)
|
||||||
user 0
|
user 0 inform(travelers_discount_count=0)
|
||||||
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2)
|
system Jakiej klasy wagon byłby najbardziej odpowiedni? (1/2) request(carriage_class)
|
||||||
user 1
|
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