NLU, DST updates, directory structurization

This commit is contained in:
Kacper 2022-06-04 14:24:51 +02:00
parent 5baf6c3c7a
commit bbe7a6853d
106 changed files with 4713 additions and 1729 deletions

View File

@ -1,51 +0,0 @@
from dialogue_state import default_state
# Monitor stanu dialogu
class DST:
def __init__(self):
self.state = default_state()
def update(self, user_act=None):
for intent, domain, slot, value in user_act:
domain = domain.lower()
intent = intent.lower()
slot = slot.lower()
k = slot
if 'inform' in intent:
if k is None:
continue
domain_dic = self.state['belief_state'][domain]
if k in domain_dic['semi']:
self.state['belief_state'][domain]['semi'][k] = value
elif k in domain_dic['book']:
self.state['belief_state'][domain]['book'][k] = value
if 'request' in intent:
if domain not in self.state['request_state']:
self.state['request_state'][domain] = {}
if k not in self.state['request_state'][domain]:
self.state['request_state'][domain][k] = 0
self.state['user_action'].append([intent, domain, slot, value])
return self.state
def init_session(self):
self.state = default_state()
# Przykładowe uruchomienie dla kodu w izolacji
"""
dst = DST()
print(dst.state)
dst.update([['hello_inform', 'Cinema', 'Price', '15 zł'], ['Inform', 'Cinema', 'Movie', 'Batman']])
print(dst.state)
"""

View File

@ -1,115 +0,0 @@
from conllu import parse_incr
from flair.data import Corpus, Sentence, Token
from flair.datasets import SentenceDataset
from flair.embeddings import StackedEmbeddings
from flair.embeddings import WordEmbeddings
from flair.embeddings import CharacterEmbeddings
from flair.embeddings import FlairEmbeddings
from flair.models import SequenceTagger
from flair.trainers import ModelTrainer
import random
import torch
import os
class NLU:
def __init__(self):
self.model = None
def nolabel2o(self, line, i):
return 'O' if line[i] == 'NoLabel' else line[i]
def conllu2flair(self, sentences, label=None):
fsentences = []
for sentence in sentences:
fsentence = Sentence()
for token in sentence:
ftoken = Token(token['form'])
if label:
ftoken.add_tag(label, token[label])
fsentence.add_token(ftoken)
fsentences.append(fsentence)
return SentenceDataset(fsentences)
def load_model(self, model_path):
self.model = SequenceTagger.load(model_path)
def train_model(self, train_path, test_path):
fields = ['id', 'form', 'frame', 'slot']
with open(train_path, encoding='utf-8') as trainfile:
trainset = list(parse_incr(trainfile, fields=fields, field_parsers={'slot': self.nolabel2o}))
with open(test_path, encoding='utf-8') as testfile:
testset = list(parse_incr(testfile, fields=fields, field_parsers={'slot': self.nolabel2o}))
random.seed(42)
torch.manual_seed(42)
if torch.cuda.is_available():
torch.cuda.manual_seed(0)
torch.cuda.manual_seed_all(0)
torch.backends.cudnn.enabled = False
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
corpus = Corpus(train=self.conllu2flair(trainset, 'slot'), test=self.conllu2flair(testset, 'slot'))
tag_dictionary = corpus.make_tag_dictionary(tag_type='slot')
embedding_types = [
WordEmbeddings('pl'),
FlairEmbeddings('pl-forward'),
FlairEmbeddings('pl-backward'),
CharacterEmbeddings(),
]
embeddings = StackedEmbeddings(embeddings=embedding_types)
tagger = SequenceTagger(hidden_size=256, embeddings=embeddings,
tag_dictionary=tag_dictionary,
tag_type='slot', use_crf=True)
if not os.path.isdir('slot-model-pl'):
trainer = ModelTrainer(tagger, corpus)
trainer.train('slot-model-pl',
learning_rate=0.1,
mini_batch_size=32,
max_epochs=10,
train_with_dev=True)
try:
self.load_model('slot-model-pl/best-model.pt')
except:
self.load_model('slot-model-pl/final-model.pt')
# Tworzenie osobnego pliku z metrykami dla modelu
log_file = open('slot-model-pl/training.log', encoding='utf-8')
log_lines = log_file.readlines()
log_file.close()
with open('slot-model-pl/training.log', encoding='utf-8') as log_file, open('evaluation.txt', 'w',
encoding='utf-8') \
as eval_file:
for num, line in enumerate(log_file):
if line == 'Results:\n':
lines_to_write_start = num
eval_file.write('*** This evaluation file was generated automatically by the training script ***\n\n')
for line in log_lines[lines_to_write_start:]:
eval_file.write(line)
def predict(self, sentence):
sentence = sentence.split()
csentence = [{'form': word} for word in sentence]
fsentence = self.conllu2flair([csentence])[0]
self.model.predict(fsentence)
return [(token, ftoken.get_tag('slot').value) for token, ftoken in zip(sentence, fsentence)]
# Można przetestować...
# nlu = NLU()
# nlu.train_model('train-pl.conllu', 'test-pl.conllu')
# lub
# nlu.load_model('slot-model-pl/final-model.pt')
# print(nlu.predict("Poproszę jeden bilet na film Batman na imię Jan Kowalski"))
# Zwrócone:
# [('Poproszę', 'O'), ('jeden', 'O'), ('bilet', 'O'), ('na', 'O'), ('film', 'O'), ('Batman', 'B-movie'),
# ('na', 'O'), ('imię', 'O'), ('Jan', 'B-name'), ('Kowalski', 'I-name')]

View File

@ -1,32 +0,0 @@
*** This evaluation file was generated automatically by the training script ***
Results:
- F-score (micro) 0.2609
- F-score (macro) 0.1489
- Accuracy 0.1538
By class:
precision recall f1-score support
name 0.1429 0.2000 0.1667 5
ticketnumber 0.5000 1.0000 0.6667 3
movie 0.3333 0.5000 0.4000 2
seat 0.0000 0.0000 0.0000 3
e-mail 0.0000 0.0000 0.0000 3
phone 1.0000 1.0000 1.0000 1
title 0.0000 0.0000 0.0000 2
row 0.0000 0.0000 0.0000 2
reducedQuantity 0.0000 0.0000 0.0000 2
purchaseType 0.0000 0.0000 0.0000 1
bankAccountNumber 0.0000 0.0000 0.0000 1
email 0.0000 0.0000 0.0000 1
hour 0.0000 0.0000 0.0000 1
time 0.0000 0.0000 0.0000 1
seatPlacement 0.0000 0.0000 0.0000 1
micro avg 0.3529 0.2069 0.2609 29
macro avg 0.1317 0.1800 0.1489 29
weighted avg 0.1338 0.2069 0.1598 29
samples avg 0.1538 0.1538 0.1538 29
2022-05-06 21:01:49,500 ----------------------------------------------------------------------------------------------------

View File

@ -1,545 +0,0 @@
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: wybieram 18:00
# intent: inform
# slots: 18:00:hour
1 wybieram inform NoLabel
2 18:00 inform B-hour
# text: Tak
# intent: act
# slots:
1 Tak act NoLabel
# text: 1
# intent: inform
# slots: 1:rowplacement
1 1 inform B-rowplacement
# text: 16.03
# intent: inform
# slots: 16.03:date
1 16.03 inform B-date
# text: przez internet
# intent: inform
# slots: przezinternet:purchaseType
1 przez inform B-purchaseType
2 internet inform I-purchaseType
# text: 485554893
# intent: inform
# slots: 485554893:phone
1 485554893 inform B-phone
# text: Ile kosztują bielty na Sing 2?
# intent: request
# slots:
1 Ile request NoLabel
2 kosztują request NoLabel
3 bielty request NoLabel
4 na request NoLabel
5 Sing request NoLabel
6 2 request NoLabel
7 ? request NoLabel
# text: Rozumiem. Dziękuję
# intent: ack thankyou
# slots:
1 Rozumiem ack_thankyou NoLabel
2 . ack_thankyou NoLabel
3 Dziękuję ack_thankyou NoLabel
# text: emkarcinos42069@buziaczek.pl 123123123
# intent: inform inform
# slots: 123123123:phone
1 emkarcinos42069@buziaczek.pl inform_inform NoLabel
2 123123123 inform_inform B-phone
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: Chcialbym bilet na Batman
# intent: request request
# slots: Batman:movie
1 Chcialbym request_request NoLabel
2 bilet request_request NoLabel
3 na request_request NoLabel
4 Batman request_request B-movie
# text: lalalalili@gmai.com, 111222111
# intent: inform inform
# slots: 111222111:phone
1 lalalalili@gmai.com, inform_inform NoLabel
2 111222111 inform_inform B-phone
# text: Co w przypadku gdy się spóźnie?
# intent: reqmore
# slots:
1 Co reqmore NoLabel
2 w reqmore NoLabel
3 przypadku reqmore NoLabel
4 gdy reqmore NoLabel
5 się reqmore NoLabel
6 spóźnie reqmore NoLabel
7 ? reqmore NoLabel
# text: Cześć
# intent: hello
# slots:
1 Cześć hello NoLabel
# text: Poproszę bilet na ostatni seans Batmana
# intent: inform inform
# slots: ostatni:time
1 Poproszę inform_inform NoLabel
2 bilet inform_inform NoLabel
3 na inform_inform NoLabel
4 ostatni inform_inform B-time
5 seans inform_inform NoLabel
6 Batmana inform_inform NoLabel
# text: Chciałbym kupić seans
# intent: request
# slots:
1 Chciałbym request NoLabel
2 kupić request NoLabel
3 seans request NoLabel
# text: chciałbym się dowiedzieć co będzie 25 marca
# intent: request
# slots:
1 chciałbym request NoLabel
2 się request NoLabel
3 dowiedzieć request NoLabel
4 co request NoLabel
5 będzie request NoLabel
6 25 request NoLabel
7 marca request NoLabel
# text: Jan Kowalski
# intent: inform
# slots: JanKowalski:name
1 Jan inform B-name
2 Kowalski inform I-name
# text: Jakie są godziny tych seansów?
# intent: request
# slots:
1 Jakie request NoLabel
2 są request NoLabel
3 godziny request NoLabel
4 tych request NoLabel
5 seansów request NoLabel
6 ? request NoLabel
# text: Tak
# intent: affirm
# slots:
1 Tak affirm NoLabel
# text: Jeden ulgowy jeden senior
# intent: inform
# slots: senior:tickettype
1 Jeden inform_ NoLabel
2 ulgowy inform_ NoLabel
3 jeden inform_ NoLabel
4 senior inform_ B-tickettype
# text: Tak
# intent: affirm
# slots:
1 Tak affirm NoLabel
# text: poproszę o miejsce 5 w rzędzie 10
# intent: inform
# slots: 5:seat,10:row
1 poproszę inform NoLabel
2 o inform NoLabel
3 miejsce inform NoLabel
4 5 inform B-seat
5 w inform NoLabel
6 rzędzie inform NoLabel
7 10 inform B-row
# text: Nie wiem czy masz jakieś propozycję na dziś ?
# intent: request
# slots:
1 Nie request NoLabel
2 wiem request NoLabel
3 czy request NoLabel
4 masz request NoLabel
5 jakieś request NoLabel
6 propozycję request NoLabel
7 na request NoLabel
8 dziś request NoLabel
9 ? request NoLabel
# text: chciałbym kupić bilet ale nie wiem na co
# intent: help
# slots:
1 chciałbym help NoLabel
2 kupić help NoLabel
3 bilet help NoLabel
4 ale help NoLabel
5 nie help NoLabel
6 wiem help NoLabel
7 na help NoLabel
8 co help NoLabel
# text: 30 marca o godzinie 12:10
# intent: inform inform
# slots: 12:10:hour
1 30 inform_inform NoLabel
2 marca inform_inform NoLabel
3 o inform_inform NoLabel
4 godzinie inform_inform NoLabel
5 12:10 inform_inform B-hour
# text: Chciałbym kupić bilet na NajlepszaNAzwaFilmu
# intent: request inform
# slots: NajlepszaNAzwaFilmu:movie
1 Chciałbym request_inform NoLabel
2 kupić request_inform NoLabel
3 bilet request_inform NoLabel
4 na request_inform NoLabel
5 NajlepszaNAzwaFilmu request_inform B-movie
# text: Chciałbym zarezerwować film
# intent: null
# slots:
1 Chciałbym null NoLabel
2 zarezerwować null NoLabel
3 film null NoLabel
# text: A później nie ma?
# intent: reqmore
# slots:
1 A reqmore NoLabel
2 później reqmore NoLabel
3 nie reqmore NoLabel
4 ma reqmore NoLabel
5 ? reqmore NoLabel
# text: Jedno dla mnie, drugie dla kota
# intent: infrom
# slots: 2:quantity
1 Jedno infrom NoLabel
2 dla infrom NoLabel
3 mnie infrom NoLabel
4 , infrom NoLabel
5 drugie infrom NoLabel
6 dla infrom NoLabel
7 kota infrom NoLabel
# text: To jeden tylko dla mnie proszę
# intent: inform
# slots: jeden:quantity
1 To inform NoLabel
2 jeden inform B-quantity
3 tylko inform NoLabel
4 dla inform NoLabel
5 mnie inform NoLabel
6 proszę inform NoLabel
# text: A gdzie się znajduje?
# intent: reqmore
# slots:
1 A reqmore NoLabel
2 gdzie reqmore NoLabel
3 się reqmore NoLabel
4 znajduje reqmore NoLabel
5 ? reqmore NoLabel
# text: na moje
# intent: null
# slots:
1 na null NoLabel
2 moje null NoLabel
# text: Chciałbym kupić bilet
# intent: inform
# slots: book:task
1 Chciałbym inform NoLabel
2 kupić inform NoLabel
3 bilet inform NoLabel
# text: nie jestem pewien, za ile jest bilet?
# intent: reqmore
# slots:
1 nie reqmore NoLabel
2 jestem reqmore NoLabel
3 pewien reqmore NoLabel
4 , reqmore NoLabel
5 za reqmore NoLabel
6 ile reqmore NoLabel
7 jest reqmore NoLabel
8 bilet reqmore NoLabel
9 ? reqmore NoLabel
# text: A Uncharted
# intent: inform request
# slots: Uncharted:title
1 A inform_request NoLabel
2 Uncharted inform_request B-title
# text: Jakie płatności przyjmujecie?
# intent: request
# slots:
1 Jakie request NoLabel
2 płatności request NoLabel
3 przyjmujecie request NoLabel
4 ? request NoLabel
# text: Dzień dobry.
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
3 . hello NoLabel
# text: pierwszy rząd
# intent: inform
# slots: pierwszy:row
1 pierwszy inform B-row
2 rząd inform NoLabel
# text: Chcę dokonać zakupu
# intent: inform
# slots: buy:task
1 Chcę inform NoLabel
2 dokonać inform NoLabel
3 zakupu inform NoLabel
# text: dowidzenia
# intent: bye
# slots:
1 dowidzenia bye NoLabel
# text: Jakub Kaczmarek
# intent: inform
# slots: JanKaczmarek:name
1 Jakub inform NoLabel
2 Kaczmarek inform NoLabel
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: Nie dostałam potwierdzenia
# intent: help
# slots: Niedostałampotwierdzenia:issue
1 Nie help B-issue
2 dostałam help I-issue
3 potwierdzenia help I-issue
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: z tyłu, na środku (aby ekran był centralnie widoczny)
# intent: inform
# slots:
1 z inform NoLabel
2 tyłu inform NoLabel
3 , inform NoLabel
4 na inform NoLabel
5 środku inform NoLabel
6 ( inform NoLabel
7 aby inform NoLabel
8 ekran inform NoLabel
9 był inform NoLabel
10 centralnie inform NoLabel
11 widoczny inform NoLabel
12 ) inform NoLabel
# text: Poproszę miejsce 11 w przedostatnim rzędzie. I 7 w ostatnim rzędzie
# intent: inform inform
# slots: 7wostatnimrzędzie:seat
1 Poproszę inform_inform NoLabel
2 miejsce inform_inform NoLabel
3 11 inform_inform NoLabel
4 w inform_inform NoLabel
5 przedostatnim inform_inform NoLabel
6 rzędzie inform_inform NoLabel
7 . inform_inform NoLabel
8 I inform_inform NoLabel
9 7 inform_inform B-seat
10 w inform_inform I-seat
11 ostatnim inform_inform I-seat
12 rzędzie inform_inform I-seat
# text: Chciałbym anulować rezerwację
# intent: deny inform
# slots: reservation:task
1 Chciałbym deny_inform NoLabel
2 anulować deny_inform NoLabel
3 rezerwację deny_inform NoLabel
# text: Chciałbym zarezerwować bilety na Batman i zemsta Muminków jutro o 21:00
# intent: request request request request
# slots: 21:00:hour
1 Chciałbym request_request_request_request NoLabel
2 zarezerwować request_request_request_request NoLabel
3 bilety request_request_request_request NoLabel
4 na request_request_request_request NoLabel
5 Batman request_request_request_request NoLabel
6 i request_request_request_request NoLabel
7 zemsta request_request_request_request NoLabel
8 Muminków request_request_request_request NoLabel
9 jutro request_request_request_request NoLabel
10 o request_request_request_request NoLabel
11 21:00 request_request_request_request B-hour
# text: Nie, rozmyśliłam się.
# intent: deny
# slots: cancelbook:task
1 Nie deny NoLabel
2 , deny NoLabel
3 rozmyśliłam deny NoLabel
4 się deny NoLabel
5 . deny NoLabel
# text: To 12 i 13 w J proszę
# intent: inform inform inform
# slots: 13:seat
1 To inform_inform_inform NoLabel
2 12 inform_inform_inform NoLabel
3 i inform_inform_inform NoLabel
4 13 inform_inform_inform B-seat
5 w inform_inform_inform NoLabel
6 J inform_inform_inform NoLabel
7 proszę inform_inform_inform NoLabel
# text: Jeden dla mnie, drugi dla kota
# intent: inform
# slots: 2:ticketnumber
1 Jeden inform NoLabel
2 dla inform NoLabel
3 mnie inform NoLabel
4 , inform NoLabel
5 drugi inform NoLabel
6 dla inform NoLabel
7 kota inform NoLabel
# text: O, super. O której?
# intent: request
# slots: Uncharted:movie
1 O request NoLabel
2 , request NoLabel
3 super request NoLabel
4 . request NoLabel
5 O request NoLabel
6 której request NoLabel
7 ? request NoLabel
# text: Wybieram wszystkie
# intent: inform
# slots: all:seat
1 Wybieram inform NoLabel
2 wszystkie inform NoLabel
# text: 7 normalnych i 4 ulgowe
# intent: inform inform
# slots: 4:ticketnumber,ulgowe:tickettype
1 7 inform_inform NoLabel
2 normalnych inform_inform NoLabel
3 i inform_inform NoLabel
4 4 inform_inform B-ticketnumber
5 ulgowe inform_inform B-tickettype
# text: rząd 10
# intent: inform
# slots: 10:row
1 rząd inform NoLabel
2 10 inform B-row
# text: Chcę kupić bilety na film
# intent: inform
# slots: buy:task
1 Chcę inform NoLabel
2 kupić inform NoLabel
3 bilety inform NoLabel
4 na inform NoLabel
5 film inform NoLabel
# text: Kupić
# intent: inform
# slots: buy:task
1 Kupić inform NoLabel
# text: Najlepiej rzędy na górze
# intent: null
# slots:
1 Najlepiej null NoLabel
2 rzędy null NoLabel
3 na null NoLabel
4 górze null NoLabel
# text: Wybieram 6-7
# intent: inform inform
# slots: 7:seat
1 Wybieram inform_inform NoLabel
2 6-7 inform_inform NoLabel
# text: 123@132.pl
# intent: inform
# slots: 123@132.pl:e-mail
1 123@132.pl inform B-e-mail
# text: Chciał bym zamówić bilet na film Minionki dzisiaj o 18.30
# intent: inform inform inform
# slots: 18.30:time
1 Chciał inform_inform_inform NoLabel
2 bym inform_inform_inform NoLabel
3 zamówić inform_inform_inform NoLabel
4 bilet inform_inform_inform NoLabel
5 na inform_inform_inform NoLabel
6 film inform_inform_inform NoLabel
7 Minionki inform_inform_inform NoLabel
8 dzisiaj inform_inform_inform NoLabel
9 o inform_inform_inform NoLabel
10 18.30 inform_inform_inform B-time
# text: Czy na 'batman i zemsta muminków' w ten dzień dostępne są miejsca w ostatnim rzędzie?
# intent: request
# slots: sit:task,Batmanizemstamuminków:movie
1 Czy request NoLabel
2 na request NoLabel
3 batman request B-movie
4 i request I-movie
5 zemsta request I-movie
6 muminków request I-movie
7 w request NoLabel
8 ten request NoLabel
9 dzień request NoLabel
10 dostępne request NoLabel
11 są request NoLabel
12 miejsca request NoLabel
13 w request NoLabel
14 ostatnim request NoLabel
15 rzędzie request NoLabel
16 ? request NoLabel
# text: Chciałbym dowiedzieć się czegoś o aktualnym repertuarze
# intent: request
# slots: closestscreenings:task
1 Chciałbym request NoLabel
2 dowiedzieć request NoLabel
3 się request NoLabel
4 czegoś request NoLabel
5 o request NoLabel
6 aktualnym request NoLabel
7 repertuarze request NoLabel

Binary file not shown.

View File

@ -0,0 +1,285 @@
Dzień dobry hello
Chciałbym kupić bilet na Batman w środę. request
A jakie są dostępne request
wybieram 18:00 inform
jakie dane muszę podać? reqmore
ok, Adam Nowak aaanowak@mail.com inform
miejsca w tylnych rzędach inform
poproszę miejsca od 10 do 12 w ostatnim rzędzie inform
Tak act
teraz inform
dziękuję, do widzenia bye
Cześć hello
chciałbym zarezerwować bilet na batmana help
16.03 inform
17:00 inform
1 inform
studencki inform
ok affirm
1 inform
2 inform
Jan Kowalski inform
Dzień dobry hello
Dzień dobry, chciałabym złożyć reklamację biletów inform
Film miał zacząć się o 19, natomiast pracownicy kina odmówili mi wpuszczenia na seans do godziny 19:30, przez co nie mogłam zobaczyć wszystkich reklam 🙁 inform
12093098490832030210334434 inform
przez internet inform
485554893 inform
Dziękuję ack
Witam hello
Jakie są najbliższe seanse? request
W jakim kinie? request
Gdzie jest to kino? request
Ile kosztują bielty na Sing 2? request
W jaki inny dzień bilety kosztują mniej? reqmore
Rozumiem. Chcę w takim razie zarezerwować dwa bilety na Sing 2 request
Jeden normalny i ulgowy inform
emkarcinos42069@buziaczek.pl 123123123 inform
A jakie miejsca zostały zarezerwowane? request
Chciałbym miejsca najbliżej ekranu request
A jakie są miejsca najbliżej ekranu? request
A jakie są DOSTĘPNE miejsca najbliżej ekranu? request
Rozumiem. Dziękuję ack
Dzień dobry hello
Chcialbym bilet na Batman request
jutro popołudniu inform
z przodu inform
rząd 2 miejsca 6,7 inform
Adrian Charkiewicz, gfasfaf@gmail.com inform
tak zgadza się act
Cześć hello
Chciałbym obejrzeć film help
Chce iść na jakoś to będzie inform
Wybieram godzinę 20:45 inform
20 inform
Bilety ulgowe inform
Tak affirm
Może być ack
nie chce podawać numeru telefonu deny
lalalalili@gmai.com, 111222111 inform
Ile minut przed senansem muszę być na miejscu, aby odebrać bilet? reqmore
Co w przypadku gdy się spóźnie? reqmore
Rozumiem ack
Nie deny
Dziękuje za obsługe thankyou
Dzień dobry! hello
Chciałbym kupić seans request
Bilet na seans request
Poproszę bilet na ostatni seans Batmana inform
test@test.pl inform
123456789 inform
Dzień dobry hello
chciałbym się dowiedzieć jaki jest aktualny repertuar request
chciałbym się dowiedzieć co będzie 25 marca request
o czym jest straszny film 10? request
poproszę 3 bilety request
Jan Kowalski inform
jan.kowalski@pies.pl inform
na tyłach inform
poproszę inform
Witam hello
Jaki jest repertuar na ten tydzień w kinie Rialto? request
Jakie są godziny tych seansów? request
Cały tydzień inform
Witam hello
Możesz mi podać jakie są najbliższe seanse? request
A w jakim to kinie? null
Chcę wiedzieć w jakim kinie podajesz seanse null
kino lokalizacja request
Ile kosztują bielty na Niewypanda? null
Tak affirm
A kiedy bilety są najtańsze? request
W jaki dzień bilety są najtańsze? reqmore
W takim razie chciałbym zarezerować dwa miejsca na film to nie wipanda w niedzielę null
Tak affirm
Jeden ulgowy jeden senior inform
Z tyłu sali null
9 i 10 inform
Ostatni inform
Witam hello
chciałbym kupić bilet ale nie wiem na co help
Nie wiem czy masz jakieś propozycję na dziś ? request
poprosze inni ludzie na 14:1313 null
tak dokładnie tak affirm
1 inform
daleko od ludzi null
chciałbym aby nie było ludzi w okół mnie null
Czy mogę poznać zatłoczenie aktualne sali ?\ request
poproszę o miejsce 5 w rzędzie 10 inform
ju tu inform
Halo hello
Chciałbym kupić bilet na NajlepszaNAzwaFilmu inform
30 marca o godzinie 12:10 inform
W okolicach środka, środkowego rzędu inform
7 rząd miejce 11 inform
Emil Kowalski inform
xyz@gmail.com inform
Tak act
Teraz inform
Dziękuję bye
Dzień dobry! hello
Chciałbym zarezerwować film null
Bilet na film inform
To nie wypanda i Batman inform
Poproszę bilet na Batmana jutro o 15:00 i pande w sobotę na 17:00 inform
Elo hello
Chcę iść do kina request
CHCĘ IŚĆ DO KINA repeat
A co macie request
No pewnie jakoś będzie. Na fanstaczne zernęta proszę zatem. inform
A co gracie? request
A jutro? reqmore
to na dzisiaj na śmirc na nilu inform
woeczprkem moze inform
A później nie ma? reqmore
No dobła affirm
Jedno dla mnie, drugie dla kota inform
A jest ulga dla zwierząt? reqmore
To jeden tylko dla mnie proszę inform
iwona.christop@gmail.com, 7368507466 inform
A gdzie się znajduje? reqmore
No dobła, niech będzie ack
Dzień dobry hello
Chciałbym kupić bilet inform
batman inform
dzisiaj, teraz inform
nie jestem pewien, za ile jest bilet? reqmore
podaj mi informacje o bilecie reqmore
wszystkie request
czy jest to film 2D czy 3D? Z napisami czy z dubbingiem? help
zarezerwuj ten bilet inform
na moje null
karida@st.amu.edu.pl inform
wygodne null
na końcu sali request
miejsce 11 inform
przed ostatnim inform
Dzień dobry. hello
Jakie płatności przyjmujecie? request
Cześć bocie hello
Co można u was zjeść? request
Dobra, czy jutro gracie batman? inform
A Uncharted inform
19:30 inform
6 inform
3 normalne i 3 ulgowe inform
Ok ack
Dziękuję systemie thankyou
Cześć systemie hello
Czy gracie Batman? request
Chciałym 15.04 inform
22 null
Tak affirm
Jakie macie zniżki? request
1 weteran i 1 ulgowy inform
dól lewo inform
pierwszy rząd inform
5-6 inform
Tak, poproszę null
Chcę dokonać zakupu inform
jan kowalski inform
Cześć hello
dowidzenia bye
Dzień dobry hello
chciał bym zarezerwować bilet na minionki o 18.30 inform
poprosze w takim razie To nie wypanda o 18:45 request
dzisiaj inform
2 inform
ulgowe inform
12 rząd inform
poproszę 1 inform
Jakub Kaczmarek inform
dzień dobry hello
Nie dostałam potwierdzenia help
iwona.christop@gmail.com inform
Dzięki thankyou
Dzień dobry hello
Chciałabym zarezerwować bilet do kina request
Na wyjdz za mnie inform
dzis wieczorem inform
Martyna Druminska mdruminska074@gmail.com inform
z tyłu, na środku (aby ekran był centralnie widoczny) inform
Dzień dobry hello
Chciałbym wypożyczyć film null
Co obsługujecie? request
Chciałbym poznać akltualny repertuar request
Chciałbym zarezerwować bilety na Batman i zemsta Muminków jutro o 21:00 request
Taki O okita@mail.com inform
Wygodne null
Na końcu sali inform
Poproszę miejsce 11 w przedostatnim rzędzie. I 7 w ostatnim rzędzie inform
Zgadza się act
Chcę tylko zarezerwować inform
Super act
Chciałbym anulować rezerwację inform
Tak act
To wszystko, dziękuję bye
Elo hello
Chcę do kina się przejść null
Anulujmy rezerwację w takim razie inform
Nie, rozmyśliłam się. deny
Coś bym zjadła null
Z j a d ł a b y m c o ś null
O, bilet kupię zatem inform
Zaskocz mnie request
O, super. O której? request
Na 21 proszę inform
Jeden dla mnie, drugi dla kota inform
normalny i ulgowy inform
Na środku jakoś null
IJ null
I J inform
To 12 i 13 w J proszę inform
Jan Kowalski inform
Dzięki ❤️ thankyou
Dzień dobry hello
Chcę kupić bilety na film inform
A jakie filmy gracie? request
O czym jest Bunkier Strachu? request
Czy gracie jakieś komedie? request
W takim razie chcę zarezerwować bilety na film to Niewypanda inform
10.04 inform
11 inform
7 normalnych i 5 ulgowych\ inform
7 normalnych i 4 ulgowe inform
Które rzędzy są dostępne? null
tak affirm
rząd 10 inform
Dobrze null
Wybieram wszystkie inform
Tomcio Paluch inform
Dziękuję thankyou
Cześć hello
Jaka jest nazwa kina null
Chciałbym sprawdzić repertuar na 23 maja request
Jakie są dostępne miejsca na film 'Batman'? request
Najlepiej rzędy na górze null
Jaki jest zakres rzędów? request
To w 12 inform
Wybieram 6-7 inform
Kupić inform
2 bilety inform
Jakie są rodzaje biletów? request
Dla kogo jest bilet ulgowy? request
To poproszę bilet ulgowy inform
Już wybrałem miejsca null
Dzień dobry hello
Chciał bym zamówić bilet na film Minionki dzisiaj o 18.30 inform
jakie są dostępne ulgi? reqmore
poprosze bilet ulgowy inform
tak, daleko od ekranu inform
dobrze affirm
123@132.pl inform
123456789 inform
czy na miejscu mozna kupić popcorn? request
dziękuje thankyou
Cześć hello
Chciałbym dowiedzieć się czegoś o aktualnym repertuarze request
Tak ack
W sumie tak. Interesuje mnie najbliższa sobota request
Czy na 'batman i zemsta muminków' w ten dzień dostępne są miejsca w ostatnim rzędzie? request
A przedostatni? Interesują mnie dwa miejsca koło siebie request
W takim razie je poproszę inform
Jan Kowalski, kowalski69@gmail.com inform
Tak ack
Przed filmem inform
1 Dzień dobry hello
2 Chciałbym kupić bilet na Batman w środę. request
3 A jakie są dostępne request
4 wybieram 18:00 inform
5 jakie dane muszę podać? reqmore
6 ok, Adam Nowak aaanowak@mail.com inform
7 miejsca w tylnych rzędach inform
8 poproszę miejsca od 10 do 12 w ostatnim rzędzie inform
9 Tak act
10 teraz inform
11 dziękuję, do widzenia bye
12 Cześć hello
13 chciałbym zarezerwować bilet na batmana help
14 16.03 inform
15 17:00 inform
16 1 inform
17 studencki inform
18 ok affirm
19 1 inform
20 2 inform
21 Jan Kowalski inform
22 Dzień dobry hello
23 Dzień dobry, chciałabym złożyć reklamację biletów inform
24 Film miał zacząć się o 19, natomiast pracownicy kina odmówili mi wpuszczenia na seans do godziny 19:30, przez co nie mogłam zobaczyć wszystkich reklam 🙁 inform
25 12093098490832030210334434 inform
26 przez internet inform
27 485554893 inform
28 Dziękuję ack
29 Witam hello
30 Jakie są najbliższe seanse? request
31 W jakim kinie? request
32 Gdzie jest to kino? request
33 Ile kosztują bielty na Sing 2? request
34 W jaki inny dzień bilety kosztują mniej? reqmore
35 Rozumiem. Chcę w takim razie zarezerwować dwa bilety na Sing 2 request
36 Jeden normalny i ulgowy inform
37 emkarcinos42069@buziaczek.pl 123123123 inform
38 A jakie miejsca zostały zarezerwowane? request
39 Chciałbym miejsca najbliżej ekranu request
40 A jakie są miejsca najbliżej ekranu? request
41 A jakie są DOSTĘPNE miejsca najbliżej ekranu? request
42 Rozumiem. Dziękuję ack
43 Dzień dobry hello
44 Chcialbym bilet na Batman request
45 jutro popołudniu inform
46 z przodu inform
47 rząd 2 miejsca 6,7 inform
48 Adrian Charkiewicz, gfasfaf@gmail.com inform
49 tak zgadza się act
50 Cześć hello
51 Chciałbym obejrzeć film help
52 Chce iść na jakoś to będzie inform
53 Wybieram godzinę 20:45 inform
54 20 inform
55 Bilety ulgowe inform
56 Tak affirm
57 Może być ack
58 nie chce podawać numeru telefonu deny
59 lalalalili@gmai.com, 111222111 inform
60 Ile minut przed senansem muszę być na miejscu, aby odebrać bilet? reqmore
61 Co w przypadku gdy się spóźnie? reqmore
62 Rozumiem ack
63 Nie deny
64 Dziękuje za obsługe thankyou
65 Dzień dobry! hello
66 Chciałbym kupić seans request
67 Bilet na seans request
68 Poproszę bilet na ostatni seans Batmana inform
69 test@test.pl inform
70 123456789 inform
71 Dzień dobry hello
72 chciałbym się dowiedzieć jaki jest aktualny repertuar request
73 chciałbym się dowiedzieć co będzie 25 marca request
74 o czym jest straszny film 10? request
75 poproszę 3 bilety request
76 Jan Kowalski inform
77 jan.kowalski@pies.pl inform
78 na tyłach inform
79 poproszę inform
80 Witam hello
81 Jaki jest repertuar na ten tydzień w kinie Rialto? request
82 Jakie są godziny tych seansów? request
83 Cały tydzień inform
84 Witam hello
85 Możesz mi podać jakie są najbliższe seanse? request
86 A w jakim to kinie? null
87 Chcę wiedzieć w jakim kinie podajesz seanse null
88 kino lokalizacja request
89 Ile kosztują bielty na Niewypanda? null
90 Tak affirm
91 A kiedy bilety są najtańsze? request
92 W jaki dzień bilety są najtańsze? reqmore
93 W takim razie chciałbym zarezerować dwa miejsca na film to nie wipanda w niedzielę null
94 Tak affirm
95 Jeden ulgowy jeden senior inform
96 Z tyłu sali null
97 9 i 10 inform
98 Ostatni inform
99 Witam hello
100 chciałbym kupić bilet ale nie wiem na co help
101 Nie wiem czy masz jakieś propozycję na dziś ? request
102 poprosze inni ludzie na 14:1313 null
103 tak dokładnie tak affirm
104 1 inform
105 daleko od ludzi null
106 chciałbym aby nie było ludzi w okół mnie null
107 Czy mogę poznać zatłoczenie aktualne sali ?\ request
108 poproszę o miejsce 5 w rzędzie 10 inform
109 ju tu inform
110 Halo hello
111 Chciałbym kupić bilet na NajlepszaNAzwaFilmu inform
112 30 marca o godzinie 12:10 inform
113 W okolicach środka, środkowego rzędu inform
114 7 rząd miejce 11 inform
115 Emil Kowalski inform
116 xyz@gmail.com inform
117 Tak act
118 Teraz inform
119 Dziękuję bye
120 Dzień dobry! hello
121 Chciałbym zarezerwować film null
122 Bilet na film inform
123 To nie wypanda i Batman inform
124 Poproszę bilet na Batmana jutro o 15:00 i pande w sobotę na 17:00 inform
125 Elo hello
126 Chcę iść do kina request
127 CHCĘ IŚĆ DO KINA repeat
128 A co macie request
129 No pewnie jakoś będzie. Na fanstaczne zernęta proszę zatem. inform
130 A co gracie? request
131 A jutro? reqmore
132 to na dzisiaj na śmirc na nilu inform
133 woeczprkem moze inform
134 A później nie ma? reqmore
135 No dobła affirm
136 Jedno dla mnie, drugie dla kota inform
137 A jest ulga dla zwierząt? reqmore
138 To jeden tylko dla mnie proszę inform
139 iwona.christop@gmail.com, 7368507466 inform
140 A gdzie się znajduje? reqmore
141 No dobła, niech będzie ack
142 Dzień dobry hello
143 Chciałbym kupić bilet inform
144 batman inform
145 dzisiaj, teraz inform
146 nie jestem pewien, za ile jest bilet? reqmore
147 podaj mi informacje o bilecie reqmore
148 wszystkie request
149 czy jest to film 2D czy 3D? Z napisami czy z dubbingiem? help
150 zarezerwuj ten bilet inform
151 na moje null
152 karida@st.amu.edu.pl inform
153 wygodne null
154 na końcu sali request
155 miejsce 11 inform
156 przed ostatnim inform
157 Dzień dobry. hello
158 Jakie płatności przyjmujecie? request
159 Cześć bocie hello
160 Co można u was zjeść? request
161 Dobra, czy jutro gracie batman? inform
162 A Uncharted inform
163 19:30 inform
164 6 inform
165 3 normalne i 3 ulgowe inform
166 Ok ack
167 Dziękuję systemie thankyou
168 Cześć systemie hello
169 Czy gracie Batman? request
170 Chciałym 15.04 inform
171 22 null
172 Tak affirm
173 Jakie macie zniżki? request
174 1 weteran i 1 ulgowy inform
175 dól lewo inform
176 pierwszy rząd inform
177 5-6 inform
178 Tak, poproszę null
179 Chcę dokonać zakupu inform
180 jan kowalski inform
181 Cześć hello
182 dowidzenia bye
183 Dzień dobry hello
184 chciał bym zarezerwować bilet na minionki o 18.30 inform
185 poprosze w takim razie To nie wypanda o 18:45 request
186 dzisiaj inform
187 2 inform
188 ulgowe inform
189 12 rząd inform
190 poproszę 1 inform
191 Jakub Kaczmarek inform
192 dzień dobry hello
193 Nie dostałam potwierdzenia help
194 iwona.christop@gmail.com inform
195 Dzięki thankyou
196 Dzień dobry hello
197 Chciałabym zarezerwować bilet do kina request
198 Na wyjdz za mnie inform
199 dzis wieczorem inform
200 Martyna Druminska mdruminska074@gmail.com inform
201 z tyłu, na środku (aby ekran był centralnie widoczny) inform
202 Dzień dobry hello
203 Chciałbym wypożyczyć film null
204 Co obsługujecie? request
205 Chciałbym poznać akltualny repertuar request
206 Chciałbym zarezerwować bilety na Batman i zemsta Muminków jutro o 21:00 request
207 Taki O okita@mail.com inform
208 Wygodne null
209 Na końcu sali inform
210 Poproszę miejsce 11 w przedostatnim rzędzie. I 7 w ostatnim rzędzie inform
211 Zgadza się act
212 Chcę tylko zarezerwować inform
213 Super act
214 Chciałbym anulować rezerwację inform
215 Tak act
216 To wszystko, dziękuję bye
217 Elo hello
218 Chcę do kina się przejść null
219 Anulujmy rezerwację w takim razie inform
220 Nie, rozmyśliłam się. deny
221 Coś bym zjadła null
222 Z j a d ł a b y m c o ś null
223 O, bilet kupię zatem inform
224 Zaskocz mnie request
225 O, super. O której? request
226 Na 21 proszę inform
227 Jeden dla mnie, drugi dla kota inform
228 normalny i ulgowy inform
229 Na środku jakoś null
230 IJ null
231 I J inform
232 To 12 i 13 w J proszę inform
233 Jan Kowalski inform
234 Dzięki ❤️ thankyou
235 Dzień dobry hello
236 Chcę kupić bilety na film inform
237 A jakie filmy gracie? request
238 O czym jest Bunkier Strachu? request
239 Czy gracie jakieś komedie? request
240 W takim razie chcę zarezerwować bilety na film to Niewypanda inform
241 10.04 inform
242 11 inform
243 7 normalnych i 5 ulgowych\ inform
244 7 normalnych i 4 ulgowe inform
245 Które rzędzy są dostępne? null
246 tak affirm
247 rząd 10 inform
248 Dobrze null
249 Wybieram wszystkie inform
250 Tomcio Paluch inform
251 Dziękuję thankyou
252 Cześć hello
253 Jaka jest nazwa kina null
254 Chciałbym sprawdzić repertuar na 23 maja request
255 Jakie są dostępne miejsca na film 'Batman'? request
256 Najlepiej rzędy na górze null
257 Jaki jest zakres rzędów? request
258 To w 12 inform
259 Wybieram 6-7 inform
260 Kupić inform
261 2 bilety inform
262 Jakie są rodzaje biletów? request
263 Dla kogo jest bilet ulgowy? request
264 To poproszę bilet ulgowy inform
265 Już wybrałem miejsca null
266 Dzień dobry hello
267 Chciał bym zamówić bilet na film Minionki dzisiaj o 18.30 inform
268 jakie są dostępne ulgi? reqmore
269 poprosze bilet ulgowy inform
270 tak, daleko od ekranu inform
271 dobrze affirm
272 123@132.pl inform
273 123456789 inform
274 czy na miejscu mozna kupić popcorn? request
275 dziękuje thankyou
276 Cześć hello
277 Chciałbym dowiedzieć się czegoś o aktualnym repertuarze request
278 Tak ack
279 W sumie tak. Interesuje mnie najbliższa sobota request
280 Czy na 'batman i zemsta muminków' w ten dzień dostępne są miejsca w ostatnim rzędzie? request
281 A przedostatni? Interesują mnie dwa miejsca koło siebie request
282 W takim razie je poproszę inform
283 Jan Kowalski, kowalski69@gmail.com inform
284 Tak ack
285 Przed filmem inform

View File

Can't render this file because it contains an unexpected character in line 9 and column 62.

View File

@ -0,0 +1,21 @@
from pathlib import Path
import sys
def main():
with open('intent_data/train.tsv', 'w', encoding='utf-8') as outf:
path = sys.argv[1]
dir = Path(rf'{path}')
for file in dir.glob('*'):
with open(file, encoding='utf-8') as inf:
for line in inf:
line = line.split('\t')
if line[0] == 'user':
text = line[1]
intent = line[2].split('(')[0]
outf.write(text + '\t' + intent + '\n')
print('Processed: ', file.name)
if __name__ == '__main__':
main()

View File

@ -21,7 +21,7 @@ def process_file(file):
intents = [intent.strip() for intent in intents] intents = [intent.strip() for intent in intents]
intents = ' '.join(intents) intents = ' '.join(intents)
return intents return intents
"""
def get_slots(intent_row): def get_slots(intent_row):
intent_row = intent_row.split('&') intent_row = intent_row.split('&')
intent_row = [intent.strip() for intent in intent_row] intent_row = [intent.strip() for intent in intent_row]
@ -51,10 +51,26 @@ def process_file(file):
slots = [slot.split('=') for slot in slots if len(slot.split('=')) == 2] slots = [slot.split('=') for slot in slots if len(slot.split('=')) == 2]
slots = [[slot[0].split()[-1], slot[1]] if ',' in slot[0] else slot for slot in slots] # ? slots = [[slot[0].split()[-1], slot[1]] if ',' in slot[0] else slot for slot in slots] # ?
return slots return slots
"""
def get_slots(intent_row):
intent_content = re.search('\(+.*?\)+', intent_row).group()
intent_content = intent_content.strip()
intent_content = intent_content.replace('(', '')
intent_content = intent_content.replace(')', '')
intent_content = intent_content.replace("'", '')
intent_content = intent_content.replace("\"", '')
intent_content_split = intent_content.split('&')
slots = []
for intent in intent_content_split:
if '=' in intent and intent[-1] != '=':
intent_value_pair = intent.split('=')
slots.append(intent_value_pair)
return slots
def get_tokens(text, intents, slots): def get_tokens(text, intents, slots):
def tokenize(text): def tokenize(text):
email = re.search("[^ ]+@[^ ]+", text) email = re.search("[^ ]+@[^ ,]+", text)
if email: if email:
email_address = email.group() email_address = email.group()
text = text.replace(email_address, '@') text = text.replace(email_address, '@')

View File

Can't render this file because it contains an unexpected character in line 9 and column 62.

View File

Can't render this file because it contains an unexpected character in line 5 and column 26.

View File

Can't render this file because it contains an unexpected character in line 10 and column 13.

View File

Can't render this file because it contains an unexpected character in line 7 and column 33.

View File

Can't render this file because it contains an unexpected character in line 4 and column 78.

View File

@ -0,0 +1,51 @@
Dzień dobry hello
Chcę kupić bilety na film inform
A jakie filmy gracie? request
O czym jest Bunkier Strachu? request
Czy gracie jakieś komedie? request
W takim razie chcę zarezerwować bilety na film to Niewypanda inform
10.04 inform
11 inform
7 normalnych i 5 ulgowych\ inform
7 normalnych i 4 ulgowe inform
Które rzędzy są dostępne? null
tak affirm
rząd 10 inform
Dobrze null
Wybieram wszystkie inform
Tomcio Paluch inform
Dziękuję thankyou
Cześć hello
Jaka jest nazwa kina null
Chciałbym sprawdzić repertuar na 23 maja request
Jakie są dostępne miejsca na film 'Batman'? request
Najlepiej rzędy na górze null
Jaki jest zakres rzędów? request
To w 12 inform
Wybieram 6-7 inform
Kupić inform
2 bilety inform
Jakie są rodzaje biletów? request
Dla kogo jest bilet ulgowy? request
To poproszę bilet ulgowy inform
Już wybrałem miejsca null
Dzień dobry hello
Chciał bym zamówić bilet na film Minionki dzisiaj o 18.30 inform
jakie są dostępne ulgi? reqmore
poprosze bilet ulgowy inform
tak, daleko od ekranu inform
dobrze affirm
123@132.pl inform
123456789 inform
czy na miejscu mozna kupić popcorn? request
dziękuje thankyou
Cześć hello
Chciałbym dowiedzieć się czegoś o aktualnym repertuarze request
Tak ack
W sumie tak. Interesuje mnie najbliższa sobota request
Czy na 'batman i zemsta muminków' w ten dzień dostępne są miejsca w ostatnim rzędzie? request
A przedostatni? Interesują mnie dwa miejsca koło siebie request
W takim razie je poproszę inform
Jan Kowalski, kowalski69@gmail.com inform
Tak ack
Przed filmem inform
1 Dzień dobry hello
2 Chcę kupić bilety na film inform
3 A jakie filmy gracie? request
4 O czym jest Bunkier Strachu? request
5 Czy gracie jakieś komedie? request
6 W takim razie chcę zarezerwować bilety na film to Niewypanda inform
7 10.04 inform
8 11 inform
9 7 normalnych i 5 ulgowych\ inform
10 7 normalnych i 4 ulgowe inform
11 Które rzędzy są dostępne? null
12 tak affirm
13 rząd 10 inform
14 Dobrze null
15 Wybieram wszystkie inform
16 Tomcio Paluch inform
17 Dziękuję thankyou
18 Cześć hello
19 Jaka jest nazwa kina null
20 Chciałbym sprawdzić repertuar na 23 maja request
21 Jakie są dostępne miejsca na film 'Batman'? request
22 Najlepiej rzędy na górze null
23 Jaki jest zakres rzędów? request
24 To w 12 inform
25 Wybieram 6-7 inform
26 Kupić inform
27 2 bilety inform
28 Jakie są rodzaje biletów? request
29 Dla kogo jest bilet ulgowy? request
30 To poproszę bilet ulgowy inform
31 Już wybrałem miejsca null
32 Dzień dobry hello
33 Chciał bym zamówić bilet na film Minionki dzisiaj o 18.30 inform
34 jakie są dostępne ulgi? reqmore
35 poprosze bilet ulgowy inform
36 tak, daleko od ekranu inform
37 dobrze affirm
38 123@132.pl inform
39 123456789 inform
40 czy na miejscu mozna kupić popcorn? request
41 dziękuje thankyou
42 Cześć hello
43 Chciałbym dowiedzieć się czegoś o aktualnym repertuarze request
44 Tak ack
45 W sumie tak. Interesuje mnie najbliższa sobota request
46 Czy na 'batman i zemsta muminków' w ten dzień dostępne są miejsca w ostatnim rzędzie? request
47 A przedostatni? Interesują mnie dwa miejsca koło siebie request
48 W takim razie je poproszę inform
49 Jan Kowalski, kowalski69@gmail.com inform
50 Tak ack
51 Przed filmem inform

View File

@ -0,0 +1,234 @@
Dzień dobry hello
Chciałbym kupić bilet na Batman w środę. request
A jakie są dostępne request
wybieram 18:00 inform
jakie dane muszę podać? reqmore
ok, Adam Nowak aaanowak@mail.com inform
miejsca w tylnych rzędach inform
poproszę miejsca od 10 do 12 w ostatnim rzędzie inform
Tak act
teraz inform
dziękuję, do widzenia bye
Cześć hello
chciałbym zarezerwować bilet na batmana help
16.03 inform
17:00 inform
1 inform
studencki inform
ok affirm
1 inform
2 inform
Jan Kowalski inform
Dzień dobry hello
Dzień dobry, chciałabym złożyć reklamację biletów inform
Film miał zacząć się o 19, natomiast pracownicy kina odmówili mi wpuszczenia na seans do godziny 19:30, przez co nie mogłam zobaczyć wszystkich reklam 🙁 inform
12093098490832030210334434 inform
przez internet inform
485554893 inform
Dziękuję ack
Witam hello
Jakie są najbliższe seanse? request
W jakim kinie? request
Gdzie jest to kino? request
Ile kosztują bielty na Sing 2? request
W jaki inny dzień bilety kosztują mniej? reqmore
Rozumiem. Chcę w takim razie zarezerwować dwa bilety na Sing 2 request
Jeden normalny i ulgowy inform
emkarcinos42069@buziaczek.pl 123123123 inform
A jakie miejsca zostały zarezerwowane? request
Chciałbym miejsca najbliżej ekranu request
A jakie są miejsca najbliżej ekranu? request
A jakie są DOSTĘPNE miejsca najbliżej ekranu? request
Rozumiem. Dziękuję ack
Dzień dobry hello
Chcialbym bilet na Batman request
jutro popołudniu inform
z przodu inform
rząd 2 miejsca 6,7 inform
Adrian Charkiewicz, gfasfaf@gmail.com inform
tak zgadza się act
Cześć hello
Chciałbym obejrzeć film help
Chce iść na jakoś to będzie inform
Wybieram godzinę 20:45 inform
20 inform
Bilety ulgowe inform
Tak affirm
Może być ack
nie chce podawać numeru telefonu deny
lalalalili@gmai.com, 111222111 inform
Ile minut przed senansem muszę być na miejscu, aby odebrać bilet? reqmore
Co w przypadku gdy się spóźnie? reqmore
Rozumiem ack
Nie deny
Dziękuje za obsługe thankyou
Dzień dobry! hello
Chciałbym kupić seans request
Bilet na seans request
Poproszę bilet na ostatni seans Batmana inform
test@test.pl inform
123456789 inform
Dzień dobry hello
chciałbym się dowiedzieć jaki jest aktualny repertuar request
chciałbym się dowiedzieć co będzie 25 marca request
o czym jest straszny film 10? request
poproszę 3 bilety request
Jan Kowalski inform
jan.kowalski@pies.pl inform
na tyłach inform
poproszę inform
Witam hello
Jaki jest repertuar na ten tydzień w kinie Rialto? request
Jakie są godziny tych seansów? request
Cały tydzień inform
Witam hello
Możesz mi podać jakie są najbliższe seanse? request
A w jakim to kinie? null
Chcę wiedzieć w jakim kinie podajesz seanse null
kino lokalizacja request
Ile kosztują bielty na Niewypanda? null
Tak affirm
A kiedy bilety są najtańsze? request
W jaki dzień bilety są najtańsze? reqmore
W takim razie chciałbym zarezerować dwa miejsca na film to nie wipanda w niedzielę null
Tak affirm
Jeden ulgowy jeden senior inform
Z tyłu sali null
9 i 10 inform
Ostatni inform
Witam hello
chciałbym kupić bilet ale nie wiem na co help
Nie wiem czy masz jakieś propozycję na dziś ? request
poprosze inni ludzie na 14:1313 null
tak dokładnie tak affirm
1 inform
daleko od ludzi null
chciałbym aby nie było ludzi w okół mnie null
Czy mogę poznać zatłoczenie aktualne sali ?\ request
poproszę o miejsce 5 w rzędzie 10 inform
ju tu inform
Halo hello
Chciałbym kupić bilet na NajlepszaNAzwaFilmu inform
30 marca o godzinie 12:10 inform
W okolicach środka, środkowego rzędu inform
7 rząd miejce 11 inform
Emil Kowalski inform
xyz@gmail.com inform
Tak act
Teraz inform
Dziękuję bye
Dzień dobry! hello
Chciałbym zarezerwować film null
Bilet na film inform
To nie wypanda i Batman inform
Poproszę bilet na Batmana jutro o 15:00 i pande w sobotę na 17:00 inform
Elo hello
Chcę iść do kina request
CHCĘ IŚĆ DO KINA repeat
A co macie request
No pewnie jakoś będzie. Na fanstaczne zernęta proszę zatem. inform
A co gracie? request
A jutro? reqmore
to na dzisiaj na śmirc na nilu inform
woeczprkem moze inform
A później nie ma? reqmore
No dobła affirm
Jedno dla mnie, drugie dla kota inform
A jest ulga dla zwierząt? reqmore
To jeden tylko dla mnie proszę inform
iwona.christop@gmail.com, 7368507466 inform
A gdzie się znajduje? reqmore
No dobła, niech będzie ack
Dzień dobry hello
Chciałbym kupić bilet inform
batman inform
dzisiaj, teraz inform
nie jestem pewien, za ile jest bilet? reqmore
podaj mi informacje o bilecie reqmore
wszystkie request
czy jest to film 2D czy 3D? Z napisami czy z dubbingiem? help
zarezerwuj ten bilet inform
na moje null
karida@st.amu.edu.pl inform
wygodne null
na końcu sali request
miejsce 11 inform
przed ostatnim inform
Dzień dobry. hello
Jakie płatności przyjmujecie? request
Cześć bocie hello
Co można u was zjeść? request
Dobra, czy jutro gracie batman? inform
A Uncharted inform
19:30 inform
6 inform
3 normalne i 3 ulgowe inform
Ok ack
Dziękuję systemie thankyou
Cześć systemie hello
Czy gracie Batman? request
Chciałym 15.04 inform
22 null
Tak affirm
Jakie macie zniżki? request
1 weteran i 1 ulgowy inform
dól lewo inform
pierwszy rząd inform
5-6 inform
Tak, poproszę null
Chcę dokonać zakupu inform
jan kowalski inform
Cześć hello
dowidzenia bye
Dzień dobry hello
chciał bym zarezerwować bilet na minionki o 18.30 inform
poprosze w takim razie To nie wypanda o 18:45 request
dzisiaj inform
2 inform
ulgowe inform
12 rząd inform
poproszę 1 inform
Jakub Kaczmarek inform
dzień dobry hello
Nie dostałam potwierdzenia help
iwona.christop@gmail.com inform
Dzięki thankyou
Dzień dobry hello
Chciałabym zarezerwować bilet do kina request
Na wyjdz za mnie inform
dzis wieczorem inform
Martyna Druminska mdruminska074@gmail.com inform
z tyłu, na środku (aby ekran był centralnie widoczny) inform
Dzień dobry hello
Chciałbym wypożyczyć film null
Co obsługujecie? request
Chciałbym poznać akltualny repertuar request
Chciałbym zarezerwować bilety na Batman i zemsta Muminków jutro o 21:00 request
Taki O okita@mail.com inform
Wygodne null
Na końcu sali inform
Poproszę miejsce 11 w przedostatnim rzędzie. I 7 w ostatnim rzędzie inform
Zgadza się act
Chcę tylko zarezerwować inform
Super act
Chciałbym anulować rezerwację inform
Tak act
To wszystko, dziękuję bye
Elo hello
Chcę do kina się przejść null
Anulujmy rezerwację w takim razie inform
Nie, rozmyśliłam się. deny
Coś bym zjadła null
Z j a d ł a b y m c o ś null
O, bilet kupię zatem inform
Zaskocz mnie request
O, super. O której? request
Na 21 proszę inform
Jeden dla mnie, drugi dla kota inform
normalny i ulgowy inform
Na środku jakoś null
IJ null
I J inform
To 12 i 13 w J proszę inform
Jan Kowalski inform
Dzięki ❤️ thankyou
1 Dzień dobry hello
2 Chciałbym kupić bilet na Batman w środę. request
3 A jakie są dostępne request
4 wybieram 18:00 inform
5 jakie dane muszę podać? reqmore
6 ok, Adam Nowak aaanowak@mail.com inform
7 miejsca w tylnych rzędach inform
8 poproszę miejsca od 10 do 12 w ostatnim rzędzie inform
9 Tak act
10 teraz inform
11 dziękuję, do widzenia bye
12 Cześć hello
13 chciałbym zarezerwować bilet na batmana help
14 16.03 inform
15 17:00 inform
16 1 inform
17 studencki inform
18 ok affirm
19 1 inform
20 2 inform
21 Jan Kowalski inform
22 Dzień dobry hello
23 Dzień dobry, chciałabym złożyć reklamację biletów inform
24 Film miał zacząć się o 19, natomiast pracownicy kina odmówili mi wpuszczenia na seans do godziny 19:30, przez co nie mogłam zobaczyć wszystkich reklam 🙁 inform
25 12093098490832030210334434 inform
26 przez internet inform
27 485554893 inform
28 Dziękuję ack
29 Witam hello
30 Jakie są najbliższe seanse? request
31 W jakim kinie? request
32 Gdzie jest to kino? request
33 Ile kosztują bielty na Sing 2? request
34 W jaki inny dzień bilety kosztują mniej? reqmore
35 Rozumiem. Chcę w takim razie zarezerwować dwa bilety na Sing 2 request
36 Jeden normalny i ulgowy inform
37 emkarcinos42069@buziaczek.pl 123123123 inform
38 A jakie miejsca zostały zarezerwowane? request
39 Chciałbym miejsca najbliżej ekranu request
40 A jakie są miejsca najbliżej ekranu? request
41 A jakie są DOSTĘPNE miejsca najbliżej ekranu? request
42 Rozumiem. Dziękuję ack
43 Dzień dobry hello
44 Chcialbym bilet na Batman request
45 jutro popołudniu inform
46 z przodu inform
47 rząd 2 miejsca 6,7 inform
48 Adrian Charkiewicz, gfasfaf@gmail.com inform
49 tak zgadza się act
50 Cześć hello
51 Chciałbym obejrzeć film help
52 Chce iść na jakoś to będzie inform
53 Wybieram godzinę 20:45 inform
54 20 inform
55 Bilety ulgowe inform
56 Tak affirm
57 Może być ack
58 nie chce podawać numeru telefonu deny
59 lalalalili@gmai.com, 111222111 inform
60 Ile minut przed senansem muszę być na miejscu, aby odebrać bilet? reqmore
61 Co w przypadku gdy się spóźnie? reqmore
62 Rozumiem ack
63 Nie deny
64 Dziękuje za obsługe thankyou
65 Dzień dobry! hello
66 Chciałbym kupić seans request
67 Bilet na seans request
68 Poproszę bilet na ostatni seans Batmana inform
69 test@test.pl inform
70 123456789 inform
71 Dzień dobry hello
72 chciałbym się dowiedzieć jaki jest aktualny repertuar request
73 chciałbym się dowiedzieć co będzie 25 marca request
74 o czym jest straszny film 10? request
75 poproszę 3 bilety request
76 Jan Kowalski inform
77 jan.kowalski@pies.pl inform
78 na tyłach inform
79 poproszę inform
80 Witam hello
81 Jaki jest repertuar na ten tydzień w kinie Rialto? request
82 Jakie są godziny tych seansów? request
83 Cały tydzień inform
84 Witam hello
85 Możesz mi podać jakie są najbliższe seanse? request
86 A w jakim to kinie? null
87 Chcę wiedzieć w jakim kinie podajesz seanse null
88 kino lokalizacja request
89 Ile kosztują bielty na Niewypanda? null
90 Tak affirm
91 A kiedy bilety są najtańsze? request
92 W jaki dzień bilety są najtańsze? reqmore
93 W takim razie chciałbym zarezerować dwa miejsca na film to nie wipanda w niedzielę null
94 Tak affirm
95 Jeden ulgowy jeden senior inform
96 Z tyłu sali null
97 9 i 10 inform
98 Ostatni inform
99 Witam hello
100 chciałbym kupić bilet ale nie wiem na co help
101 Nie wiem czy masz jakieś propozycję na dziś ? request
102 poprosze inni ludzie na 14:1313 null
103 tak dokładnie tak affirm
104 1 inform
105 daleko od ludzi null
106 chciałbym aby nie było ludzi w okół mnie null
107 Czy mogę poznać zatłoczenie aktualne sali ?\ request
108 poproszę o miejsce 5 w rzędzie 10 inform
109 ju tu inform
110 Halo hello
111 Chciałbym kupić bilet na NajlepszaNAzwaFilmu inform
112 30 marca o godzinie 12:10 inform
113 W okolicach środka, środkowego rzędu inform
114 7 rząd miejce 11 inform
115 Emil Kowalski inform
116 xyz@gmail.com inform
117 Tak act
118 Teraz inform
119 Dziękuję bye
120 Dzień dobry! hello
121 Chciałbym zarezerwować film null
122 Bilet na film inform
123 To nie wypanda i Batman inform
124 Poproszę bilet na Batmana jutro o 15:00 i pande w sobotę na 17:00 inform
125 Elo hello
126 Chcę iść do kina request
127 CHCĘ IŚĆ DO KINA repeat
128 A co macie request
129 No pewnie jakoś będzie. Na fanstaczne zernęta proszę zatem. inform
130 A co gracie? request
131 A jutro? reqmore
132 to na dzisiaj na śmirc na nilu inform
133 woeczprkem moze inform
134 A później nie ma? reqmore
135 No dobła affirm
136 Jedno dla mnie, drugie dla kota inform
137 A jest ulga dla zwierząt? reqmore
138 To jeden tylko dla mnie proszę inform
139 iwona.christop@gmail.com, 7368507466 inform
140 A gdzie się znajduje? reqmore
141 No dobła, niech będzie ack
142 Dzień dobry hello
143 Chciałbym kupić bilet inform
144 batman inform
145 dzisiaj, teraz inform
146 nie jestem pewien, za ile jest bilet? reqmore
147 podaj mi informacje o bilecie reqmore
148 wszystkie request
149 czy jest to film 2D czy 3D? Z napisami czy z dubbingiem? help
150 zarezerwuj ten bilet inform
151 na moje null
152 karida@st.amu.edu.pl inform
153 wygodne null
154 na końcu sali request
155 miejsce 11 inform
156 przed ostatnim inform
157 Dzień dobry. hello
158 Jakie płatności przyjmujecie? request
159 Cześć bocie hello
160 Co można u was zjeść? request
161 Dobra, czy jutro gracie batman? inform
162 A Uncharted inform
163 19:30 inform
164 6 inform
165 3 normalne i 3 ulgowe inform
166 Ok ack
167 Dziękuję systemie thankyou
168 Cześć systemie hello
169 Czy gracie Batman? request
170 Chciałym 15.04 inform
171 22 null
172 Tak affirm
173 Jakie macie zniżki? request
174 1 weteran i 1 ulgowy inform
175 dól lewo inform
176 pierwszy rząd inform
177 5-6 inform
178 Tak, poproszę null
179 Chcę dokonać zakupu inform
180 jan kowalski inform
181 Cześć hello
182 dowidzenia bye
183 Dzień dobry hello
184 chciał bym zarezerwować bilet na minionki o 18.30 inform
185 poprosze w takim razie To nie wypanda o 18:45 request
186 dzisiaj inform
187 2 inform
188 ulgowe inform
189 12 rząd inform
190 poproszę 1 inform
191 Jakub Kaczmarek inform
192 dzień dobry hello
193 Nie dostałam potwierdzenia help
194 iwona.christop@gmail.com inform
195 Dzięki thankyou
196 Dzień dobry hello
197 Chciałabym zarezerwować bilet do kina request
198 Na wyjdz za mnie inform
199 dzis wieczorem inform
200 Martyna Druminska mdruminska074@gmail.com inform
201 z tyłu, na środku (aby ekran był centralnie widoczny) inform
202 Dzień dobry hello
203 Chciałbym wypożyczyć film null
204 Co obsługujecie? request
205 Chciałbym poznać akltualny repertuar request
206 Chciałbym zarezerwować bilety na Batman i zemsta Muminków jutro o 21:00 request
207 Taki O okita@mail.com inform
208 Wygodne null
209 Na końcu sali inform
210 Poproszę miejsce 11 w przedostatnim rzędzie. I 7 w ostatnim rzędzie inform
211 Zgadza się act
212 Chcę tylko zarezerwować inform
213 Super act
214 Chciałbym anulować rezerwację inform
215 Tak act
216 To wszystko, dziękuję bye
217 Elo hello
218 Chcę do kina się przejść null
219 Anulujmy rezerwację w takim razie inform
220 Nie, rozmyśliłam się. deny
221 Coś bym zjadła null
222 Z j a d ł a b y m c o ś null
223 O, bilet kupię zatem inform
224 Zaskocz mnie request
225 O, super. O której? request
226 Na 21 proszę inform
227 Jeden dla mnie, drugi dla kota inform
228 normalny i ulgowy inform
229 Na środku jakoś null
230 IJ null
231 I J inform
232 To 12 i 13 w J proszę inform
233 Jan Kowalski inform
234 Dzięki ❤️ thankyou

472
data/test-pl.conllu Normal file
View File

@ -0,0 +1,472 @@
# text: A jakie są dostępne
# intent: request
# slots:
1 A request NoLabel
2 jakie request NoLabel
3 są request NoLabel
4 dostępne request NoLabel
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: dziękuję, do widzenia
# intent: bye
# slots:
1 dziękuję bye NoLabel
2 , bye NoLabel
3 do bye NoLabel
4 widzenia bye NoLabel
# text: 16.03
# intent: inform
# slots: 16.03:date
1 16.03 inform B-date
# text: 2
# intent: inform
# slots: 2:seat
1 2 inform B-seat
# text: Dziękuję
# intent: ack
# slots:
1 Dziękuję ack NoLabel
# text: przez internet
# intent: inform
# slots: przezinternet:purchaseType
1 przez inform B-purchaseType
2 internet inform I-purchaseType
# text: A jakie są miejsca najbliżej ekranu?
# intent: request
# slots: najbliżejekranu:seat
1 A request NoLabel
2 jakie request NoLabel
3 są request NoLabel
4 miejsca request NoLabel
5 najbliżej request B-seat
6 ekranu request I-seat
7 ? request NoLabel
# text: Gdzie jest to kino?
# intent: request
# slots:
1 Gdzie request NoLabel
2 jest request NoLabel
3 to request NoLabel
4 kino request NoLabel
5 ? request NoLabel
# text: Chciałbym miejsca najbliżej ekranu
# intent: request
# slots: najbliżejekranu:seat
1 Chciałbym request NoLabel
2 miejsca request NoLabel
3 najbliżej request B-seat
4 ekranu request I-seat
# text: tak zgadza się
# intent: act
# slots:
1 tak act NoLabel
2 zgadza act NoLabel
3 się act NoLabel
# text: rząd 2 miejsca 6,7
# intent: inform
# slots: 6,7:seat,2:row
1 rząd inform NoLabel
2 2 inform B-row
3 miejsca inform NoLabel
4 6,7 inform B-seat
# text: Co w przypadku gdy się spóźnie?
# intent: reqmore
# slots:
1 Co reqmore NoLabel
2 w reqmore NoLabel
3 przypadku reqmore NoLabel
4 gdy reqmore NoLabel
5 się reqmore NoLabel
6 spóźnie reqmore NoLabel
7 ? reqmore NoLabel
# text: Rozumiem
# intent: ack
# slots:
1 Rozumiem ack NoLabel
# text: Dziękuje za obsługe
# intent: thankyou
# slots:
1 Dziękuje thankyou NoLabel
2 za thankyou NoLabel
3 obsługe thankyou NoLabel
# text: test@test.pl
# intent: inform
# slots: test@test.pl:e-mail
1 test@test.pl inform B-e-mail
# text: Bilet na seans
# intent: request
# slots:
1 Bilet request NoLabel
2 na request NoLabel
3 seans request NoLabel
# text: Jan Kowalski
# intent: inform
# slots: JanKowalski:name
1 Jan inform B-name
2 Kowalski inform I-name
# text: o czym jest straszny film 10?
# intent: request
# slots: movie_detail:task
1 o request NoLabel
2 czym request NoLabel
3 jest request NoLabel
4 straszny request NoLabel
5 film request NoLabel
6 10 request NoLabel
7 ? request NoLabel
# text: Jakie są godziny tych seansów?
# intent: request
# slots:
1 Jakie request NoLabel
2 są request NoLabel
3 godziny request NoLabel
4 tych request NoLabel
5 seansów request NoLabel
6 ? request NoLabel
# text: Możesz mi podać jakie są najbliższe seanse?
# intent: request
# slots:
1 Możesz request NoLabel
2 mi request NoLabel
3 podać request NoLabel
4 jakie request NoLabel
5 są request NoLabel
6 najbliższe request NoLabel
7 seanse request NoLabel
8 ? request NoLabel
# text: Ostatni
# intent: inform
# slots: ostatni:row
1 Ostatni inform B-row
# text: Tak
# intent: affirm
# slots:
1 Tak affirm NoLabel
# text: 1
# intent: inform
# slots: 1:quantity
1 1 inform B-quantity
# text: daleko od ludzi
# intent: null
# slots:
1 daleko null NoLabel
2 od null NoLabel
3 ludzi null NoLabel
# text: poprosze inni ludzie na 14:1313
# intent: null
# slots:
1 poprosze null NoLabel
2 inni null NoLabel
3 ludzie null NoLabel
4 na null NoLabel
5 14:1313 null NoLabel
# text: Dziękuję
# intent: bye
# slots:
1 Dziękuję bye NoLabel
# text: Chciałbym kupić bilet na NajlepszaNAzwaFilmu
# intent: inform
# slots: book:task,NajlepszaNAzwaFilmu:movie
1 Chciałbym inform NoLabel
2 kupić inform NoLabel
3 bilet inform NoLabel
4 na inform NoLabel
5 NajlepszaNAzwaFilmu inform B-movie
# text: Dzień dobry!
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
3 ! hello NoLabel
# text: A jest ulga dla zwierząt?
# intent: reqmore
# slots:
1 A reqmore NoLabel
2 jest reqmore NoLabel
3 ulga reqmore NoLabel
4 dla reqmore NoLabel
5 zwierząt reqmore NoLabel
6 ? reqmore NoLabel
# text: No dobła, niech będzie
# intent: ack affirm
# slots:
1 No ack_affirm NoLabel
2 dobła ack_affirm NoLabel
3 , ack_affirm NoLabel
4 niech ack_affirm NoLabel
5 będzie ack_affirm NoLabel
# text: A co macie
# intent: request
# slots:
1 A request NoLabel
2 co request NoLabel
3 macie request NoLabel
# text: to na dzisiaj na śmirc na nilu
# intent: inform
# slots: śmircnanilu:movie,dzisiaj:date
1 to inform NoLabel
2 na inform NoLabel
3 dzisiaj inform B-date
4 na inform NoLabel
5 śmirc inform B-movie
6 na inform I-movie
7 nilu inform I-movie
# text: przed ostatnim
# intent: inform
# slots: 10:seat_row
1 przed inform NoLabel
2 ostatnim inform NoLabel
# text: Chciałbym kupić bilet
# intent: inform
# slots: book:task
1 Chciałbym inform NoLabel
2 kupić inform NoLabel
3 bilet inform NoLabel
# text: wygodne
# intent: null
# slots:
1 wygodne null NoLabel
# text: 19:30
# intent: inform
# slots: 19:30:hour
1 19:30 inform B-hour
# text: Jakie płatności przyjmujecie?
# intent: request
# slots:
1 Jakie request NoLabel
2 płatności request NoLabel
3 przyjmujecie request NoLabel
4 ? request NoLabel
# text: Dziękuję systemie
# intent: thankyou
# slots:
1 Dziękuję thankyou NoLabel
2 systemie thankyou NoLabel
# text: 22
# intent: null
# slots:
1 22 null NoLabel
# text: Tak
# intent: affirm
# slots:
1 Tak affirm NoLabel
# text: pierwszy rząd
# intent: inform
# slots: pierwszy:row
1 pierwszy inform B-row
2 rząd inform NoLabel
# text: 2
# intent: inform
# slots: 2:quantity
1 2 inform B-quantity
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: dzień dobry
# intent: hello
# slots:
1 dzień hello NoLabel
2 dobry hello NoLabel
# text: z tyłu, na środku (aby ekran był centralnie widoczny)
# intent: inform
# slots:
1 z inform NoLabel
2 tyłu inform NoLabel
3 , inform NoLabel
4 na inform NoLabel
5 środku inform NoLabel
6 ( inform NoLabel
7 aby inform NoLabel
8 ekran inform NoLabel
9 był inform NoLabel
10 centralnie inform NoLabel
11 widoczny inform NoLabel
12 ) inform NoLabel
# text: Martyna Druminska mdruminska074@gmail.com
# intent: inform
# slots: mdruminska074@gmail.com:e-mail,MartynaDruminska:name
1 Martyna inform B-name
2 Druminska inform I-name
3 mdruminska074@gmail.com inform B-e-mail
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: Chciałbym wypożyczyć film
# intent: null
# slots:
1 Chciałbym null NoLabel
2 wypożyczyć null NoLabel
3 film null NoLabel
# text: Zgadza się
# intent: act
# slots:
1 Zgadza act NoLabel
2 się act NoLabel
# text: Nie, rozmyśliłam się.
# intent: deny
# slots: cancelbook:task
1 Nie deny NoLabel
2 , deny NoLabel
3 rozmyśliłam deny NoLabel
4 się deny NoLabel
5 . deny NoLabel
# text: O, bilet kupię zatem
# intent: inform
# slots: buy:task
1 O inform NoLabel
2 , inform NoLabel
3 bilet inform NoLabel
4 kupię inform NoLabel
5 zatem inform NoLabel
# text: I J
# intent: inform
# slots: IJ:row
1 I inform B-row
2 J inform I-row
# text: normalny i ulgowy
# intent: inform
# slots: normalny:tickettype,ulgowy:tickettype
1 normalny inform B-tickettype
2 i inform NoLabel
3 ulgowy inform B-tickettype
# text: 7 normalnych i 5 ulgowych\
# intent: inform
# slots: 7:quantity,normalnych:tickettype,5:quantity,ulgowych:tickettype
1 7 inform B-quantity
2 normalnych inform B-tickettype
3 i inform NoLabel
4 5 inform B-quantity
5 ulgowych\ inform NoLabel
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: rząd 10
# intent: inform
# slots: 10:row
1 rząd inform NoLabel
2 10 inform B-row
# text: Czy gracie jakieś komedie?
# intent: request
# slots: komedie:genre
1 Czy request NoLabel
2 gracie request NoLabel
3 jakieś request NoLabel
4 komedie request B-genre
5 ? request NoLabel
# text: Jakie są rodzaje biletów?
# intent: request
# slots:
1 Jakie request NoLabel
2 są request NoLabel
3 rodzaje request NoLabel
4 biletów request NoLabel
5 ? request NoLabel
# text: Cześć
# intent: hello
# slots:
1 Cześć hello NoLabel
# text: 2 bilety
# intent: inform
# slots: 2:quantity
1 2 inform B-quantity
2 bilety inform NoLabel
# text: Dzień dobry
# intent: hello
# slots:
1 Dzień hello NoLabel
2 dobry hello NoLabel
# text: dobrze
# intent: affirm
# slots:
1 dobrze affirm NoLabel
# text: Chciałbym dowiedzieć się czegoś o aktualnym repertuarze
# intent: request
# slots: closestscreenings:task
1 Chciałbym request NoLabel
2 dowiedzieć request NoLabel
3 się request NoLabel
4 czegoś request NoLabel
5 o request NoLabel
6 aktualnym request NoLabel
7 repertuarze request NoLabel
# text: Jan Kowalski, kowalski69@gmail.com
# intent: inform
# slots: kowalski69@gmail.com:e-mail,JanKowalski:name
1 Jan inform B-name
2 Kowalski inform I-name
3 , inform NoLabel
4 kowalski69@gmail.com inform B-e-mail

2231
data/train+test-pl.conllu Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

58
dialogue_system.py Normal file
View File

@ -0,0 +1,58 @@
from modules.NLU import NLU
from modules.DST import DST
#from modules.DP import DP
#from modules.NLG import NLG
import re
def format_prediction(prediction, intent):
out_list = []
for idx, tup in enumerate(prediction):
if tup[1][0] == 'B':
slot_list = [intent, 'Cinema', tup[1][2:], tup[0]]
for tup in prediction[idx + 1:]:
if tup[1][0] != 'I':
break
else:
slot_list[3] += ' ' + tup[0]
out_list.append(slot_list)
for slot in out_list:
slot[3] = re.sub("^[!\"#$%&\'()*+,.;:<=>?\[\]^_`{|}~]+", '', slot[3])
slot[3] = re.sub("[!\"#$%&\'()*+,.;:<=>?\[\]^_`{|}~]+$", '', slot[3])
return out_list
def main():
nlu = NLU()
dst = DST()
#dp = DP()
#nlg = NLG()
nlu.train_slot_model('data/train+test-pl.conllu', 'data/train+test-pl.conllu')
nlu.train_intent_model('data/NLU_data_intent')
# nlu.load_slot_model('slot-model-pl')
# nlu.load_intent_model('intent-model-pl')
print('===========================================')
print('### By otrzymać pomoc, wpisz /pomoc ###')
print('### By zakończyć rozmowę, wpisz /koniec ###')
print('Witaj, jestem Usher - system do rezerwacji biletów kinowych. W czym mogę Ci pomóc?')
# WIP
while True:
user_input = input('> ')
if user_input == '/pomoc':
print('TEKST_POMOCY_WIP')
elif user_input == '/koniec':
print('Dziękuję za skorzystanie z moich usług. Miłego dnia!')
break
else:
slots = nlu.predict_slots(user_input)
intent = nlu.predict_intent(user_input)
formatted_prediction = format_prediction(slots, intent)
print(formatted_prediction) # NLU output
dst.update(formatted_prediction)
print(dst.state) # DST output
#DP, NLG...
if __name__ == '__main__':
main()

71
modules/DST.py Normal file
View File

@ -0,0 +1,71 @@
from modules.dialogue_state import default_state
import re
# Monitor stanu dialogu
class DST:
def __init__(self):
self.state = default_state()
def txt2num(self, text):
mapping = {'jeden': '1', 'dwa': '2', 'trzy': '3', 'cztery': '4', 'pięć': '5', 'sześć': '6', 'siedem': '7', 'osiem': '8', 'dziewięć': '9', 'dziesięć': '10'}
for key in mapping:
if key in text:
text = text.replace(key, mapping[key])
return text
def update(self, user_act=None):
for intent, domain, slot, value in user_act:
domain = domain.lower()
intent = intent.lower()
slot = slot.lower()
k = slot
if intent == 'inform':
if k is None:
continue
domain_dic = self.state['belief_state'][domain]
if k in domain_dic['semi']:
if k == 'quantity':
value = self.txt2num(value)
try:
self.state['belief_state'][domain]['semi'][k] += int(re.sub('[^0-9]', '', value))
except:
pass
elif k == 'tickettype':
self.state['belief_state'][domain]['semi'][k] += ' ' + value
else:
self.state['belief_state'][domain]['semi'][k] = value
elif k in domain_dic['book']:
if k == 'seat' or k == 'row':
self.state['belief_state'][domain]['book'][k] += ' ' + value
else:
self.state['belief_state'][domain]['book'][k] = value
if intent == 'request':
if domain not in self.state['request_state']:
self.state['request_state'][domain] = {}
if k not in self.state['request_state'][domain]:
self.state['request_state'][domain][k] = 0
self.state['user_action'].append([intent, domain, slot, value])
return self.state
def init_session(self):
self.state = default_state()
# Przykładowe uruchomienie dla kodu w izolacji
"""
dst = DST()
print(dst.state)
dst.update([['hello_inform', 'Cinema', 'Price', '15 zł'], ['Inform', 'Cinema', 'Movie', 'Batman']])
print(dst.state)
"""

184
modules/NLU.py Normal file
View File

@ -0,0 +1,184 @@
import re
from conllu import parse_incr
from flair.data import Corpus, Sentence, Token
from flair.datasets import SentenceDataset
from flair.embeddings import StackedEmbeddings
from flair.models import SequenceTagger
from flair.trainers import ModelTrainer
import random
import torch
from flair.datasets import CSVClassificationCorpus
from flair.embeddings import WordEmbeddings, FlairEmbeddings, CharacterEmbeddings, DocumentRNNEmbeddings
from flair.models import TextClassifier
import os
class NLU:
def __init__(self):
self.slot_model = None
self.intent_model = None
def nolabel2o(self, line, i):
return 'O' if line[i] == 'NoLabel' else line[i]
def conllu2flair(self, sentences, label=None):
fsentences = []
for sentence in sentences:
fsentence = Sentence()
for token in sentence:
ftoken = Token(token['form'])
if label:
ftoken.add_tag(label, token[label])
fsentence.add_token(ftoken)
fsentences.append(fsentence)
return SentenceDataset(fsentences)
def load_slot_model(self, model_path):
try:
self.slot_model = SequenceTagger.load(f'{model_path}/best-model.pt')
except:
self.slot_model = SequenceTagger.load(f'{model_path}/final-model.pt')
def train_slot_model(self, train_path, test_path):
fields = ['id', 'form', 'frame', 'slot']
with open(train_path, encoding='utf-8') as trainfile:
trainset = list(parse_incr(trainfile, fields=fields, field_parsers={'slot': self.nolabel2o}))
with open(test_path, encoding='utf-8') as testfile:
testset = list(parse_incr(testfile, fields=fields, field_parsers={'slot': self.nolabel2o}))
random.seed(42)
torch.manual_seed(42)
if torch.cuda.is_available():
torch.cuda.manual_seed(0)
torch.cuda.manual_seed_all(0)
torch.backends.cudnn.enabled = False
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
corpus = Corpus(train=self.conllu2flair(trainset, 'slot'), test=self.conllu2flair(testset, 'slot'))
tag_dictionary = corpus.make_tag_dictionary(tag_type='slot')
embedding_types = [
WordEmbeddings('pl'),
FlairEmbeddings('pl-forward'),
FlairEmbeddings('pl-backward'),
CharacterEmbeddings(),
]
embeddings = StackedEmbeddings(embeddings=embedding_types)
tagger = SequenceTagger(hidden_size=512, embeddings=embeddings,
tag_dictionary=tag_dictionary,
tag_type='slot', use_crf=True)
trainer = ModelTrainer(tagger, corpus)
dirpath = 'slot-model-pl'
if not os.path.isdir(dirpath):
trainer.train(dirpath,
learning_rate=0.1,
mini_batch_size=32,
max_epochs=20,
train_with_dev=True)
self.load_slot_model(dirpath)
# Tworzenie osobnego pliku z metrykami dla modelu
log_file = open('slot-model-pl/training.log', encoding='utf-8')
log_lines = log_file.readlines()
log_file.close()
with open('slot-model-pl/training.log', encoding='utf-8') as log_file, open('nlu_evaluation.txt', 'w',
encoding='utf-8') \
as eval_file:
for num, line in enumerate(log_file):
if line == 'Results:\n':
lines_to_write_start = num
eval_file.write('*** This evaluation file was generated automatically by the training script ***\n\n')
for line in log_lines[lines_to_write_start:]:
eval_file.write(line)
def predict_slots(self, sentence):
sentence = sentence.split()
csentence = [{'form': word} for word in sentence]
fsentence = self.conllu2flair([csentence])[0]
self.slot_model.predict(fsentence)
return [(token, ftoken.get_tag('slot').value) for token, ftoken in zip(sentence, fsentence)]
def load_intent_model(self, model_path):
try:
self.intent_model = TextClassifier.load(f'{model_path}/best-model.pt')
except:
self.intent_model = TextClassifier.load(f'{model_path}/final-model.pt')
def train_intent_model(self, data_path):
column_name_map = {0: "text", 1: "label_intent"}
corpus = CSVClassificationCorpus(data_path,
column_name_map,
skip_header=False,
delimiter='\t', label_type='label_intent'
)
label_dict = corpus.make_label_dictionary(label_type='label_intent')
word_embeddings = [
WordEmbeddings('pl'),
FlairEmbeddings('polish-forward'),
FlairEmbeddings('polish-backward'),
CharacterEmbeddings(),
]
document_embeddings = DocumentRNNEmbeddings(word_embeddings, hidden_size=512)
classifier = TextClassifier(document_embeddings, label_dictionary=label_dict, label_type='label_intent')
trainer = ModelTrainer(classifier, corpus)
dirpath = 'intent-model-pl'
if not os.path.isdir(dirpath):
trainer.train(dirpath,
learning_rate=0.1,
mini_batch_size=32,
anneal_factor=0.5,
patience=5,
max_epochs=20)
self.load_intent_model(dirpath)
def predict_intent(self, sentence):
sentence = Sentence(sentence)
self.intent_model.predict(sentence)
label_text = sentence.labels[0].value
return label_text
def format_prediction(prediction, intent):
out_list = []
for idx, tup in enumerate(prediction):
if tup[1][0] == 'B':
slot_list = [intent, 'Cinema', tup[1][2:], tup[0]]
for tup in prediction[idx + 1:]:
if tup[1][0] != 'I':
break
else:
slot_list[3] += ' ' + tup[0]
out_list.append(slot_list)
for slot in out_list:
slot[3] = re.sub("^[!\"#$%&\'()*+,.;:<=>?\[\]^_`{|}~]+", '', slot[3])
slot[3] = re.sub("[!\"#$%&\'()*+,.;:<=>?\[\]^_`{|}~]+$", '', slot[3])
return out_list
# Testy
"""
nlu = NLU()
# raz:
nlu.train_slot_model('../data/train+test-pl.conllu', '../data/train+test-pl.conllu')
nlu.train_intent_model('../data/intent_data')
# potem:
# nlu.load_slot_model('slot-model-pl')
# nlu.load_intent_model('intent-model-pl')
sentence = "3 studenckie, miejsca 2-5, rząd 7"
slots = nlu.predict_slots(sentence)
intent = nlu.predict_intent(sentence)
formatted_prediction = format_prediction(slots, intent)
print(formatted_prediction)
"""

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More