Compare commits

...

85 Commits

Author SHA1 Message Date
d8749b5659 ADD: Dialog improvements 2021-06-20 12:54:26 +02:00
b857f69754 FIX: Typo in description 2021-06-19 11:30:45 +02:00
362d6ea3b3 ADD: Evaluation file 2021-06-19 10:16:47 +02:00
31df87c99d reformat files 2021-06-17 11:30:22 +02:00
3aa43e2361 main 2021-06-15 09:22:02 +02:00
f84d9fc20a merge 2021-06-07 16:07:32 +02:00
26c8f739df FIX: Typo and outputs 2021-06-07 16:04:56 +02:00
feb204306f Dockerize 2021-06-07 16:00:53 +02:00
3bea55ecea ADD: System answers 2021-06-07 08:59:31 +02:00
a798e3ec39 DST module 2021-05-29 14:54:00 +02:00
d1dbd09a15 Policy and DST 2021-05-29 11:22:47 +02:00
6eb2ecfeed nlu update 2021-05-29 10:43:39 +02:00
4670a75d80 ADD: JSON with authors, books, statuses and informations about library 2021-05-28 15:32:54 +02:00
bac09ff931 UPDATE: Authors, books 2021-05-28 15:31:28 +02:00
e6513c420d UPDATE: Authors, books and statuses 2021-05-28 15:29:55 +02:00
3d8a677c27 refactor evaluate 2021-05-17 14:45:14 +02:00
c852703065 new evaluate 2021-05-17 14:13:45 +02:00
be71442103 NLU 2021-05-16 23:13:40 +02:00
975463e791 evaluate script 2021-05-16 18:27:12 +02:00
338a62f9b1 Zaktualizuj 'data/dialog-12-01-02.tsv' 2021-05-02 15:05:14 +02:00
cae19da8f6 Zaktualizuj 'data/dialog-12-01-02.tsv' 2021-05-02 15:03:47 +02:00
43a4e20e8c Zaktualizuj 'data/dialog-12-13-01.tsv' 2021-05-02 14:57:40 +02:00
4d7a426393 Zaktualizuj 'data/dialog-12-09-06.tsv' 2021-05-02 14:54:02 +02:00
af67d42699 Zaktualizuj 'data/dialog-12-05-08.tsv' 2021-05-02 14:50:41 +02:00
96bbb8308c Zaktualizuj 'data/dialog-12-07-05.tsv' 2021-05-02 14:49:52 +02:00
2226fcec81 Zaktualizuj 'data/dialog-12-05-08.tsv' 2021-05-02 14:48:20 +02:00
7f753677ea Zaktualizuj 'data/dialog-12-01-02.tsv' 2021-05-02 14:39:17 +02:00
41ef6bfded FIX: Naming convention 2021-04-26 15:56:03 +02:00
2efe4b2d79 FIX: Naming convention 2021-04-26 15:30:26 +02:00
711904c435 ADD: Basic modules - NLU, DP, DST, NLG 2021-04-26 15:13:39 +02:00
7c2c87e308 Data new 2021-04-19 15:31:31 +02:00
7417c109bf Data new 2021-04-19 15:30:32 +02:00
a6899da1bc Prześlij pliki do 'data' 2021-04-19 15:30:01 +02:00
4fac82011b add 3rd column 2021-04-19 15:27:27 +02:00
2a7d6d9151 add 3rd column 2021-04-19 15:26:38 +02:00
c15f951038 Data new 2021-04-19 15:26:31 +02:00
84777b9747 Prześlij pliki do 'data' 2021-04-19 14:50:34 +02:00
c75077cfd2 ADD: New column - after removing "" 2021-04-19 14:49:11 +02:00
e35073bf3a ADD: New column - after removing "" 2021-04-19 14:47:14 +02:00
67ccc0286b ADD: New column - after removing "" 2021-04-19 14:45:10 +02:00
904c024891 ADD: New column - after removing "" 2021-04-19 14:43:02 +02:00
0b7d781428 ADD: New column - after removing "" 2021-04-19 14:40:56 +02:00
c8849d35d3 ADD: New column 2021-04-19 14:33:55 +02:00
495ad1d3e3 ADD: New column 2021-04-19 14:33:48 +02:00
b5048a9843 ADD: New column 2021-04-19 14:21:53 +02:00
e778e6dd71 ADD: New column 2021-04-19 14:20:11 +02:00
8f52b5a1c1 Usuń 'data/dialog-12-03-07.tsv' 2021-04-19 14:20:04 +02:00
bce37f9cfc ADD: New column 2021-04-19 14:18:36 +02:00
957abe0008 ADD: New column 2021-04-19 14:16:24 +02:00
d420a7d101 Usuń 'data/dialog-12-03-07.tsv' 2021-04-19 14:16:16 +02:00
97ac913ed4 ADD: New column 2021-04-19 14:13:07 +02:00
08aa78e174 Usuń 'data/dialog-12-13-01.tsv' 2021-04-19 14:12:58 +02:00
4b2c5f9973 ADD: New column 2021-04-19 14:11:37 +02:00
4efeba7225 ADD: New column 2021-04-19 14:10:01 +02:00
30246e5e1f ADD: New column 2021-04-19 14:09:08 +02:00
de86fd8af1 Usuń 'data/dialog-12-13-01.tsv' 2021-04-19 14:08:56 +02:00
ca782754e2 ADD: New column 2021-04-19 14:07:22 +02:00
81e3c474be Usuń 'data/dialog-12-03-07.tsv' 2021-04-19 14:07:10 +02:00
2c9d71bc60 ADD: New column 2021-04-19 14:06:52 +02:00
4e91b1ac36 ADD: New column 2021-04-19 14:05:15 +02:00
0c7d6cddea ADD: New column 2021-04-19 14:01:53 +02:00
9c5137cc8f ADD: New column 2021-04-19 14:01:07 +02:00
a00291edbc New col 2021-04-18 21:22:20 +02:00
Zosia
b2f47b33b3 Merge branch 'master' of https://git.wmi.amu.edu.pl/s470594/telegram-bot-systemy-dialogowe 2021-04-11 14:49:11 +02:00
Zosia
60d783b2c8 fix file format 2021-04-11 14:48:50 +02:00
744aa5ea5a Data 2021-03-30 16:06:11 +02:00
826d3c566c Data 2021-03-30 16:05:47 +02:00
Zosia
8c9df4a3bc The Wonderful Wizard of Oz 2021-03-30 11:19:14 +02:00
eb802e9b5c The Wonderful Wizard of Oz 2021-03-30 09:35:06 +02:00
3cad1455b3 The Wonderful Wizard of Oz 2021-03-30 09:31:53 +02:00
21799cf93e The Wonderful Wizard of Oz 2021-03-30 09:29:01 +02:00
1de81ac39e The Wonderful Wizard of Oz 2021-03-30 09:25:19 +02:00
2128c5c58b The Wonderful Wizard of Oz 2021-03-30 09:21:52 +02:00
98e3f815ff The Wonderful Wizard of Oz 2021-03-30 09:19:35 +02:00
361a502bfe Usuń 'data/dialog-12-15-03 - Arkusz1.tsv' 2021-03-30 09:19:18 +02:00
6216410dc4 The Wonderful Wizard of Oz 2021-03-30 09:19:08 +02:00
cff9c1f232 The Wonderful Wizard of Oz 2021-03-30 09:16:04 +02:00
cbcde05afd The Wonderful Wizard of Oz 2021-03-30 09:11:23 +02:00
0a6c5826a1 Usuń 'data/dialog-12-13-01.tsv' 2021-03-30 09:11:08 +02:00
f3e5156bcc Zaktualizuj 'data/dialog-12-13-01.tsv' 2021-03-30 09:09:40 +02:00
f721b7f4ba The Wonderful Wizard of Oz 2021-03-30 09:09:14 +02:00
dc4a86afdc The Wonderful Wizard of Oz 2021-03-30 07:32:25 +02:00
e59b1f9823 The Wonderful Wizard of Oz 2021-03-30 07:31:54 +02:00
fae6e93af4 ADD: 10 basic dialogs 2021-03-29 09:49:38 +02:00
2b3c132818 requirements analysis 2021-03-22 16:38:04 +01:00
50 changed files with 2402 additions and 0 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
.gitignore
*.md
l08/

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
__pycache__
*.log
*.ipynb

15
Dockerfile Normal file
View File

@ -0,0 +1,15 @@
FROM jupyter/scipy-notebook:python-3.8.8
USER root
WORKDIR /usr/systemy
RUN mkdir -p l08 && cd l08 &&\
git clone https://github.com/thu-coai/ConvLab-2.git
RUN python -m pip install -e /usr/systemy/l08/ConvLab-2/
RUN python -m spacy download en_core_web_sm
RUN pip install pyjsgf==1.9.0
COPY . .
CMD jupyter-lab --allow-root

6
JSGFs/ack.jsgf Normal file
View File

@ -0,0 +1,6 @@
#JSGF V1.0 UTF-8 pl;
grammar ack;
public <ack> = <acks>;
<acks> = czy to wszystko | czy coś jeszcze | coś dodatkowo | coś dodatkowego | czy to wystarczająco | tyle wystarczy;

6
JSGFs/affirm.jsgf Normal file
View File

@ -0,0 +1,6 @@
#JSGF V1.0 UTF-8 pl;
grammar affirm;
public <affirm> = <affirms>;
<affirms> = Zgadza się | chciałbym ją wypożyczyć | chciałabym ją wypożyczyć | To chciałabym ją zarezerować | To chciałbym ją zarezerować | Tak | Tak zgadza się | Poproszę;

6
JSGFs/bye.jsgf Normal file
View File

@ -0,0 +1,6 @@
#JSGF V1.0 UTF-8 pl;
grammar bye;
public <bye> = <byes>;
<byes> = to by było wszystko | Dziękuję bardzo za informację | Chyba wszytko już wiem | Dziękuję | Dziękujemy Życzymy miłej lektury | Dziękujemy i życzymy udanego czytania | W takim razie to wszystko skontaktuję się po zapoznaniu z regulaminem | Oczywiście czekam na kontakt;

39
JSGFs/confirm.jsgf Normal file
View File

@ -0,0 +1,39 @@
#JSGF V1.0 UTF-8 pl;
grammar confirm;
public <potwierdzenie1> = Czy ta książka to <books> {books};
public <potwierdzenie2> = Czy ta książka to <book> <author>;
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};
<books> = Bezsenność w Tokio | Sapiens Od zwierząt do bogów | 1Q84 | Zbrodnia i Kara |
Ojczyzna | Metro 2033 | Zwodniczy Punkt | Wywiad z wampirem | Wilkołak |
Ekstremista | Szóstka wron | Miasto z mgły | Zapis zarazy | Angst with happy ending |
Wiedźmin | Hobbit | Mitologia grecka i rzymska | Jak człowiek staje się mordercą |
Mroeczne archiwa | Alianci | Kuchnie świata | Kres czasów | Jak ocalić świat |
Mieszkaj boho | Potęga checklisty | Sen o okapi | ON | Przygody matematyka |
Dwanaście Stacji | Krew | Milczenie owiec | Duma i uprzedzenie | Władca Pierścieni |
Jane Eyre | Harry Potter i kamień filozoficzny | Zabić drozda | Wichrowe Wzgórza |
Rok 1984 | Mroczne materie | Wielkie nadzieje | Małe kobietki | Tessa D Urberville |
Paragraf 22 | Rebeka | Birdsong | Buszujący w zbożu | Żona podróżnika w czasie |
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
Wojna i pokój | Autostopem przez Galaktykę | Znowu w Brideshead | Grona gniewu |
Alicja w Krainie Czarów | O czym szumią wierzby | Anna Karenina | David Copperfield |
Opowieści z Narnii | Emma | Perswazje | Lew Czarwnica i Stara Szafa;
<authors> = Marcin Bruczkowski | Harari Yuval Noah | Haruki Murakami | Fiodor Dostojewski |
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
Katarzyna Marciniak | Richard Taylor | Megan Rosenbloom | Piotr Zychowicz |
Ewelina Podrez Siama | Marzena Rogalska | Bill Gates | Justina Blakeney |
Atul Gawande | Mariana Leky | Diana Brzezińska | Stanisław Ulam | Tomasz Różycki |
Max Czornyj | Thomas Harris | Jane Austen | J R R Tolkien | Charlotte Bronte |
J K Rowling | Harper Lee | Emily Bronte | George Orwell | Philip Pullman | Charles Dickens |
Louisa M Alcott | Thomas Hardy | Joseph Heller | Daphne Du Maurier | Sebastian Faulks | J D Salinger |
Audrey Niffenegger | George Eliot | Margaret Mitchell | F Scott Fitzgerald | Charles Dickens |
Leo Tolstoy | Douglas Adams | Evelyn Waugh | John Steinbeck | Lewis Carroll |Kenneth Grahame |
Leo Tolstoy | Charles Dickens | C S Lewis | Jane Austen | Jane Austen | C S Lewis;

6
JSGFs/hello.jsgf Normal file
View File

@ -0,0 +1,6 @@
#JSGF V1.0 UTF-8 pl;
grammar hello;
public <hello> = <hellos>;
<hellos> = Witam | Dzień dobry | Cześć | Siemka | Dobry wieczór | Hej | Hejka;

103
JSGFs/inform.jsgf Normal file
View File

@ -0,0 +1,103 @@
#JSGF V1.0 UTF-8 pl;
grammar inform;
public <inform1> = Książka jest dostępna całodobowo <location> {location}*;
public <inform2> = Książka <book> {book} jest dostępna w języku <langs>*;
public <inform3> = Dostępne są wydania z <editionyear> <editionyear> i <editionyear> roku*;
public <inform4> = <cost> {cost};
public <inform5> = Dostępna pozycja to <book> {book}*;
public <inform6> = <card> {card};
public <inform7> = Twoje aktywne wypożyczenia obejmują <number> {number} pozycji*;
public <inform8> = Pozycja <book> {book} jest dostępna <location> {location}*;
public <inform9> = Biblioteka otwarta jest <time> {time} <days> {days} a także <time> {time} w wersji online*;
public <inform10> = Zwroty możliwe są <time> {time} <days> {days} <location> {location}*;
public <inform11> = Ze względu na obowiązujące obostrzenia <status> {status} znajdujące się LINK*;
public <inform12> = Należy się skontaktować z <contact> {contact} lub udać się <location> {location} w celu dokonania rozliczenia*;
public <inform13> = W ciągu ostatnich 30 dni w zbiorach pojawiło się <new> {new}*;
public <inform14> = Twoja obecna historia wypożyczeń obejmuje <number> {number} pozycje Proponowana książka to <book> {book}*;
public <inform15> = W obecnych warunkach epidemiologicznych nie jest to możliwe wydania prowadzi tylko <location> {location}*;
public <inform16> = Obecny <overdue_books> {overdue_books}*;
public <inform17> = Nie <soon_overdue> {soon_overdue}*;
public <inform18> = <reservation> {reservation};
public <inform19> = <status> {status};
public <inform20> = W ciągu kolejnych 30 dni realizowane będą <events> {events}*;
public <inform21> = Wydarzenie będzie realizowane <location> {location} i rozpocznie się <time> {time}*;
public <inform22> = <card_number> {card_number};
public <inform23> = Polecane dla kategorii <category> {category} 1 <book> {book} 2 <book> {book} 3 <book> {book} 4 <book> {book} 5 <book> {book}*;
public <inform24> = <offer> {offer};
public <inform25> = <book_availability> {book_availability};
public <inform26> = 1 <book> {book} 2 <book> {book}*;
public <inform27> = <book> {book};
public <inform28> = <book_availability> {book_availability} <reservation> {reservation}*;
public <inform29> = <new_card> {new_card};
public <inform30> = Mój numer to <card_number> {card_number}*;
public <inform31> = Aktualnie w bibliotece znajduje się 1450 książek z gatunku <category> {category} Możemy polecić następujące książki <book> {book} <book> {book} <book> {book}*;
public <inform32> = Godziny otwarcia biblioteki <days> {days} <time> {time} oraz <days> {days} <time> {time}*;
public <inform33> = <ebook> {ebook};
public <inform34> = <book_limit> {book_limit};
public <inform35> = <penalty_cost> {penalty_cost};
public <inform36> = <lost_card> {lost_card};
public <inform37> = <card_block> {card_block};
public <inform38> = <stolen_card> {stolen_card};
public <inform39> = Posiadamy wszystkie dzieła <author> {author}*;
public <inform40> = <renew_book> {renew_book};
public <inform41> = <days> {days};
public <inform42> = <book> {book} <book> {book} <book> {book};
public <inform43> = <time> {time};
public <inform44> = <summary> {summary};
public <inform45> = Na podstawie wcześniej przeczytanych przez Ciebie lektur polecam książkę <book> {book}*;
public <inform46> = Polecam książkę <book> {book}*;
public <inform47> = Nasza placówka <location> {location}*;
public <inform48> = Godziny otwarcia <time> {time}*;
public <inform49> = Najczęściej wypożyczanym <category> {category} jest książka <book> {book}*;
public <inform50> = <name> {name} <date_of_birth> {date_of_birth}*;
public <inform51> = <create_an_account> {create_an_account};
public <inform52> = <new_account> {new_account};
<langs> = <lang> {lang};
<editions> = <edition> {edition};
<location> = w wypozyczalni online pod adresem LINK | na ulicy Targowej 10 | w głównym punkcie wypożyczeń | w zbiorach online | w filii głównej na ulicy Targowej 10 | do budynku filii głównej | filia główna | pod adresem LINK | za pośrednictwem platformy YouTube pod linkiem LINK | w Poznaniu znajduje się przy ul Bibliotecznej 28 | pod linkiem wwwbibliotekapl;
<edition> = z wydawnictwa Mg | Warszawa 1990;
<lang> = Polskim;
<editionyear> = 2000 | 2012 | 2015;
<cost> = 0 zł 0 gr | 20 groszy;
<book> = <title> {title} <author> {author} | <author> {author} <title> {title} | <title> {title} <author> {author} | <title> {tilte} | <author> {author} | <title> {title} autorstwa <author> {author};
<title> = Mistrz i Małgorzata | Owoce wiśni | Wywiad z wampirem | Morderstwo w Orient Expressie | Księżniczka z lodu | Sprawa Niny Frank | Wszystko czerwone | Zły | Ślepowidzenie | Echopraksja | Stacja Centralna | Problem Trzech Ciał | Kantyczka dla Leibowitza | Walter M Miller | Systemy Dialogowe w Pigułce | Ogniem i Mieczem | książka X | książka Y | książka Z | Zatracenie | Krótka historia czasu | Orwell 1984 | Kafka | Nudna książka 1 | Bardzo ciekawa książka 1 | Bardzo ciekawa książka 2 | Krzyżacy | Krew elfów | Zabić drozda | Zabiłem;
<author> = Dostojewski F | Dazai O | Rice A | Agatha Christie | Camilla Läckberg | Katarzyna Bonda | Joanna Chmielewska | Leopold Tyrmand | Peter Watts | Peter Watts | Lavie Tidhar | Cixin Liu | Adama Kowalskiego | Sienkiewicza | Osamu Dazai | Stephen Hawking | Murakami'ego | Haruki Murakami | Henryk Sienkiewicz | Andrzej Sapkowski | Harper Lee | Jan Kowalski;
<card> = Formularz karty bibliotecznej znajduje się pod adresem LINK konieczne jest także zaakceptowanie regulaminu pod adresem LINK Odbiór możlwy jest po 7 dniach na ulicy Targowej 10 w godzinach 9-16 | Karta będzie dostępna <date> {date} <location> {location} <time> {time} <location> {location};
<date> = <day> {day} <month> {month} <year> {year} | <day> {day} <month> {month} <year> {year} roku | <day> {day}<month> {month}<year> {year};
<day> = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31;
<month> = stycznia | styczeń | lutego | luty | marca | marzec | kwietnia | kwiecień | maja | maj | czerwca | czerwiec | lipca | lipec | sierpnia | sierpień | września | wrzesień | października | październik | listopada | listopad | grudnia | grudzień;
<year> = 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21;
<time> = w godzinach 9-17 | całodobowo | w godzinach 9-16 | o godzinie 1330 | od 800 do 1730 | od godziny 800 do godziny 1400 | <number> {number} | <days> {days} 830-1830 <days> {days} 1100-1900 <days> {days} nieczynne | do godziny 2200;
<number> = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 214 | 48 | 121212 | VI;
<days> = od poniedziałku do soboty | w dni robocze | w soboty | o <number> {number} | o <number> {number} dni | Poniedziałek-Piątek | Sobota | Niedziela;
<status> = aktywne są tylko zasoby online | Zasoby online są dostępne <location> {location} | Obecnie <late> {late} | Masz jedną nieoddaną książkę <book> {book} | Sygnatura <number> {number}<number> {number}| Zwrot <date> {date} <time> {time};
<contact> = referentem filii głównej pod numerem XXX-XXX-XXX | Jak dotąd wypożyczyłeś tylko jedną książkę - <book> {book} Zachęcamy do częstszego korzystania z naszych usług;
<new> = <number> {number} pozycji fizycznych i <number> {number} pozycji dostępnych online;
<overdue_books> = stan przekroczonych terminów oddania wynosi <number> {number};
<soon_overdue> = brak zaległości;
<reservation> = Rezerwacja została poprawnie <cancel> {cancel} | Książki <book> {book} <book> {book} zostały zarezerwowane Rezerwacja jest ważna przez 48 godzin zaczynając od momentu jej złożenia | Książka została wypożyczona | Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy Proszę pamiętać że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji;
<cancel> = anulowana;
<events> = <event> {event} (<date> {date}) <event> {event} (<date> {date});
<event> = płocki dzień historii tańca ludowego | dzień młodego czytelnika;
<card_number> = 123123 | 1234567 | 123456 | XXX-XXXX-XXX | 200130 | 6758396 | 12345 | 123456789 | 1256;
<offer> = Wszystkie propozycje w oparciu o historię wypożyczeń;
<book_availability> = Aktualnie dostępnych jest <number> {number} egzemplarzy tej książki | Tak aktualnie znajduje się <number> {number} książek <book> {book} | Obecnie jest dostępnych <number> {number} książek <book> {book} | <book> {book} wydane do 2020 roku;
<category> = kryminał | science-fiction | fantastyka | kryminałem;
<late> = nie posiadasz niezwróconych w terminie książek;
<new_card> = Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem;
<ebook> = Tak istnieje taka możliwość;
<book_limit> = Limit wypożyczonych książek to <number> {number};
<penalty_cost> = Każdy dzień spóźnienia to kara <cost> {cost} za książkę;
<lost_card> = W celu wyrobienia nowej karty i zablokowania starej należy udać się stacjonarnie do naszej biblioteki;
<card_block> = Niestety ale nie ma możliwości zablokowania karty przez internet;
<stolen_card> = Aktualnie karta znajduje się w stanie zastrzeżonym aby wypożyczyć książkę będzie trzeba potwierdzić jej odbiór kodem SMS;
<renew_book> = Proszę podać o ile dni ma zostać przedłużona książka nie może być to jednak czas dłuższy niż 21 dni | Książka <book> {book} została przedłużona <days> {days} obecny termin zwrotu wypada <date> {date};
<summary> = Książka <book> {book} została przedłużona <days> {days} obecny termin zwrotu wypada <date> {date};
<date_of_birth> = 1998;
<name> = Piotr Kopycki;
<create_an_account> = Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem które znajdują się <location> {location} | Kartę zapisu można wypełnić przez internet Następnie należy udać się do naszej placówki w celu odebrania dokumentu Wymagany będzie dowód osobisty lub legitymacja studencka;
<new_account> = Gdy dokument będzie gotowy otrzyma Pan powiadomienie na podany w formularzy adres email Maksymalny czas oczekiwania to 5 dni roboczych;

7
JSGFs/negate.jsgf Normal file
View File

@ -0,0 +1,7 @@
#JSGF V1.0 UTF-8 pl;
grammar negate;
public <negate> = Nie <negates>;
<negates> = wolno | można | chcę | chce | odpowiada mi | pasuję mi | pasuje mi | mogę | podam;
public <negate_empty> = Nie;

22
JSGFs/reqmore.jsgf Normal file
View File

@ -0,0 +1,22 @@
#JSGF V1.0 UTF-8 pl;
grammar reqmore;
public <reqmore1> = Czy dostępna jest <lang> {lang} oraz <edition> {edition}*;
public <reqmore2> = <edition> {edition};
public <reqmore3> = <cost> {cost} tej książki*;
public <reqmore4> = Czy w ostatnim czasie <new> {new}*;
public <reqmore5> = Jaki jest <title> {title} <author> {author} i <year> {year} książki*;
public <reqmore6> = Czy możesz powiedzieć mi coś więcej o <event> {event}*;
public <reqmore7> = Proszę podać <book> {book}*;
public <reqmore8> = Czy mogę jeszcze jakoś pomóc;
<lang> = wyłącznie polska wersja językowa;
<edition> = jakiego wydawnictwa | czy to jedyne wydanie;
<cost> = ile wynosi koszt wypożyczenia;
<new> = doszły jakieś nowe pozycje;
<title> = tytuł;
<author> = autor;
<year>= rok wydania;
<event> = dniu młodego czytelnika;
<book> = o jaką książkę chodzi;

96
JSGFs/request.jsgf Normal file
View File

@ -0,0 +1,96 @@
#JSGF V1.0 UTF-8 pl;
grammar request;
public <wypozyczenie1> = wypożyczenie książki <books> {books}*;
public <wypozyczenie2> = interesuje mnie wypożyczenie <books> {books}*;
public <wypozyczenie3> = interesuje mnie wypożyczenie książkę <books> {books}*;
public <wypozyczenie4> = chciałbym wypożyczyć <books> {books}*;
public <wypozyczenie5> = chciałbym wypożyczyć <books> {books} <authors> {authors}*;
public <wypozyczenie6> = chciałabym wypożyczyć <books> {books}*;
public <wypozyczenie7> = chciałabym wypożyczyć <books> {books} <authors> {authors}*;
public <wypozyczenie8> = chciałabym wypożyczyć książkę <books> {books}*;
public <wypozyczenie9> = chciałabym wypożyczyć książkę <books> {books} <authors> {authors}*;
public <wypozyczenie10> = interesuje mnie wypożyczenie <books> {books} <authors> {authors}*;
public <wypozyczenie11> = interesuje mnie wypożyczenie <books> {books}*;
public <wypozyczenie12> = interesuje mnie wypożyczenie książkę <books> {books} <authors> {authors}*;
public <wypozyczenie13> = interesuje mnie wypożyczenie książkę <books> {books}*;
public <status1> = Czy książka <books> {books} jest dostępna*;
public <status2> = Czy książka <books> {books} <authors> {authors} jest dostępna*;
public <status3> = Dzień dobry Czy ksiażka <books> {books} jest dostępna*;
public <status4> = Dzień dobry Czy książka <books> {books} <authors> {authors} jest dostępna*;
public <status5> = Witam Czy ksiażka <books> {books} jest dostępna*;
public <status6> = Witam Czy książka <books> {books} <authors> {authors} jest dostępna*;
public <status7> = Chciałbym się upewnić czy książka <books> {books} jest dostępna*;
public <status8> = Chciałbym się upewnić czy książka <books> {books} <authors> {authors} jest dostępna*;
public <status9> = Chciałabym się upewnić czy książka <books> {books} jest dostępna*;
public <status10> = Chciałabym się upewnić czy książka <books> {books} <authors> {authors} jest dostępna*;
public <status11> = Czy biblioteka jest <status> {status}*;
public <status12> = Czy biblioteka jest teraz <status> {status}*;
public <status13> = Czy biblioteka jest <status> {status} w czasie pandemii*;
public <status14> = Czy czytelnia jest <status> {status}*;
public <status15> = Czy czytelnia jest teraz <status> {status}*;
public <status16> = Czy biblioteka jest <status> {status} w czasie pandemii*;
public <status17> = Jakie są dostępne gatunki <genres> {genres}*;
public <status18> = Jakie są dostępne wydania <editions> {editions}*;
public <zwrot1> = Chcę zwrócić <books> {books}*;
public <zwrot2> = Chcę zwrócić <books> {books} <authors> {authors}*;
public <zwrot3> = Chciałbym zwrócić <books> {books}*;
public <zwrot4> = Chciałbym zwrócić <books> {books} <authors> {authors}*;
public <zwrot5> = Chciałabym zwrócić <books> {books}*;
public <zwrot6> = Chciałabym zwrócić <books> {books} <authors> {authors}*;
public <rezerwacja1> = Chciałbym zarezerwować <books> {books}*;
public <rezerwacja2> = Chciałabym zarezerwować <books> {books}*;
public <rezerwacja3> = Chciałbym dokonać rezerwacji książki <books> {books}*;
public <rezerwacja4> = Chciałabym dokonać rezerwacji ksiązki <books> {books}*;
<books> = Bezsenność w Tokio | Sapiens Od zwierząt do bogów | 1Q84 | Zbrodnia i Kara |
Ojczyzna | Metro 2033 | Zwodniczy Punkt | Wywiad z wampirem | Wilkołak |
Ekstremista | Szóstka wron | Miasto z mgły | Zapis zarazy | Angst with happy ending |
Wiedźmin | Hobbit | Mitologia grecka i rzymska | Jak człowiek staje się mordercą |
Mroeczne archiwa | Alianci | Kuchnie świata | Kres czasów | Jak ocalić świat |
Mieszkaj boho | Potęga checklisty | Sen o okapi | ON | Przygody matematyka |
Dwanaście Stacji | Krew | Milczenie owiec | Duma i uprzedzenie | Władca Pierścieni |
Jane Eyre | Harry Potter i kamień filozoficzny | Zabić drozda | Wichrowe Wzgórza |
Rok 1984 | Mroczne materie | Wielkie nadzieje | Małe kobietki | Tessa D Urberville |
Paragraf 22 | Rebeka | Birdsong | Buszujący w zbożu | Żona podróżnika w czasie |
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
Wojna i pokój | Autostopem przez Galaktykę | Znowu w Brideshead | Grona gniewu |
Alicja w Krainie Czarów | O czym szumią wierzby | Anna Karenina | David Copperfield |
Opowieści z Narnii | Emma | Perswazje | Lew Czarwnica i Stara Szafa;
<authors> = Marcin Bruczkowski | Harari Yuval Noah | Haruki Murakami | Fiodor Dostojewski |
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
Katarzyna Marciniak | Richard Taylor | Megan Rosenbloom | Piotr Zychowicz |
Ewelina Podrez Siama | Marzena Rogalska | Bill Gates | Justina Blakeney |
Atul Gawande | Mariana Leky | Diana Brzezińska | Stanisław Ulam | Tomasz Różycki |
Max Czornyj | Thomas Harris | Jane Austen | J R R Tolkien | Charlotte Bronte |
J K Rowling | Harper Lee | Emily Bronte | George Orwell | Philip Pullman | Charles Dickens |
Louisa M Alcott | Thomas Hardy | Joseph Heller | Daphne Du Maurier | Sebastian Faulks | J D Salinger |
Audrey Niffenegger | George Eliot | Margaret Mitchell | F Scott Fitzgerald | Charles Dickens |
Leo Tolstoy | Douglas Adams | Evelyn Waugh | John Steinbeck | Lewis Carroll |Kenneth Grahame |
Leo Tolstoy | Charles Dickens | C S Lewis | Jane Austen | Jane Austen | C S Lewis;
<status> = otwarta | zamknięta | otwarta w czasie pandemii | zamknięta do odwołania;
<genres> = romans | thriller | ksiazka fantasy | horror | biografia | science fiction | dramat |
powiesc | basn | satyra | legenda | liryka | opowiadanie | komedia | epika | poezja |
literatura piekna;
<editions> = 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 |2003 |
2004 | 2005 | 2000;

6
JSGFs/thankyou.jsgf Normal file
View File

@ -0,0 +1,6 @@
#JSGF V1.0 UTF-8 pl;
grammar thankyou;
public <thankyou> = <thanks>;
<thanks> = Dziękuję to wszystko | To by było wszystko | Ok dziękuje | Dziękuję | Dziękuję bardzo | Dzięki | dziękuję za rozmowę | Dziękuję za informację;

369
Modules.py Normal file
View File

@ -0,0 +1,369 @@
from convlab2.dst.dst import DST
from convlab2.dst.rule.multiwoz.dst_util import normalize_value
from collections import defaultdict
from convlab2.policy.policy import Policy
from convlab2.util.multiwoz.dbquery import Database
from convlab2.util.multiwoz.multiwoz_slot_trans import REF_SYS_DA, REF_USR_DA
import copy
from copy import deepcopy
import json
import os
import jsgf
# Natural Language Understanding
class NLU:
def __init__(self):
self.grammars = [
jsgf.parse_grammar_file(f"JSGFs/{file_name}")
for file_name in os.listdir("JSGFs")
]
def get_dialog_act(self, rule):
slots = []
self.get_slots(rule.expansion, slots)
return {"act": rule.grammar.name, "slots": slots}
def get_slots(self, expansion, slots):
if expansion.tag != "":
slots.append((expansion.tag, expansion.current_match))
return
for child in expansion.children:
self.get_slots(child, slots)
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
self.get_slots(expansion.referenced_rule.expansion, slots)
def match(self, utterance):
list_of_illegal_character = [",", ".", "'", "?", "!", ":", "-", "/"]
for illegal_character in list_of_illegal_character[:-2]:
utterance = utterance.replace(f"{illegal_character}", "")
for illegal_character in list_of_illegal_character[-2:]:
utterance = utterance.replace(f"{illegal_character}", " ")
for grammar in self.grammars:
matched = grammar.find_matching_rules(utterance)
if matched:
return self.get_dialog_act(matched[0])
return {"act": "null", "slots": []}
class DP(Policy):
def __init__(self):
Policy.__init__(self)
self.db = Database()
def predict(self, state):
self.results = []
system_action = defaultdict(list)
user_action = defaultdict(list)
for intent, domain, slot, value in state["user_action"]:
user_action[(domain, intent)].append((slot, value))
for user_act in user_action:
self.update_system_action(user_act, user_action, state, system_action)
system_acts = [
[intent, domain, slot, value]
for (domain, intent), slots in system_action.items()
for slot, value in slots
]
state["system_action"] = system_acts
return system_acts
def update_system_action(self, user_act, user_action, state, system_action):
domain, intent = user_act
constraints = [
(slot, value)
for slot, value in state["belief_state"][domain.lower()]["semi"].items()
if value != ""
]
self.db.dbs = {
"books": [
{
"author": "autor",
"title": "krew",
"edition": "2020",
"lang": "polski",
},
{
"author": "Marcin Bruczkowski",
"title": "Bezsenność w Tokio",
"genre": "reportaż",
"publisher": "Społeczny Instytut Wydawniczy Znak",
"edition": "2004",
"lang": "polski",
},
{
"author": "Harari Yuval Noah",
"title": "Sapiens Od zwierząt do bogów",
"edition": "2011",
"lang": "polski",
},
{
"author": "Haruki Murakami",
"title": "1Q84",
"edition": "2009",
"lang": "polski",
},
{
"author": "Fiodor Dostojewski",
"title": "Zbrodnia i Kara",
"publisher": "Wydawnictwo Mg",
"edition": "2015",
"lang": "polski",
},
]
}
self.results = deepcopy(self.db.query(domain.lower(), constraints))
# Reguła 1
if intent == "Request":
if len(self.results) == 0:
system_action[(domain, "NoOffer")] = []
else:
for slot in user_action[user_act]:
kb_slot_name = REF_USR_DA[domain].get(slot[0], slot[0])
if kb_slot_name in self.results[0]:
system_action[(domain, "Inform")].append(
[slot[0], self.results[0].get(kb_slot_name, "unknown")]
)
# Reguła 2
elif intent == "Inform":
if len(self.results) == 0:
system_action[(domain, "NoOffer")] = []
else:
system_action[(domain, "Inform")].append(
["Choice", str(len(self.results))]
)
choice = self.results[0]
if domain in ["Book"]:
system_action[(domain, "Recommend")].append(
["Title", choice["title"]]
)
# Dialogue State Tracker
class SDST(DST):
def __init__(self):
DST.__init__(self)
self.state = {
"user_action": [],
"system_action": [],
"belief_state": {
"books": {
"reserve": {"reservation": []},
"semi": {
"title": "",
"author": "",
"genre": "",
"publisher": "",
"edition": "",
"lang": "",
},
},
"library": {
"semi": {
"location": "",
"status": "",
"events": "",
"days": "",
"phone number": "",
}
},
"card": {"semi": {"lost": "", "destroyed": "", "new": ""}},
"date": {"semi": {"day": "", "month": "", "year": ""}},
},
"request_state": {
"reserve": {"reservation": []},
},
"reqmore_state": {
"books": {
"reserve": {"reservation": []},
"semi": {
"title": "",
"author": "",
"genre": "",
"publisher": "",
"edition": "",
"lang": "",
},
},
"library": {
"semi": {
"location": "",
"status": "",
"events": "",
"days": "",
"phone number": "",
}
},
"card": {"semi": {"lost": "", "destroyed": "", "new": ""}},
"date": {"semi": {"day": "", "month": "", "year": ""}},
},
"terminated": False,
"history": [],
}
self.ref = {
"Books": {
"Title": "title",
"Author": "author",
"Genre": "genre",
"Publisher": "publisher",
"Edition": "edition",
"Lang": "lang",
"None": "none",
},
"Library": {
"Location": "location",
"Status": "status",
"Events": "events",
"Days": "days",
"Phone number": "phone number",
"None": "none",
},
"Card": {
"Lost": "lost",
"Destroyed": "destroyed",
"New": "new",
"None": "none",
},
"Date": {"Day": "day", "Month": "month", "Year": "year", "None": "none"},
}
self.value_dict = json.load(open("value_dict.json"))
def update(self, user_act=None):
for intent, domain, slot, value in user_act:
domain = domain.lower()
intent = intent.lower()
if domain in ["bye", "thankyou", "hello"]:
continue
if intent == "inform":
k = self.ref[domain.capitalize()].get(slot, slot)
if k is None:
continue
domain_dic = self.state["belief_state"][domain]
if k in domain_dic["semi"]:
nvalue = normalize_value(self.value_dict, domain, k, value)
self.state["belief_state"][domain]["semi"][k] = value
elif k in domain_dic["books"]:
self.state["belief_state"][domain]["books"][k] = value
elif k.lower() in domain_dic["books"]:
self.state["belief_state"][domain]["books"][k.lower()] = value
elif intent == "request":
k = self.ref[domain.capitalize()].get(slot, slot)
if k is None:
continue
if domain not in self.state["request_state"]:
self.state["request_state"][domain] = {}
self.state["request_state"]["reserve"]["reservation"].append(value)
else:
if (
value
not in self.state["request_state"]["reserve"]["reservation"]
):
self.state["request_state"]["reserve"]["reservation"].append(
value
)
if k not in self.state["request_state"][domain]:
self.state["request_state"][domain][k] = value
else:
self.state["request_state"][domain][k] = value
self.state["history"].append(
self.state["request_state"]["reserve"]["reservation"][-1]
)
elif intent == "reqmore":
k = self.ref[domain.capitalize()].get(slot, slot)
if k is None:
continue
domain_dic = self.state["reqmore_state"][domain]
if k in domain_dic["semi"]:
nvalue = normalize_value(self.value_dict, domain, k, value)
self.state["reqmore_state"][domain]["semi"][k] = value
elif k in domain_dic["books"]:
self.state["reqmore_state"][domain]["books"][k] = value
elif k.lower() in domain_dic["books"]:
self.state["reqmore_state"][domain]["books"][k.lower()] = value
elif intent == "negate":
try:
self.state["request_state"]["reserve"]["reservation"].remove(
self.state["history"][-1]
)
except Exception:
pass
elif intent == "affirm":
self.state["belief_state"]["books"]["reserve"][
"reservation"
] = self.state["request_state"]["reserve"]["reservation"]
else:
continue
return self.state
def init_session(self):
self.state = self.state
# Natural Language Generator
class NLG:
def __init__(self, acts, arguments):
self.acts = acts
self.arguments = arguments
def vectorToText(self, actVector):
if actVector == [0, 0]:
return "Witaj, nazywam się Mateusz."
else:
return "Przykro mi, nie zrozumiałem Cię"
class Run:
def __init__(self):
self.acts = {
0: "hello",
1: "request",
}
self.arguments = {0: "name"}
self.nlu = NLU()
self.dp = DP(self.acts, self.arguments)
self.nlg = NLG(self.acts, self.arguments)
self.dst = DST(self.acts, self.arguments)
def inputProcessing(self, command):
act = self.nlu.analyze(command)
self.dst.store(act)
basic_act = self.dp.tacticChoice(self.dst.transfer())
return self.nlg.vectorToText(basic_act)
# run = Run()
# while(1):
# message = input("Napisz coś: ")
# print(run.inputProcessing(message))

524
Przykadowe_odpowiedzi.ipynb Normal file
View File

@ -0,0 +1,524 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "3a05341a",
"metadata": {},
"outputs": [],
"source": [
"import random"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "b073e4a5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Dzień dobry, w czym mogę pomóc?'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#######################Hello#################################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
"\n",
" if intent == 'Hello':\n",
" r = random.randint(1, 7)\n",
"\n",
" if r == 1:\n",
" return 'Dzień dobry, witam w interaktywnej bibliotece'\n",
" elif r == 2:\n",
" return 'Witam w interaktywnej biblitece'\n",
" elif r==3:\n",
" return 'Dzień dobry, w czym mogę pomóc?'\n",
" elif r==4:\n",
" return 'Dzień dobry'\n",
" \n",
" elif r==5:\n",
" return 'Cześć'\n",
" elif r==6:\n",
" return 'Witamy w interaktywnej bibliotece'\n",
" else:\n",
" return 'Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc?'\n",
"\n",
"\n",
"nlg(['', 'Hello', '', ''])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "2dd476eb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dzień promowania czytelnictwa.\n",
"W przypadku zgubienia karty fakt ten można zgłosić w głównej filii biblioteki\n"
]
}
],
"source": [
"############################Inform#################################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
"\n",
" if domain == 'books' and intent == 'Inform' and slot == 'title':\n",
" if value == 0:\n",
" return f'Wybrana pozycja nie jest dostępna.'\n",
" elif value == 1:\n",
" return f'Wybrana pozycja jest dostępna.'\n",
" else:\n",
" return f'Wybrana pozycja nie jest obecnie dostępna'\n",
" \n",
" if domain == 'books' and intent == 'Inform' and slot == 'publisher':\n",
" if value == 0:\n",
" return f'Książka tego wydawcy jest dostępna'\n",
" elif value == 1:\n",
" return f'Książka tego wydawcy nie jest dostępna'\n",
" else:\n",
" return f'Nie znaleziono wydawcy o tej nazwie'\n",
" \n",
" if domain == 'books' and intent == 'Inform' and slot == 'author':\n",
" if value == 0:\n",
" return f'Książka tego autora nie jest dostępna'\n",
" elif value == 1:\n",
" return f'Książki tego autora są dostępne w bibliotece'\n",
" else:\n",
" return f'Nie znaleziono autora o tym imieniu i nazwisku'\n",
" \n",
" \n",
" if domain == 'library' and intent == 'Inform' and slot == 'status':\n",
" if value == 0:\n",
" return f'Biblioteka jest zmaknięta.'\n",
" elif value == test0:\n",
" return f'Biblioteka jest otwarta.'\n",
" else:\n",
" return f'Biblioteka jest zamknięta do odwołania'\n",
" \n",
" if domain == 'library' and intent == 'Inform' and slot == 'location':\n",
" if value == 0:\n",
" return f'Biblioteka znajduje się na ul. Targowej 10.'\n",
" else:\n",
" return f'Biblioteka znajduje się na ul. Targowej 10.'\n",
" \n",
" if domain == 'library' and intent == 'Inform' and slot == 'days':\n",
" if value == 0:\n",
" return f'Biblioteka jest otwarta od poniedziałku do piątku.'\n",
" else:\n",
" return f'Biblioteka jest otwarta w dni robocze.'\n",
" \n",
" if domain == 'library' and intent == 'Inform' and slot == 'phone number':\n",
" r = random.randint(1, 4)\n",
" if r == 1:\n",
" return '514 312 231'\n",
" elif r == 2:\n",
" return '123 987 231'\n",
" elif r==3:\n",
" return '432 112 453'\n",
" else:\n",
" return 'Telefony dostępne są na głównej stronie biblioteki'\n",
" \n",
" if domain == 'library' and intent == 'Inform' and slot == 'events':\n",
" r = random.randint(1, 4)\n",
" if r == 1:\n",
" return 'Dzień młodego czytelnika.'\n",
" elif r == 2:\n",
" return 'Dzień fantastyki.'\n",
" elif r==3:\n",
" return 'Dzień promowania czytelnictwa.'\n",
" else:\n",
" return 'Obecnie nie ma żadnych wydarzeń.'\n",
" \n",
" if domain == 'card' and intent == 'Inform' and slot == 'lost':\n",
" if value == 0:\n",
" return f'W przypadku zgubienia karty należy zgłosić ten fakt dzwoniąc pod numer 513 231 211'\n",
" else:\n",
" return f'W przypadku zgubienia karty fakt ten można zgłosić w głównej filii biblioteki'\n",
" \n",
" if domain == 'card' and intent == 'Inform' and slot == 'destroyed':\n",
" if value == 0:\n",
" return f'W przypadku zniszczenia karty bibliotecznej konieczne jest dokonanie zgłoszenia pod numerem 513 231 211'\n",
" else:\n",
" return f'Zgłoszenie zniszczenia karty bibliotecznej może zostać dokonane w filii głównej biblioteki.'\n",
" \n",
" if domain == 'library' and intent == 'Inform' and slot == 'new':\n",
" if value == 0:\n",
" return f'Żeby wyrobić kartę konieczne jest wypełnienie formularza i akceptacja regulaminu'\n",
" else:\n",
" return f'Wyrobienie karty jest możliwe przez stronę internetową albo osobiście w głównej filii biblioteki'\n",
" \n",
" \n",
"print(nlg(['library', 'Inform', 'events', '']))\n",
"print(nlg(['card', 'Inform', 'lost', '']))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "2067e38b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Czy ta książka to Bezsenność w Tokio?\n",
"Czy autor to Haruki Murakami?\n"
]
}
],
"source": [
"#######################Confirm#############################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
" test0 = \"Bezsenność w Tokio\"\n",
" test1 = \"Haruki Murakami\"\n",
"\n",
" if domain == 'books' and intent == 'Confirm' and slot == 'title':\n",
" if value == 0:\n",
" return f'Nie znalazłem książki o tym tytule.'\n",
" elif value == test0:\n",
" return f'Czy ta książka to {value}?'\n",
" else:\n",
" return f'Książka o tym tytule nie została znaleziona. Proszę podać więcej informacji.'\n",
" \n",
" if domain == 'books' and intent == 'Confirm' and slot == 'author':\n",
" if value == 0:\n",
" return f'Nie znalazłem książki tego autora.'\n",
" elif value == test1:\n",
" return f'Czy autor to {value}?'\n",
" else:\n",
" return f'Ksiązka tego autora nie została znaleziona. Proszę podać więcej informacji.'\n",
" \n",
" if domain == 'reservation' and intent == 'Confirm':\n",
" r = random.randint(1, 3)\n",
" if r==1:\n",
" return 'Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji.'\n",
" elif r==2:\n",
" return 'Możesz zarezerwować tę pozycję. Będzie czekać na Ciebie w naszej placówce przez następnych 5 dni roboczych.'\n",
" elif r==3:\n",
" return 'Książka została wypożyczona'\n",
" \n",
" if intent == 'Confirm' and domain == '' and slot == '':\n",
" return 'Tak'\n",
" \n",
" \n",
"print(nlg(['books', 'Confirm', 'title', 'Bezsenność w Tokio']))\n",
"print(nlg(['books', 'Confirm', 'author', 'Haruki Murakami']))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c5aa0a54",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tak, to będzie wszystko\n",
"Tak, to wszystko\n"
]
}
],
"source": [
"#########################Affirm###############################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
"\n",
" if domain=='books' and intent == 'Affirm':\n",
" r = random.randint(1, 6)\n",
"\n",
" if r == 1:\n",
" return 'Zgadza się'\n",
" elif r == 2:\n",
" return 'Książka została wypożczyona'\n",
" elif r==3:\n",
" return 'Tak, zgadza się - książka została dodana do konta'\n",
" elif r==4:\n",
" return 'Tak, to będzie wszystko'\n",
" elif r==5:\n",
" return 'Tak, książka została wypożyczona poprawnie'\n",
" else:\n",
" return 'Tak'\n",
" \n",
" if domain=='card' and intent == 'Affirm':\n",
" r = random.randint(1, 4)\n",
"\n",
" if r == 1:\n",
" return 'Po spełnieniu warunków karta zostanie założona'\n",
" elif r == 2:\n",
" return 'Tak, to wszystko w zakresie założenia karty'\n",
" elif r==3:\n",
" return 'Tak, to będzie wszystko'\n",
" else:\n",
" return 'Tak, to wszystko'\n",
" \n",
" if intent=='Affirm' and domain=='create_an_account':\n",
" return 'Tak, poproszę'\n",
" \n",
" if intent=='Affirm':\n",
" r = random.randint(1, 4)\n",
" if r==1:\n",
" return 'Zgadza się'\n",
" if r==2:\n",
" return 'Tak'\n",
" \n",
"\n",
"print(nlg(['books', 'Affirm', '', '']))\n",
"print(nlg(['card', 'Affirm','','']))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "c5b9028d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Dziękuję i życzę miłej lektury'"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#######################Bye#################################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
"\n",
" if intent == 'Bye':\n",
" r = random.randint(1, 4)\n",
"\n",
" if r == 1:\n",
" return 'Do zobaczenia'\n",
" elif r == 2:\n",
" return 'Do napisania'\n",
" elif r==3:\n",
" return 'Do widzenia'\n",
" else:\n",
" return 'Dziękuję i życzę miłej lektury'\n",
"\n",
"\n",
"nlg(['Books', 'Bye', '', ''])\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "22b38fb4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Bardzo dziękuję za informację. Wszystko już wiem'"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#######################Thankyou#################################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
"\n",
" if intent == 'Thankyou':\n",
" r = random.randint(1, 10)\n",
"\n",
" if r == 1:\n",
" return 'Dziękuję'\n",
" elif r == 2:\n",
" return 'Dziękuję, to wszystko'\n",
" elif r==3:\n",
" return 'Ok, dziękuję'\n",
" elif r==4:\n",
" return 'Dziękuję, to będzie wszystko'\n",
" elif r==5:\n",
" return 'Dobrze. Dziękuję za rozmowę'\n",
" elif r==6:\n",
" return 'Dziękuję za informację'\n",
" elif r==7:\n",
" return 'To by było wszystko'\n",
" elif r==8:\n",
" return 'Bardzo dziękuję za informację. Wszystko już wiem'\n",
" elif r==9:\n",
" return 'Dziękuję za pomoc'\n",
" elif r==10:\n",
" return 'Dobrze, dziękuję za rozmowę'\n",
" else:\n",
" return 'Dziękuję bardzo'\n",
"\n",
"\n",
"nlg(['', 'Thankyou', '', ''])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "3caff585",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Chciałbym założyć kartę biblioteczną\n",
"Czy książka Owoce wiśni Osamu Dazai, znajduje się w bibliotece w formie ebooka?\n",
"Chciałabym zwrócić książkę Kafka Haruki Murakami\n",
"Chciałbym wypożyczyć książkę\n",
"Chciałbym anulować rezerwację książki\n"
]
}
],
"source": [
"#######################Request#############################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
" \n",
" if intent == 'Request':\n",
"\n",
" if domain == 'card':\n",
" return 'Chciałbym założyć kartę biblioteczną'\n",
" \n",
" if domain=='card_number':\n",
" r = random.randint(1,2)\n",
" if r==1:\n",
" return 'Proszę o podanie numeru karty bibliotecznej'\n",
" elif r==2:\n",
" return 'Proszę podać numer karty bibliotecznej'\n",
" \n",
" if domain == 'new_card':\n",
" return 'Chciałbym założyć kartę biblioteczną, jak to zrobić?'\n",
" \n",
" if domain == 'signature':\n",
" return 'Proszę podać sygnaturę ksiązki'\n",
" \n",
" if domain == 'penalty_cost':\n",
" return 'Jaka jest kara za przekroczenie terminu zwrotu?'\n",
"\n",
" if domain == 'status':\n",
" r = random.randint(1,5)\n",
" if r==1:\n",
" return 'Chciałbym sprawdzić wypożyczone książki'\n",
" elif r==2:\n",
" return 'Czy czytelnia funkcjonuje podczas pandemii?'\n",
" elif r==3:\n",
" return 'Chciałbym sprawdzić czy mam jakieś książki do oddania'\n",
" elif r==4:\n",
" return 'Chciałbym sprawdzić najbliższy termin zwrotu'\n",
" elif r==5:\n",
" return 'Chciałabym sprawdzić, czy mam jakieś wypożyczone książki'\n",
"\n",
" if domain == 'books':\n",
" return f'Czy książka {value}, znajduje się w bibliotece w formie ebooka?'\n",
"\n",
" if domain == 'book':\n",
" r = random.randint(1,5)\n",
" if r==1:\n",
" return f'Chciałabym wypożyczyć książkę {value}'\n",
" elif r==2:\n",
" return 'Proszę podać tytuł i autora pozycji'\n",
" elif r==3:\n",
" return f'Czy posiadacie książke {value}?'\n",
" elif r==4:\n",
" return 'Proszę podać tytuł i autora wybranej pozycji'\n",
" elif r==5:\n",
" return 'Proszę podać tytuł i autora wybranej książki'\n",
"\n",
" if domain == 'time':\n",
" r = random.randint(1,3)\n",
" if r==1:\n",
" return 'W jakich godzinach jest otwarta biblioteka?'\n",
" elif r==2:\n",
" return 'W jakich godzinach macie otwarte?'\n",
" elif r==3:\n",
" return 'Skąd będę wiedział kiedy moge to odebrać?'\n",
" \n",
" if domain == 'location':\n",
" return 'Można odebrać ją w innej filli biblioteki?'\n",
"\n",
" if domain == 'return':\n",
" return f'Chciałabym zwrócić książkę {value}'\n",
"\n",
" if domain == 'reservation':\n",
" r = random.randint(1,2)\n",
" if slot=='cancel':\n",
" return 'Chciałbym anulować rezerwację książki'\n",
" if r==1:\n",
" return f'Chciałbym zarezerwować książkę {value}'\n",
" elif r==2:\n",
" return 'Chciałbym wypożyczyć książkę'\n",
"\n",
" if domain == 'overdue_books':\n",
" return 'Mam jakieś książki które mają przekroczony termin oddania?'\n",
"\n",
" if domain == 'soon_overdue':\n",
" return f'Czy zbliża mi się termin oddania książki?'\n",
"\n",
" if domain == 'online_library':\n",
" return 'Jak mogę uzyskać dostęp do zasobów online?'\n",
"\n",
" if domain == 'events':\n",
" return 'Jakie wydarzenia odbywają się w najbliższym czasie w bibliotece?'\n",
" \n",
" if domain=='action':\n",
" if slot=='wypozyczenie':\n",
" return 'Chciałbym wypożyczyć jeden egzemplarz'\n",
" elif slot=='reservation':\n",
" return 'Chciałbym zarezerwować wszystkie części tego cyklu'\n",
" elif slot == 'status':\n",
" return 'Chciałbym sprawdzić listę obecnie wypożyczonych książek'\n",
"\n",
" \n",
" \n",
"print(nlg(['card', 'Request', '', '']))\n",
"print(nlg(['books', 'Request', '', 'Owoce wiśni Osamu Dazai']))\n",
"print(nlg(['return', 'Request', '', 'Kafka Haruki Murakami']))\n",
"print(nlg(['reservation', 'Request', '', 'Kafka Haruki Murakami']))\n",
"print(nlg(['reservation', 'Request', 'cancel', '']))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

16
data/dialog-12-01-02.tsv Normal file
View File

@ -0,0 +1,16 @@
user Witam hello()
system Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc? hello()
user Dzień dobry, interesuje mnie wypożyczenie książki zbrodnia i kara request(book=Zbrodnia i kara)
system Czy ta książka to Dostojewski F., Zbrodnia i kara? confirm(book=Zbrodnia i Kara, Dostojewski F.)
user Zgadza się. Czy jest ona u państwa dostępna? affirm()&request(status=Zbrodnia i kara)
system Książka jest dostępna całodobowo w wypozyczalni online pod adresem: LINK inform(location)
user Dziękuję. Czy dostępna jest wyłącznie polska wersja językowa? oraz jakiego wydawnictwa? reqmore(lang & edition)
system Książka z wydawnictwa Mg jest dostępna w języku: Polskim inform(book=lang & book=edition)
user czy to jedyne wydanie? reqmore(book=editions)
system Dostępne są wydania z 2000, 2012 i 2015 roku inform(editions=2000 2012 2015)
user ile wynosi koszt wypożyczenia tej książki? reqmore(cost)
system 0 zł 0 gr inform(cost=0)
user Jakie jeszcze książki o podobnej tematyce<opitional: tego autora> są dostępne w systemie? reqalts(book)
system Dostępna pozycja to: Mistrz i Małgorzata, Dostojewski F. inform(book=Mistrz i Małgorzata Dostojewski F.
user Dziękuję, to wszystko thankyou()
system Dziękuję. thankyou()
1 user Witam hello()
2 system Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc? hello()
3 user Dzień dobry, interesuje mnie wypożyczenie książki zbrodnia i kara request(book=Zbrodnia i kara)
4 system Czy ta książka to Dostojewski F., Zbrodnia i kara? confirm(book=Zbrodnia i Kara, Dostojewski F.)
5 user Zgadza się. Czy jest ona u państwa dostępna? affirm()&request(status=Zbrodnia i kara)
6 system Książka jest dostępna całodobowo w wypozyczalni online pod adresem: LINK inform(location)
7 user Dziękuję. Czy dostępna jest wyłącznie polska wersja językowa? oraz jakiego wydawnictwa? reqmore(lang & edition)
8 system Książka z wydawnictwa Mg jest dostępna w języku: Polskim inform(book=lang & book=edition)
9 user czy to jedyne wydanie? reqmore(book=editions)
10 system Dostępne są wydania z 2000, 2012 i 2015 roku inform(editions=2000 2012 2015)
11 user ile wynosi koszt wypożyczenia tej książki? reqmore(cost)
12 system 0 zł 0 gr inform(cost=0)
13 user Jakie jeszcze książki o podobnej tematyce<opitional: tego autora> są dostępne w systemie? reqalts(book)
14 system Dostępna pozycja to: Mistrz i Małgorzata, Dostojewski F. inform(book=Mistrz i Małgorzata Dostojewski F.
15 user Dziękuję, to wszystko thankyou()
16 system Dziękuję. thankyou()

6
data/dialog-12-03-07.tsv Normal file
View File

@ -0,0 +1,6 @@
user Witam, chciałbym założyć kartę biblioteczną. hello() & request(card)
system Formularz karty bibliotecznej znajduje się pod adresem: LINK, konieczne jest także zaakceptowanie regulaminu pod adresem: LINK. Odbiór możlwy jest po 7 dniach na ulicy Targowej 10, w godzinach 9-16. inform(card)
user Wypełniłem, czy to wszystko? ack()
system Karta będzie dostępna 6 marca 2021 na ulicy Targowej 10 w godzinach 9-17 w głównym punkcie wypożyczeń. inform(card)
user Ok dziękuję thankyou()
system Dziękuję thankyou()
1 user Witam, chciałbym założyć kartę biblioteczną. hello() & request(card)
2 system Formularz karty bibliotecznej znajduje się pod adresem: LINK, konieczne jest także zaakceptowanie regulaminu pod adresem: LINK. Odbiór możlwy jest po 7 dniach na ulicy Targowej 10, w godzinach 9-16. inform(card)
3 user Wypełniłem, czy to wszystko? ack()
4 system Karta będzie dostępna 6 marca 2021 na ulicy Targowej 10 w godzinach 9-17 w głównym punkcie wypożyczeń. inform(card)
5 user Ok dziękuję thankyou()
6 system Dziękuję thankyou()

14
data/dialog-12-05-08.tsv Normal file
View File

@ -0,0 +1,14 @@
user Dzień dobry hello()
system Witam w interaktywnej bibliotece książnicy płockiej, w czym mogę pomóc? hello()
user Chciałbym sprawdzić wypożyczone książki? request(status)
system Twoje aktywne wypożyczenia obejmują: 0 pozycji. inform(status)
user Czy książka Owoce wiśni autorstwa Osamu Dazai, znajduje się w bibliotece w formie ebooka? request(books=Owoce wiśni Osamu Dazai)
system Pozycja Dazai O., Owoce wiśni jest dostępna w zbiorach online. inform(book=Owoce wiśni Osamu D.)
user chciałbym ją wypożyczyć affirm()
system Książka została wypożyczona. Odbiór możliwy jest w filii głównej na ulicy Targowej 10, w godzinach 9-17. confirm(book=Owoce wiśni Osamu D.)&inform()
user To chyba pomyłka. Chciałem wypożyczyć książkę online restart()
system Wypożyczenie zostało anulowane. Katalog online dostępny jest pod adresem: LINK confirm(book=Owoce wiśni Osamu D.)&inform()
user chciałbym ją wypożyczyć affirm
system Książka została wypożyczona, materiały w formie online dostępne są pod adresem: LINK. W zakładce moje konto>czytane pozycje confirm(book=Owoce wiśni Osamu D.)&inform()
user Dziękuję thankyou()
system Dziękuję thankyou()
1 user Dzień dobry hello()
2 system Witam w interaktywnej bibliotece książnicy płockiej, w czym mogę pomóc? hello()
3 user Chciałbym sprawdzić wypożyczone książki? request(status)
4 system Twoje aktywne wypożyczenia obejmują: 0 pozycji. inform(status)
5 user Czy książka Owoce wiśni autorstwa Osamu Dazai, znajduje się w bibliotece w formie ebooka? request(books=Owoce wiśni Osamu Dazai)
6 system Pozycja Dazai O., Owoce wiśni jest dostępna w zbiorach online. inform(book=Owoce wiśni Osamu D.)
7 user chciałbym ją wypożyczyć affirm()
8 system Książka została wypożyczona. Odbiór możliwy jest w filii głównej na ulicy Targowej 10, w godzinach 9-17. confirm(book=Owoce wiśni Osamu D.)&inform()
9 user To chyba pomyłka. Chciałem wypożyczyć książkę online restart()
10 system Wypożyczenie zostało anulowane. Katalog online dostępny jest pod adresem: LINK confirm(book=Owoce wiśni Osamu D.)&inform()
11 user chciałbym ją wypożyczyć affirm
12 system Książka została wypożyczona, materiały w formie online dostępne są pod adresem: LINK. W zakładce moje konto>czytane pozycje confirm(book=Owoce wiśni Osamu D.)&inform()
13 user Dziękuję thankyou()
14 system Dziękuję thankyou()

18
data/dialog-12-07-05.tsv Normal file
View File

@ -0,0 +1,18 @@
user Cześć hello()
system Witam w interaktywnej bibliotece książnicy płockiej, w czym mogę pomóc? hello()
user W jakich godzinach jest otwarta biblioteka? request(time)
system Biblioteka otwarta jest w godzinach 9-17, od poniedziałku do soboty, a także całodobowo w wersji online. inform(time)
user Chciałabym zwrócić książkę Kafka Haruki Murakami request(return=Kafka Murakami H.)
system Czy ta pozycja to: Murakami H., Kafka nad morzem, Warszawa 2003? confirm(book=Kafka Murakami H.)
user owszem ack()
system Zwroty możliwe są w godzinach 9-16 od poniedziałku do soboty w filii głównej na ulicy Targowej 10. inform(time)&inform(location)
user Czy czytelnia funkcjonuje podczas pandemii? request(status)
system Ze względu na obowiązujące obostrzenia aktywne są tylko zasoby online znajdujące się: LINK. inform(status)
user Zgubiłam książkę, co robić help(book_lost)
system Należy się skontaktować z referentem filii głównej pod numerem: XXX-XXX-XXX lub udać się do budynku filii głównej w celu dokonania rozliczenia. inform(contact)&inform(location)
user Czy w ostatnim czasie doszły jakieś nowe pozycje? reqmoore(new)
system W ciągu ostatnich 30 dni w zbiorach pojawiło się: 214 pozycji fizycznych i 48 pozycji dostępnych online. inform(new)
user Czy są jakieś rekomendacje książek na bazie czytanych przeze mnie gatunków? reqalts(book)
system Twoja obecna historia wypożyczeń obejmuje: 3 pozycje. Proponowana książka to: Rice A., Wywiad z wampirem, Warszawa 1990. inform(book= Wywiad z wampirem, Rice A.)
user To chciałabym ją zarezerowwać affirm()
system Książka Rice A., Wywiad z wampirem, Warszawa 1990, została zarezerwowana. Odbiór możliwy jest od poniedziałku do soboty w godzinach 9-17 na ulicy Targowej 10. confirm(book=Wywiad z wampirem, Rice A.)
1 user Cześć hello()
2 system Witam w interaktywnej bibliotece książnicy płockiej, w czym mogę pomóc? hello()
3 user W jakich godzinach jest otwarta biblioteka? request(time)
4 system Biblioteka otwarta jest w godzinach 9-17, od poniedziałku do soboty, a także całodobowo w wersji online. inform(time)
5 user Chciałabym zwrócić książkę Kafka Haruki Murakami request(return=Kafka Murakami H.)
6 system Czy ta pozycja to: Murakami H., Kafka nad morzem, Warszawa 2003? confirm(book=Kafka Murakami H.)
7 user owszem ack()
8 system Zwroty możliwe są w godzinach 9-16 od poniedziałku do soboty w filii głównej na ulicy Targowej 10. inform(time)&inform(location)
9 user Czy czytelnia funkcjonuje podczas pandemii? request(status)
10 system Ze względu na obowiązujące obostrzenia aktywne są tylko zasoby online znajdujące się: LINK. inform(status)
11 user Zgubiłam książkę, co robić help(book_lost)
12 system Należy się skontaktować z referentem filii głównej pod numerem: XXX-XXX-XXX lub udać się do budynku filii głównej w celu dokonania rozliczenia. inform(contact)&inform(location)
13 user Czy w ostatnim czasie doszły jakieś nowe pozycje? reqmoore(new)
14 system W ciągu ostatnich 30 dni w zbiorach pojawiło się: 214 pozycji fizycznych i 48 pozycji dostępnych online. inform(new)
15 user Czy są jakieś rekomendacje książek na bazie czytanych przeze mnie gatunków? reqalts(book)
16 system Twoja obecna historia wypożyczeń obejmuje: 3 pozycje. Proponowana książka to: Rice A., Wywiad z wampirem, Warszawa 1990. inform(book= Wywiad z wampirem, Rice A.)
17 user To chciałabym ją zarezerowwać affirm()
18 system Książka Rice A., Wywiad z wampirem, Warszawa 1990, została zarezerwowana. Odbiór możliwy jest od poniedziałku do soboty w godzinach 9-17 na ulicy Targowej 10. confirm(book=Wywiad z wampirem, Rice A.)

17
data/dialog-12-09-06.tsv Normal file
View File

@ -0,0 +1,17 @@
user Cześć hello()
system Witam w interaktywnej bibliotece Książnicy płockiej, w czym mogę pomóc? hello()
user W jakich godzinach macie otwarte? request(time)
system Biblioteka otwarta jest w godzinach 9-17, od poniedziałku do soboty, a także całodobowo w wersji online. inform(time)
user Chciałbym zarezerwować książkę request(reservation)
system Jaki jest tytuł, autor i rok wydania książki? reqmore(author&title)
user Polska odwraca oczy Kopińska request(Polska odwraca oczy Kopińska)
system Czy ta pozycja to: Kopińska J., Polska odwraca oczy? confirm(book = Polska odwraca oczy, Kopińska J.,)
user tak affirm()
system Potwierdzam rezerwację. Książka dostępna jest w filii głównej na ulicy Targowej 10. confim(Polska odwraca oczy, Kopińska J.,)
user Można odebrać ją w innej filli biblioteki? request(location)
system W obecnych warunkach epidemiologicznych nie jest to możliwe, wydania prowadzi tylko filia główna. inform(location)
user Mam jakieś książki które mają przekroczony termin oddania? request(overdue_books)
system Obecny stan przekroczonych terminów oddania wynosi: 0 inform(overdue_books)
user A jakieś się zbliżają? request(soon_overdue)
system Nie, brak zaległości. inform(soon_overdue)
user to by było wszystko bye()
1 user Cześć hello()
2 system Witam w interaktywnej bibliotece Książnicy płockiej, w czym mogę pomóc? hello()
3 user W jakich godzinach macie otwarte? request(time)
4 system Biblioteka otwarta jest w godzinach 9-17, od poniedziałku do soboty, a także całodobowo w wersji online. inform(time)
5 user Chciałbym zarezerwować książkę request(reservation)
6 system Jaki jest tytuł, autor i rok wydania książki? reqmore(author&title)
7 user Polska odwraca oczy Kopińska request(Polska odwraca oczy Kopińska)
8 system Czy ta pozycja to: Kopińska J., Polska odwraca oczy? confirm(book = Polska odwraca oczy, Kopińska J.,)
9 user tak affirm()
10 system Potwierdzam rezerwację. Książka dostępna jest w filii głównej na ulicy Targowej 10. confim(Polska odwraca oczy, Kopińska J.,)
11 user Można odebrać ją w innej filli biblioteki? request(location)
12 system W obecnych warunkach epidemiologicznych nie jest to możliwe, wydania prowadzi tylko filia główna. inform(location)
13 user Mam jakieś książki które mają przekroczony termin oddania? request(overdue_books)
14 system Obecny stan przekroczonych terminów oddania wynosi: 0 inform(overdue_books)
15 user A jakieś się zbliżają? request(soon_overdue)
16 system Nie, brak zaległości. inform(soon_overdue)
17 user to by było wszystko bye()

7
data/dialog-12-11-04.tsv Normal file
View File

@ -0,0 +1,7 @@
user Cześć operatorze hello()
system Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc? hello()
user Chciałbym anulować rezerwację książki request(reservation=cancel)
system Jaki jest tytuł i numer książki? request(book=title & number)
user Tytuł: Nudna książka 1 nr 123456789 confirm(book=Nudna książka 1 nr 123456789)
system Rezerwacja została poprawnie anulowana. inform(reservation=cancel)
user Dziękuję thankyou()
1 user Cześć operatorze hello()
2 system Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc? hello()
3 user Chciałbym anulować rezerwację książki request(reservation=cancel)
4 system Jaki jest tytuł i numer książki? request(book=title & number)
5 user Tytuł: Nudna książka 1 nr 123456789 confirm(book=Nudna książka 1 nr 123456789)
6 system Rezerwacja została poprawnie anulowana. inform(reservation=cancel)
7 user Dziękuję thankyou()

10
data/dialog-12-13-01.tsv Normal file
View File

@ -0,0 +1,10 @@
user Dzień dobry! hello()
system Witam w systemie interaktywnej biblioteki - Książnicy płockiej! hello()
user Chciałabym wypożyczyć książkę. request(book)
system Proszę podać tytuł i autora pozycji. request(book)
user Zabić drozda - Harper Lee request(book=Zabić drozda - Harper Lee)
system Czy ta ksiązka to Harper L., Zabić drozda? confirm(book=Zabić drozda - Harper Lee)
user Tak affirm()
system Potwierdzam wypozyczenie ksiązki o numerze XX-XXX. Pozycja jest dostępna w zbiorach online całodobowo. confirm(book=Zabić drozda - Harper Lee)
user Jak mogę uzyskać dostęp do zasobów online? request(online_library)
system Zasoby online są dostępne pod adresem: LINK inform(status)
1 user Dzień dobry! hello()
2 system Witam w systemie interaktywnej biblioteki - Książnicy płockiej! hello()
3 user Chciałabym wypożyczyć książkę. request(book)
4 system Proszę podać tytuł i autora pozycji. request(book)
5 user Zabić drozda - Harper Lee request(book=Zabić drozda - Harper Lee)
6 system Czy ta ksiązka to Harper L., Zabić drozda? confirm(book=Zabić drozda - Harper Lee)
7 user Tak affirm()
8 system Potwierdzam wypozyczenie ksiązki o numerze XX-XXX. Pozycja jest dostępna w zbiorach online całodobowo. confirm(book=Zabić drozda - Harper Lee)
9 user Jak mogę uzyskać dostęp do zasobów online? request(online_library)
10 system Zasoby online są dostępne pod adresem: LINK inform(status)

10
data/dialog-12-15-03.tsv Normal file
View File

@ -0,0 +1,10 @@
user Dzień dobry! hello()
system Witam w bibliotece internetowej książnicy płockiej, w czym mogę pomóc? hello()
user Jakie wydarzenia odbywają się w najbliższym czasie w bibliotece? request(events)
system W ciągu kolejnych 30 dni realizowane będą: płocki dzień historii tańca ludowego (31 marca 2021), dzień młodego czytelnika (15 kwietnia 2021). inform(events)
user Czy możesz powiedzieć mi coś więcej o dniu młodego czytelnika? reqmore(event=Dzień młodego czytelnika)
system Wydarzenie będzie realizowane za pośrednictwem platformy YouTube pod linkiem: LINK i rozpocznie się o godzinie 13.30. inform(time&location)
user O, czyli liczba miejsc jest nieograniczona. Bardzo mnie to cieszy ack()
system Tak, wstęp wolny. affirm()
user Dziękuję bardzo za informację. Chyba wszytko już wiem bye()
system Dziękuję bye()
1 user Dzień dobry! hello()
2 system Witam w bibliotece internetowej książnicy płockiej, w czym mogę pomóc? hello()
3 user Jakie wydarzenia odbywają się w najbliższym czasie w bibliotece? request(events)
4 system W ciągu kolejnych 30 dni realizowane będą: płocki dzień historii tańca ludowego (31 marca 2021), dzień młodego czytelnika (15 kwietnia 2021). inform(events)
5 user Czy możesz powiedzieć mi coś więcej o dniu młodego czytelnika? reqmore(event=Dzień młodego czytelnika)
6 system Wydarzenie będzie realizowane za pośrednictwem platformy YouTube pod linkiem: LINK i rozpocznie się o godzinie 13.30. inform(time&location)
7 user O, czyli liczba miejsc jest nieograniczona. Bardzo mnie to cieszy ack()
8 system Tak, wstęp wolny. affirm()
9 user Dziękuję bardzo za informację. Chyba wszytko już wiem bye()
10 system Dziękuję bye()

19
data/dialog-13-02-03.tsv Normal file
View File

@ -0,0 +1,19 @@
user Dzień dobry hello()
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym sprawdzić czy mam jakieś książki do oddania request(status)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 123123 inform(card_number=123123)
system Użytkownik o numerze karty 123123, ma wypożyczone następujące książki: Kafka Haruki Murakami, z datą zwrócenia książki na 30 marca 2021, 1Q84 Haruki Murakami, z datą zwrócenia książki na 5 kwietnia 2021 confirm(card_numer=123123)&(inform(book=Kafka Haruki Murakami)&inform(date=29 marca 2021)&inform(book=1Q84 Haruki Murakami)&inform(date=5 kwietna 2021)
user Chciałbym wypożyczyć jakiś dobry kryminał request(books=kryminał)
user Czy są jakieś polecane? reqalts(book=kryminał)
system Polecane dla kategorii kryminał: 1. Morderstwo w Orient Expressie - Agatha Christie 2. Księżniczka z lodu - Camilla Läckberg 3. Sprawa Niny Frank - Katarzyna Bonda 4. Wszystko czerwone - Joanna Chmielewska 5. Zły - Leopold Tyrmand inform(book=Morderstwo w Orient Expressie - Agatha Christie)&inform(book=Księżniczka z lodu - Camilla Läckberg)&inform(Sprawa Niny Frank - Katarzyna Bonda)&inform(Wszystko czerwone - Joanna Chmielewska)&inform(book=Zły - Leopold Tyrmand)
user Może jakieś inne, te już czytałem reqalts(book=kryminał)
system Wszystkie propozycje w oparciu o historię wypożyczeń. inform(offer=no_new_recommendations)
user Czy posiadacie książke xyz Jana Kowalskiego? request(book=xyz Jana Kowalskiego)
system Czy chodziło o książkę XZY Jan Kowalski? confirm(book= XZY Jan Kowalski)
user Tak affirm()
system Aktualnie dostępnych jest 5 egzemplarzy tej książki. inform(book_availability=XZY Jan Kowalski)
user Chciałbym wypożyczyć jeden egzemplarz request(action=wypozyczenie)
system Książka została wypożyczona. confirm(reservation)
user Dziękuję thankyou()
system Dziękujemy! Życzymy miłej lektury. thnakyou()&bye()
1 user Dzień dobry hello()
2 system Witamy w interaktywnej bibliotece. hello()
3 user Chciałbym sprawdzić czy mam jakieś książki do oddania request(status)
4 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
5 user 123123 inform(card_number=123123)
6 system Użytkownik o numerze karty 123123, ma wypożyczone następujące książki: Kafka Haruki Murakami, z datą zwrócenia książki na 30 marca 2021, 1Q84 Haruki Murakami, z datą zwrócenia książki na 5 kwietnia 2021 confirm(card_numer=123123)&(inform(book=Kafka Haruki Murakami)&inform(date=29 marca 2021)&inform(book=1Q84 Haruki Murakami)&inform(date=5 kwietna 2021)
7 user Chciałbym wypożyczyć jakiś dobry kryminał request(books=kryminał)
8 user Czy są jakieś polecane? reqalts(book=kryminał)
9 system Polecane dla kategorii kryminał: 1. Morderstwo w Orient Expressie - Agatha Christie 2. Księżniczka z lodu - Camilla Läckberg 3. Sprawa Niny Frank - Katarzyna Bonda 4. Wszystko czerwone - Joanna Chmielewska 5. Zły - Leopold Tyrmand inform(book=Morderstwo w Orient Expressie - Agatha Christie)&inform(book=Księżniczka z lodu - Camilla Läckberg)&inform(Sprawa Niny Frank - Katarzyna Bonda)&inform(Wszystko czerwone - Joanna Chmielewska)&inform(book=Zły - Leopold Tyrmand)
10 user Może jakieś inne, te już czytałem reqalts(book=kryminał)
11 system Wszystkie propozycje w oparciu o historię wypożyczeń. inform(offer=no_new_recommendations)
12 user Czy posiadacie książke xyz Jana Kowalskiego? request(book=xyz Jana Kowalskiego)
13 system Czy chodziło o książkę XZY Jan Kowalski? confirm(book= XZY Jan Kowalski)
14 user Tak affirm()
15 system Aktualnie dostępnych jest 5 egzemplarzy tej książki. inform(book_availability=XZY Jan Kowalski)
16 user Chciałbym wypożyczyć jeden egzemplarz request(action=wypozyczenie)
17 system Książka została wypożyczona. confirm(reservation)
18 user Dziękuję thankyou()
19 system Dziękujemy! Życzymy miłej lektury. thnakyou()&bye()

13
data/dialog-13-04-04.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w systemie interaktywnej biblioteki. hello()
user Dzień dobry, chciałbym przeczytać jakąś książkę z gatunku science-fiction. Czy możecie mi coś polecić? hello()&request(book=science-fiction)
system Polecane ksiązki dla kategorii science-fiction: 1. Ślepowidzenie Peter Watts, 2. Echopraksja Peter Watts, 3. Stacja Centralna Lavie Tidhar, 4. Problem Trzech Ciał Cixin Liu, 5. Kantyczka dla Leibowitza Walter M. Miller. inform(book=Ślepowidzenie Peter Watts)&inform(book=Echopraksja Peter Watts)&inform(book= Stacja Centralna Lavie Tidhar)&inform(book=Problem Trzech Ciał Cixin Liu)&inform(book=Kantyczka dla Leibowitza Walter M. Miller)
user Ślepowidzienie to bardzo ciekawa pozycja. Czy jest to pojedyncza książka czy cykl książek? request(book_info=Ślepowidzenie Peter Watts)
system Ślepowidzenie Peter Watts to część cyklu książek. affirm()
user Chciałbym zarezerwować wszystkie części tego cyklu. request(action=reservation)
system Proszę podać tytuł i autora wybranej pozycji. request(book)
user 1. Ślepowidzenie Peter Watts, 2. Echopraksja Peter Watts inform(book=Ślepowidzenie Peter Watts)&inform(book=Echopraksja Peter Watts)
system Proszę podać numer karty bibliotecznej. request(card_number)
user 1234567 infrom(card_number)
system Książki Ślepowidzenie Peter Watts, Echopraksja Peter Watts zostały zarezerwowane. Rezerwacja jest ważna przez 48 godzin zaczynając od momentu jej złożenia. inform(reservation)
user Dziękuję bardzo. thankyou()
system Dziękuję. thankyou()
1 system Witamy w systemie interaktywnej biblioteki. hello()
2 user Dzień dobry, chciałbym przeczytać jakąś książkę z gatunku science-fiction. Czy możecie mi coś polecić? hello()&request(book=science-fiction)
3 system Polecane ksiązki dla kategorii science-fiction: 1. Ślepowidzenie – Peter Watts, 2. Echopraksja – Peter Watts, 3. Stacja Centralna – Lavie Tidhar, 4. Problem Trzech Ciał – Cixin Liu, 5. Kantyczka dla Leibowitza – Walter M. Miller. inform(book=Ślepowidzenie – Peter Watts)&inform(book=Echopraksja – Peter Watts)&inform(book= Stacja Centralna – Lavie Tidhar)&inform(book=Problem Trzech Ciał – Cixin Liu)&inform(book=Kantyczka dla Leibowitza – Walter M. Miller)
4 user Ślepowidzienie to bardzo ciekawa pozycja. Czy jest to pojedyncza książka czy cykl książek? request(book_info=Ślepowidzenie – Peter Watts)
5 system Ślepowidzenie Peter Watts to część cyklu książek. affirm()
6 user Chciałbym zarezerwować wszystkie części tego cyklu. request(action=reservation)
7 system Proszę podać tytuł i autora wybranej pozycji. request(book)
8 user 1. Ślepowidzenie – Peter Watts, 2. Echopraksja – Peter Watts inform(book=Ślepowidzenie – Peter Watts)&inform(book=Echopraksja – Peter Watts)
9 system Proszę podać numer karty bibliotecznej. request(card_number)
10 user 1234567 infrom(card_number)
11 system Książki Ślepowidzenie Peter Watts, Echopraksja Peter Watts zostały zarezerwowane. Rezerwacja jest ważna przez 48 godzin zaczynając od momentu jej złożenia. inform(reservation)
12 user Dziękuję bardzo. thankyou()
13 system Dziękuję. thankyou()

15
data/dialog-13-08-06.tsv Normal file
View File

@ -0,0 +1,15 @@
system Witamy w interaktywnej bibliotece. hello()
user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(reservation)
system Proszę podać tytuł i autora wybranej książki. request(book)
user Systemy Dialogowe w Pigułce Adama Kowalskiego inform(book=Systemy Dialogowe w Pigułce Adama Kowalskiego)
system Czy chodzi o książkę Systemy Dialogowe w Pigułce Adam Kowalski? confirm(book=Systemy Dialogowe w Pigułce Adama Kowalskiego)
user Tak affirm()
system Książka została wypożyczona. inform(reservation)
user Dziękuję. Czy mam jakieś zaległości? thankyou()&request(status=late)
system Obecnie nie posiadasz niezwróconych w terminie książek. inform(status=late)
user Chciałbym sprawdzić najbliższy termin zwrotu request(status)
system Proszę podać numer karty bibliotecznej. request(card_number)
user 123456 infrom(card_number=12345)
system Użytkownik o numerze karty 123456, ma wypożyczone następujące książki: 1. Systemy Dialogowe w Pigułce Adam Kowalski; Zwrot 12.04.21 do godziny 22:00 confirm(card_numer=12345)&(inform(book=Systemy Dialogowe w Pigułce Adama Kowalskiego)&inform(date=29 marca 2021)
user Dziękuje, to będzie wszystko thankyou()
system Dziękuję. thnakyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(reservation)
3 system Proszę podać tytuł i autora wybranej książki. request(book)
4 user Systemy Dialogowe w Pigułce Adama Kowalskiego inform(book=Systemy Dialogowe w Pigułce Adama Kowalskiego)
5 system Czy chodzi o książkę Systemy Dialogowe w Pigułce Adam Kowalski? confirm(book=Systemy Dialogowe w Pigułce Adama Kowalskiego)
6 user Tak affirm()
7 system Książka została wypożyczona. inform(reservation)
8 user Dziękuję. Czy mam jakieś zaległości? thankyou()&request(status=late)
9 system Obecnie nie posiadasz niezwróconych w terminie książek. inform(status=late)
10 user Chciałbym sprawdzić najbliższy termin zwrotu request(status)
11 system Proszę podać numer karty bibliotecznej. request(card_number)
12 user 123456 infrom(card_number=12345)
13 system Użytkownik o numerze karty 123456, ma wypożyczone następujące książki: 1. Systemy Dialogowe w Pigułce Adam Kowalski; Zwrot – 12.04.21 do godziny 22:00 confirm(card_numer=12345)&(inform(book=Systemy Dialogowe w Pigułce Adama Kowalskiego)&inform(date=29 marca 2021)
14 user Dziękuje, to będzie wszystko thankyou()
15 system Dziękuję. thnakyou()

13
data/dialog-13-10-05.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w systemie interaktywnej biblioteki. hello()
user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(book)
system Proszę podać tytuł i autora wybranej książki. request(book)
user Ogniem i Mieczem Sienkiewicza inform(book=Ogniem i Mieczem Sienkiewicza)
system Czy chodzi o książkę Ogniem i Mieczem Henryk Sienkiewicz? confirm(book=Ogniem i Mieczem Henryk Sienkiewicz)
user tak affirm()
system Książka została wypożyczona. affirm()
user A czy jest dostępna książka Pan Tadeusz? request(book_availability=Pan Tadeusz)
system Czy chodzi o książkę Pan Tadeusz Adam Mickiewicz? confirm(book=Pan Tadeusz Adam Mickiewicz)
user Tak, ją również chciałbym wypożyczyć. confirm()&request(action=wypozyczenie)
system Aktualnie dostępnych jest 5 egzemplarzy tej książki. Książka została wypożyczona inform(book_availability= Pan Tadeusz Adam Mickiewicz)&inform(reservation)
user Dziękuję, to wszystko. thankyou()
system Dziękujęmy! Życzymy miłej lektury. thankyou()&bye()
1 system Witamy w systemie interaktywnej biblioteki. hello()
2 user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(book)
3 system Proszę podać tytuł i autora wybranej książki. request(book)
4 user Ogniem i Mieczem Sienkiewicza inform(book=Ogniem i Mieczem Sienkiewicza)
5 system Czy chodzi o książkę Ogniem i Mieczem Henryk Sienkiewicz? confirm(book=Ogniem i Mieczem Henryk Sienkiewicz)
6 user tak affirm()
7 system Książka została wypożyczona. affirm()
8 user A czy jest dostępna książka Pan Tadeusz? request(book_availability=Pan Tadeusz)
9 system Czy chodzi o książkę Pan Tadeusz Adam Mickiewicz? confirm(book=Pan Tadeusz Adam Mickiewicz)
10 user Tak, ją również chciałbym wypożyczyć. confirm()&request(action=wypozyczenie)
11 system Aktualnie dostępnych jest 5 egzemplarzy tej książki. Książka została wypożyczona inform(book_availability= Pan Tadeusz Adam Mickiewicz)&inform(reservation)
12 user Dziękuję, to wszystko. thankyou()
13 system Dziękujęmy! Życzymy miłej lektury. thankyou()&bye()

13
data/dialog-13-10-07.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w systemie interaktywnej biblioteki. hello()
user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(book)
system Proszę podać tytuł i autora wybranej książki. request(book)
user Ogniem i Mieczem Sienkiewicza inform(book=Ogniem i Mieczem Sienkiewicza)
system Czy chodzi o książkę Ogniem i Mieczem Henryk Sienkiewicz? confirm(book=Ogniem i Mieczem Henryk Sienkiewicz)
user tak affirm()
system Książka została wypożyczona. affirm()
user A czy jest dostępna książka Pan Tadeusz? request(book_availability=Pan Tadeusz)
system Czy chodzi o książkę Pan Tadeusz Adam Mickiewicz? confirm(book=Pan Tadeusz Adam Mickiewicz)
user Tak, ją również chciałbym wypożyczyć. confirm()&request(action=wypozyczenie)
system Aktualnie dostępnych jest 5 egzemplarzy tej książki. Książka została wypożyczona inform(book_availability= Pan Tadeusz Adam Mickiewicz)&inform(reservation)
user Dziękuję, to wszystko. thankyou()
system Dziękujęmy! Życzymy miłej lektury. thankyou()&bye()
1 system Witamy w systemie interaktywnej biblioteki. hello()
2 user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(book)
3 system Proszę podać tytuł i autora wybranej książki. request(book)
4 user Ogniem i Mieczem Sienkiewicza inform(book=Ogniem i Mieczem Sienkiewicza)
5 system Czy chodzi o książkę Ogniem i Mieczem Henryk Sienkiewicz? confirm(book=Ogniem i Mieczem Henryk Sienkiewicz)
6 user tak affirm()
7 system Książka została wypożyczona. affirm()
8 user A czy jest dostępna książka Pan Tadeusz? request(book_availability=Pan Tadeusz)
9 system Czy chodzi o książkę Pan Tadeusz Adam Mickiewicz? confirm(book=Pan Tadeusz Adam Mickiewicz)
10 user Tak, ją również chciałbym wypożyczyć. confirm()&request(action=wypozyczenie)
11 system Aktualnie dostępnych jest 5 egzemplarzy tej książki. Książka została wypożyczona inform(book_availability= Pan Tadeusz Adam Mickiewicz)&inform(reservation)
12 user Dziękuję, to wszystko. thankyou()
13 system Dziękujęmy! Życzymy miłej lektury. thankyou()&bye()

18
data/dialog-13-12-01.tsv Normal file
View File

@ -0,0 +1,18 @@
user Witam serdecznie hello()
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym założyć kartę biblioteczną, jak to zrobić? request(new_card)
system Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem. inform(new_card)
user Gdzie znajdują się te rzeczy? request(info)
system Wzór karty zapisu znajduje się pod tym linkiem: LINK, a regulamin pod tym linkiem: LINK. help(new_card)
user Czy przesłanie formularzu z kartą będzie oznaczało już możliwość wypożyczania? request(info)
system Nie. Należy dopełnić procedurę założenia karty bibliotecznej do końca. negate()&inform(new_card)
user Czy mógłbym jakoś wypożyczyć Wywiad z Wampirem Anny Rice? request(book=Wywiad z Wampirem Anny Rice)
system Czy chodzi o książkę Wywiad z Wampirem Anna Rice? confirm(book=Wywiad z Wampirem Anna Rice)
user Tak affirm()
system Proszę podać numer karty bibliotecznej. request(card_number)
user Jak mogę sprawdzić ten numer? request(info)
system Proszę sprawdzić panel użytkownika. help()
user Mój numer to XXX-XXXX-XXX? inform(card_number=XXX-XXXX-XXX)
system Zły format. Proszę spróbować ponownie. inform(wrong_format)&repeat()
user Rozumiem, chyba jednak musze najpierw iść do filii głównej. Dziękuję ś l i c z n i e za rozmowę. thankyou()
system Dziękuję. thankyou()
1 user Witam serdecznie hello()
2 system Witamy w interaktywnej bibliotece. hello()
3 user Chciałbym założyć kartę biblioteczną, jak to zrobić? request(new_card)
4 system Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem. inform(new_card)
5 user Gdzie znajdują się te rzeczy? request(info)
6 system Wzór karty zapisu znajduje się pod tym linkiem: LINK, a regulamin pod tym linkiem: LINK. help(new_card)
7 user Czy przesłanie formularzu z kartą będzie oznaczało już możliwość wypożyczania? request(info)
8 system Nie. Należy dopełnić procedurę założenia karty bibliotecznej do końca. negate()&inform(new_card)
9 user Czy mógłbym jakoś wypożyczyć Wywiad z Wampirem Anny Rice? request(book=Wywiad z Wampirem Anny Rice)
10 system Czy chodzi o książkę Wywiad z Wampirem Anna Rice? confirm(book=Wywiad z Wampirem Anna Rice)
11 user Tak affirm()
12 system Proszę podać numer karty bibliotecznej. request(card_number)
13 user Jak mogę sprawdzić ten numer? request(info)
14 system Proszę sprawdzić panel użytkownika. help()
15 user Mój numer to XXX-XXXX-XXX? inform(card_number=XXX-XXXX-XXX)
16 system Zły format. Proszę spróbować ponownie. inform(wrong_format)&repeat()
17 user Rozumiem, chyba jednak musze najpierw iść do filii głównej. Dziękuję ś l i c z n i e za rozmowę. thankyou()
18 system Dziękuję. thankyou()

16
data/dialog-13-14-02.tsv Normal file
View File

@ -0,0 +1,16 @@
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym się dowiedzieć, co zrobić w przypadku zniszczenia książki request(info=destroy)
system Proszę podać numer karty bibliotecznej. request(card_number)
user 1235135 response(card_number=1235135)
system Proszę podać sygnaturę ksiązki. request(signature)
user ksiazka'); DROP TABLE USERS; -- canthelp()
user książka o nr 123451 response(signature=książka o nr 123451)
system Zły format. Proszę spróbować jeszcze raz. repeat()
user Jaki jest poprawny format? request(info)
system Pomocne informacje znajdują się na stronie LINK. Poprawny format to XXXX.XX help()
user książka 12345.54 request(signature=książka 12345.54)
system Czy zgłosić zniszczenie książki 12345.54? confirm(signature=książka 12345.54)
user Tak, jakie koszta są z tym związane? affirm()&request(penalty_info)
system Formularz został zarejestrowany. Naliczona kara wynosi 35 zł. Opłatę można uiścić w dowolnej placówce biblioteki albo dokonując przelewu na konto o numerze: XXXX-XXXX-XXXX-XXX w opisie podając numer karty bibliotecznej. affirm()&response(penalty_info)
user Dobrze. Dziękuję za rozmowę thankyou()
system Dziekuję. thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Chciałbym się dowiedzieć, co zrobić w przypadku zniszczenia książki request(info=destroy)
3 system Proszę podać numer karty bibliotecznej. request(card_number)
4 user 1235135 response(card_number=1235135)
5 system Proszę podać sygnaturę ksiązki. request(signature)
6 user ksiazka'); DROP TABLE USERS; -- canthelp()
7 user książka o nr 123451 response(signature=książka o nr 123451)
8 system Zły format. Proszę spróbować jeszcze raz. repeat()
9 user Jaki jest poprawny format? request(info)
10 system Pomocne informacje znajdują się na stronie LINK. Poprawny format to XXXX.XX help()
11 user książka 12345.54 request(signature=książka 12345.54)
12 system Czy zgłosić zniszczenie książki 12345.54? confirm(signature=książka 12345.54)
13 user Tak, jakie koszta są z tym związane? affirm()&request(penalty_info)
14 system Formularz został zarejestrowany. Naliczona kara wynosi 35 zł. Opłatę można uiścić w dowolnej placówce biblioteki albo dokonując przelewu na konto o numerze: XXXX-XXXX-XXXX-XXX w opisie podając numer karty bibliotecznej. affirm()&response(penalty_info)
15 user Dobrze. Dziękuję za rozmowę thankyou()
16 system Dziekuję. thankyou()

7
data/dialog-14-03-06.tsv Normal file
View File

@ -0,0 +1,7 @@
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym przejrzeć tytuły książek fantastycznych request(books=książki fantastyka)
system Aktualnie w bibliotece znajduje się 1450 książek z gatunku fantastyka. Możemy polecić następujące książki: książka X, książka Y, książka Z. inform(books=1450 książek z gatunku fantastyka)&offer(book=książka X, książka Y, książka Z)
user Chciałbym wypożyczyć książkę Z request(action=wypozyczenie)
system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
user Ok, dziękuję thankyou()
system Dziękujemy i życzymy udanego czytania. thankyou()&bye()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Chciałbym przejrzeć tytuły książek fantastycznych request(books=książki fantastyka)
3 system Aktualnie w bibliotece znajduje się 1450 książek z gatunku fantastyka. Możemy polecić następujące książki: książka X, książka Y, książka Z. inform(books=1450 książek z gatunku fantastyka)&offer(book=książka X, książka Y, książka Z)
4 user Chciałbym wypożyczyć książkę Z request(action=wypozyczenie)
5 system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
6 user Ok, dziękuję thankyou()
7 system Dziękujemy i życzymy udanego czytania. thankyou()&bye()

13
data/dialog-14-05-04.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym sprawdzić listę obecnie wypożyczonych książek request(action=status)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 200130 inform(card_number=200130
system "Użytkownik o numerze karty ""200130"", ma wypożyczone następujące książki: ""Kafka"" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, ""1Q84"" Haruki Murakami, z datą zwrócenia książki na 5 kwietnia 2021." "confirm(card_numer=200130)&(inform(book=""Kafka"" Haruki Murakami)&inform(date=29 marca 2021)&inform(book=""1Q84"" Haruki Murakami)&inform(date=5 kwietna 2021)"
user "Dziękuję. Czy w bibliotece znajduje się książka ""Zatracenie"" autorstwa Osamu Dazai" thankyou()&request(book_availability=”Zatracenie”, Osamu Dazai)
system "Tak, aktualnie znajduje się 7 książek ""Zatracenie"" autorstwa Osamu Dazai." inform(book_availability= ”Zatracenie”, Osamu Dazai)
user w jakich godzinach można przyjść ją wypożyczyć? request(time)
system Godziny otwarcia biblioteki w dni robocze od 8:00 do 17:30 oraz w soboty od godziny 8:00 do godziny 14:00. inform(time=dni robocze od 8:00 do 17:30 oraz w soboty od godziny 8:00 do godziny 14:00)
user Dziękuję. Czy obsługują państwo również tę książkę w formie ebooka na waszej stronie? thankyou()&request(ebook=”Zareacenie”)
system Tak, istnieje taka możliwość. infrom(ebook)
user Dziękuję za informację thankyou()
system Dziękujemy i życzymy udanego czytania. thankyou()&bye()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Chciałbym sprawdzić listę obecnie wypożyczonych książek request(action=status)
3 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
4 user 200130 inform(card_number=200130
5 system Użytkownik o numerze karty "200130", ma wypożyczone następujące książki: "Kafka" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, "1Q84" Haruki Murakami, z datą zwrócenia książki na 5 kwietnia 2021. confirm(card_numer=200130)&(inform(book="Kafka" Haruki Murakami)&inform(date=29 marca 2021)&inform(book="1Q84" Haruki Murakami)&inform(date=5 kwietna 2021)
6 user Dziękuję. Czy w bibliotece znajduje się książka "Zatracenie" autorstwa Osamu Dazai thankyou()&request(book_availability=”Zatracenie”, Osamu Dazai)
7 system Tak, aktualnie znajduje się 7 książek "Zatracenie" autorstwa Osamu Dazai. inform(book_availability= ”Zatracenie”, Osamu Dazai)
8 user w jakich godzinach można przyjść ją wypożyczyć? request(time)
9 system Godziny otwarcia biblioteki w dni robocze od 8:00 do 17:30 oraz w soboty od godziny 8:00 do godziny 14:00. inform(time=dni robocze od 8:00 do 17:30 oraz w soboty od godziny 8:00 do godziny 14:00)
10 user Dziękuję. Czy obsługują państwo również tę książkę w formie ebooka na waszej stronie? thankyou()&request(ebook=”Zareacenie”)
11 system Tak, istnieje taka możliwość. infrom(ebook)
12 user Dziękuję za informację thankyou()
13 system Dziękujemy i życzymy udanego czytania. thankyou()&bye()

21
data/dialog-14-07-05.tsv Normal file
View File

@ -0,0 +1,21 @@
system Witamy w interaktywnej bibliotece. welcomemsg()
user Chciałabym sprawdzić, czy mam jakieś wypożyczone książki request(status)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 6758396 inform(card_number=6758396)
system "Użytkownik o numerze karty ""6758396"", ma wypożyczone następujące książki: ""Kafka"" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, ""1Q84"" Haruki Murakami,, z datą zwrócenia książki na 5 kwietnia 2021." "confirm(card_numer=6758396)&(inform(book=""Kafka"" Haruki Murakami)&inform(date=29 marca 2021)&inform(book=""1Q84"" Haruki Murakami)&inform(date=5 kwietna 2021)"
user czy książka Krótka historia czasu jest dostępna? request(book_availability=”Krotka historia czasu” )
system "Czy chodzi o książkę ""Krótka historia czasu"" Stephen Hawking?" confirm(book=”Krotka historia czasu” Stephen Hawking)
user Tak confirm()
system "Obecnie jest dostępnych 5 książek ""Krótka historia czasu"" Stephen Hawking." inform(book_availability=”Krotka historia czasu” )
user Jaki jest limit wypozyczonych ksiazek na raz? rquest(book_limit)
system Limit wypożyczonych książek to 5. inform(book_limit)
user "Chciałabym zarezerwować książkę ""Krótka historia czasu"" Stephen Hawking." request(resevation=”Krótka historia czasu” Stephen Hawking)
system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. confirm(resevation)
user Jaka jest kara za przekroczenie terminu zwrotu? request(penalty_cost)
system Każdy dzień spóźnienia to kara 20 groszy za książkę. inform(penalty_cost=20 groszy)
user zgubiłam kartę co robić request(lost_card)
system W celu wyrobienia nowej karty i zablokowania starej, należy udać się stacjonarnie do naszej biblioteki. inform(lost_card)
user a mogę teraz zablokować? request(card_block)
system Niestety, ale nie ma możliwości zablokowania karty przez internet. inform(card_block)
user Czy ktoś może wypożyczyć książkę z biblioteki wyłącznie z użyciem karty? help(stolen_card)
system Aktualnie karta znajduje się w stanie zastrzeżonym, aby wypożyczyć książkę będzie trzeba potwierdzić jej odbiór kodem SMS. inform(stolen_card)
1 system Witamy w interaktywnej bibliotece. welcomemsg()
2 user Chciałabym sprawdzić, czy mam jakieś wypożyczone książki request(status)
3 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
4 user 6758396 inform(card_number=6758396)
5 system Użytkownik o numerze karty "6758396", ma wypożyczone następujące książki: "Kafka" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, "1Q84" Haruki Murakami,, z datą zwrócenia książki na 5 kwietnia 2021. confirm(card_numer=6758396)&(inform(book="Kafka" Haruki Murakami)&inform(date=29 marca 2021)&inform(book="1Q84" Haruki Murakami)&inform(date=5 kwietna 2021)
6 user czy książka Krótka historia czasu jest dostępna? request(book_availability=”Krotka historia czasu” )
7 system Czy chodzi o książkę "Krótka historia czasu" Stephen Hawking? confirm(book=”Krotka historia czasu” Stephen Hawking)
8 user Tak confirm()
9 system Obecnie jest dostępnych 5 książek "Krótka historia czasu" Stephen Hawking. inform(book_availability=”Krotka historia czasu” )
10 user Jaki jest limit wypozyczonych ksiazek na raz? rquest(book_limit)
11 system Limit wypożyczonych książek to 5. inform(book_limit)
12 user Chciałabym zarezerwować książkę "Krótka historia czasu" Stephen Hawking. request(resevation=”Krótka historia czasu” Stephen Hawking)
13 system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. confirm(resevation)
14 user Jaka jest kara za przekroczenie terminu zwrotu? request(penalty_cost)
15 system Każdy dzień spóźnienia to kara 20 groszy za książkę. inform(penalty_cost=20 groszy)
16 user zgubiłam kartę co robić request(lost_card)
17 system W celu wyrobienia nowej karty i zablokowania starej, należy udać się stacjonarnie do naszej biblioteki. inform(lost_card)
18 user a mogę teraz zablokować? request(card_block)
19 system Niestety, ale nie ma możliwości zablokowania karty przez internet. inform(card_block)
20 user Czy ktoś może wypożyczyć książkę z biblioteki wyłącznie z użyciem karty? help(stolen_card)
21 system Aktualnie karta znajduje się w stanie zastrzeżonym, aby wypożyczyć książkę będzie trzeba potwierdzić jej odbiór kodem SMS. inform(stolen_card)

25
data/dialog-14-09-07.tsv Normal file
View File

@ -0,0 +1,25 @@
system Witamy w interaktywnej bibliotece. welcomemsg()
user Chciałbym wypożyczyć książkę request(resevation)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 12345 infrom(card_number=12345)
system Proszę podać nazwę książki lub książek. request(books)
user Jakie macie dostępne książki od Murakami inform(books_availability=Murakami)
system Posiadamy wszystkie dzieła Murakami'ego wydane do 2020 roku. inform(books_availability=Murakami)
user W takim razie chciałbym wypożyczyć Norwegian Wood request(resevation=Norwegian Wood)
system "Czy chodzi o ""Norwegian Wood"" Haruki Murakami?" "confirm(reservation=""Norwegian Wood"" Haruki Murakami)"
user Tak affirm()
system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
user A można wypożyczyć filmy? request(resevation=filmy)
system Niestety, nie posiadamy usługi wypożyczenia filmów. negate(reservation=film)
user Moge zarezerwować jeszcze jedną książkę? request(reservation)
system Tak, proszę podać o jakie dzieło chodzi. request(book)
user Orwell 1984 inform(book=Orwell 1984)
system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
user Jakie książki mam wypożyczone aktualnie? request(status)
system "Użytkownik o numerze karty ""12345"", ma wypożyczone następujące książki: ""Kafka"" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, ""Norwegian Wood"" Haruki Murakami,, z datą zwrócenia książki na 29 kwietnia 2021, ""1984"" George Orwell, z datą zwrócenia książki na 29 kwietnia 2021." "confirm(card_numer=12345)&(inform(book=""Kafka"" Haruki Murakami)&inform(date=29 marca 2021)&inform(book=""Norwegian Wood"" Haruki Murakami)&inform(date=29 kwietna 2021)&inform(book=""1984”)&inform(date=29 kwietnia 2020)"
user chciałbym przedłużyć wypożyczenie Kafki request(renew_book=Kafka)
system Proszę podać o ile dni ma zostać przedłużona książka, nie może być to jednak czas dłuższy niż 21 dni. inform(renew_book=21 dni)
user o 10 inform(days=10)
system "Książka ""Kafka"" Haruki Murakami została przedłużona o 10 dni, obecny termin zwrotu wypada 8 kwietnia 2021 roku." inform(renew_book=”Kafka” Haruki Murakami, 10 dni)
user To by było wszystko thankyou()
system Dziękujemy i życzymy udanego czytania. thankyou()&bye()
1 system Witamy w interaktywnej bibliotece. welcomemsg()
2 user Chciałbym wypożyczyć książkę request(resevation)
3 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
4 user 12345 infrom(card_number=12345)
5 system Proszę podać nazwę książki lub książek. request(books)
6 user Jakie macie dostępne książki od Murakami inform(books_availability=Murakami)
7 system Posiadamy wszystkie dzieła Murakami'ego wydane do 2020 roku. inform(books_availability=Murakami)
8 user W takim razie chciałbym wypożyczyć Norwegian Wood request(resevation=Norwegian Wood)
9 system Czy chodzi o "Norwegian Wood" Haruki Murakami? confirm(reservation="Norwegian Wood" Haruki Murakami)
10 user Tak affirm()
11 system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
12 user A można wypożyczyć filmy? request(resevation=filmy)
13 system Niestety, nie posiadamy usługi wypożyczenia filmów. negate(reservation=film)
14 user Moge zarezerwować jeszcze jedną książkę? request(reservation)
15 system Tak, proszę podać o jakie dzieło chodzi. request(book)
16 user Orwell 1984 inform(book=Orwell 1984)
17 system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
18 user Jakie książki mam wypożyczone aktualnie? request(status)
19 system Użytkownik o numerze karty "12345", ma wypożyczone następujące książki: "Kafka" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, "Norwegian Wood" Haruki Murakami,, z datą zwrócenia książki na 29 kwietnia 2021, "1984" George Orwell, z datą zwrócenia książki na 29 kwietnia 2021. confirm(card_numer=12345)&(inform(book="Kafka" Haruki Murakami)&inform(date=29 marca 2021)&inform(book="Norwegian Wood" Haruki Murakami)&inform(date=29 kwietna 2021)&inform(book="1984”)&inform(date=29 kwietnia 2020)
20 user chciałbym przedłużyć wypożyczenie Kafki request(renew_book=Kafka)
21 system Proszę podać o ile dni ma zostać przedłużona książka, nie może być to jednak czas dłuższy niż 21 dni. inform(renew_book=21 dni)
22 user o 10 inform(days=10)
23 system Książka "Kafka" Haruki Murakami została przedłużona o 10 dni, obecny termin zwrotu wypada 8 kwietnia 2021 roku. inform(renew_book=”Kafka” Haruki Murakami, 10 dni)
24 user To by było wszystko thankyou()
25 system Dziękujemy i życzymy udanego czytania. thankyou()&bye()

11
data/dialog-14-11-03.tsv Normal file
View File

@ -0,0 +1,11 @@
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym wypożyczyć książkę request(action=wypozyczenie)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 123456789 inform(car_number=123456789)
system Proszę podać nazwę książki lub książek. request(book)
user Bardzo ciekawa książka 1, Bardzo ciekawa książka 2, Nudna książka 1 inform(book=Bardzo ciekawa książka 1)&inform(book=Bardzo ciekawa ksiazka 2)&inform(Nudna książka 1)
system "Czy chodzi o książki ""Bardzo ciekawa książka 1"", ""Bardzo ciekawa książka 2"", ""Nudna książka 1"" autora Jan Kowalski?" confirm(book=Bardzo ciekawa książka 1)&confirm(book=Bardzo ciekawa ksiazka 2)&confirm(Nudna książka 1)&confirm(author=Jan Kowalski)
user tak affirm()
system Książki została zarezerwowane i będą do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książek do 7 dni roboczych prowadzi do utraty ich rezerwacji. inform(reservation)
user Dziękuję thankyou()
system Dziękujemy i życzymy udanego czytania. thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Chciałbym wypożyczyć książkę request(action=wypozyczenie)
3 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
4 user 123456789 inform(car_number=123456789)
5 system Proszę podać nazwę książki lub książek. request(book)
6 user Bardzo ciekawa książka 1, Bardzo ciekawa książka 2, Nudna książka 1 inform(book=Bardzo ciekawa książka 1)&inform(book=Bardzo ciekawa ksiazka 2)&inform(Nudna książka 1)
7 system Czy chodzi o książki "Bardzo ciekawa książka 1", "Bardzo ciekawa książka 2", "Nudna książka 1" autora Jan Kowalski? confirm(book=Bardzo ciekawa książka 1)&confirm(book=Bardzo ciekawa ksiazka 2)&confirm(Nudna książka 1)&confirm(author=Jan Kowalski)
8 user tak affirm()
9 system Książki została zarezerwowane i będą do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książek do 7 dni roboczych prowadzi do utraty ich rezerwacji. inform(reservation)
10 user Dziękuję thankyou()
11 system Dziękujemy i życzymy udanego czytania. thankyou()

11
data/dialog-14-13-02.tsv Normal file
View File

@ -0,0 +1,11 @@
system Witamy w interaktywnej bibliotece. hello()
user Chciałabym uzyskać informację o statusie książki. request(action=status)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 1256 inform(car_number=1256)
system "Użytkownik o numerze karty ""001256"", ma wypożyczone następujące książki: ""Kafka"" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, ""1Q84"" Haruki Murakami, z datą zwrócenia książki na 5 kwietnia 2021." "confirm(card_numer=1256)&(inform(book=""Kafka"" Haruki Murakami)&inform(date=29 marca 2021)&inform(book=""1Q84"" Haruki Murakami)&inform(date=5 kwietna 2021)"
user Chciałabym przedłużyć wypożyczenie ksiązki. request(action=wypożyczenie)
system Proszę podać o jaką książkę chodzi. reqmore(book)
user """Kafka"" Haruki Murakami" inform(book=”Kafka” Haruki Murakami)
system Proszę podać o ile dni ma zostać przedłużona książka, nie może być to jednak czas dłuższy niż 21 dni. request(action=czas wypożyczenia)
user 10 inform(time=10)
system "Książka ""Kafka"" Haruki Murakami została przedłużona o 10 dni, obecny termin zwrotu wypada 8 kwietnia 2021 roku." inform(summary=”Kafka” Haruki Murakami, termin 8 kwietnia 2021)
1 system Witamy w interaktywnej bibliotece. hello()
2 user Chciałabym uzyskać informację o statusie książki. request(action=status)
3 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
4 user 1256 inform(car_number=1256)
5 system Użytkownik o numerze karty "001256", ma wypożyczone następujące książki: "Kafka" Haruki Murakami, z datą zwrócenia książki na 29 marca 2021, "1Q84" Haruki Murakami, z datą zwrócenia książki na 5 kwietnia 2021. confirm(card_numer=1256)&(inform(book="Kafka" Haruki Murakami)&inform(date=29 marca 2021)&inform(book="1Q84" Haruki Murakami)&inform(date=5 kwietna 2021)
6 user Chciałabym przedłużyć wypożyczenie ksiązki. request(action=wypożyczenie)
7 system Proszę podać o jaką książkę chodzi. reqmore(book)
8 user "Kafka" Haruki Murakami inform(book=”Kafka” Haruki Murakami)
9 system Proszę podać o ile dni ma zostać przedłużona książka, nie może być to jednak czas dłuższy niż 21 dni. request(action=czas wypożyczenia)
10 user 10 inform(time=10)
11 system Książka "Kafka" Haruki Murakami została przedłużona o 10 dni, obecny termin zwrotu wypada 8 kwietnia 2021 roku. inform(summary=”Kafka” Haruki Murakami, termin 8 kwietnia 2021)

7
data/dialog-14-15-01.tsv Normal file
View File

@ -0,0 +1,7 @@
system Witamy w interaktywnej bibliotece. hello()
user Dzień dobry. Chciałam sprawdzić status wypożyczonych książek hello()&request(action=status wypożyczenia)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 123456 inform(car_number=123456)
system "Użytkownik o numerze karty 123456"", ma wypożyczone następujące książki: ""Harry Potter i Komnata Tajemnic"" J.K. Rowling, z datą zwrócenia książki na 5 kwietnia 2021, ""Ludzie. Krótka historia o tym, jak spieprzyliśmy wszystko"" Phillips Tom, z datą zwrócenia książki na 30 marca 2021." "confirm(card_numer=123456)&(inform(book=”Harry Potter i Komnata Tajemnic” J. K. Rowling”)&inform(date=5 kwietnia 2021)&inform(book=""Ludzie. Krótka historia o tym, jak spieprzyliśmy wszystko"" Phillips Tom)&inform(date=30 marca 2021)"
user Bardzo dziękuję za informację. Wszystko już wiem thankyou()
system Dziękujemy i życzymy udanego czytania. bye()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Dzień dobry. Chciałam sprawdzić status wypożyczonych książek hello()&request(action=status wypożyczenia)
3 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
4 user 123456 inform(car_number=123456)
5 system Użytkownik o numerze karty 123456", ma wypożyczone następujące książki: "Harry Potter i Komnata Tajemnic" J.K. Rowling, z datą zwrócenia książki na 5 kwietnia 2021, "Ludzie. Krótka historia o tym, jak spieprzyliśmy wszystko" Phillips Tom, z datą zwrócenia książki na 30 marca 2021. confirm(card_numer=123456)&(inform(book=”Harry Potter i Komnata Tajemnic” J. K. Rowling”)&inform(date=5 kwietnia 2021)&inform(book="Ludzie. Krótka historia o tym, jak spieprzyliśmy wszystko" Phillips Tom)&inform(date=30 marca 2021)
6 user Bardzo dziękuję za informację. Wszystko już wiem thankyou()
7 system Dziękujemy i życzymy udanego czytania. bye()

13
data/dialog-15-04-01.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w interaktywnej bibliotece. hello()
user Cześć, czy możesz polecić mi jakąś książkę? request(book)
system Na podstawie wcześniej przeczytanych przez Ciebie lektur polecam książkę Krzyżacy Henryk Sienkiewicz. inform(book=Krzyżacy Henryk Sienkiewicz)
user Juz przeczytałem tą książkę. Czy macie może coś z gatunku fantasy? reqalts(book)
system Polecam książkę Krew elfów Andrzej Sapkowski. inform(book=Krew elfów Andrzej Sapkowski)
user Brzmi bardzo ciekawie, czy mogę zarezerwować tą książkę? request(reservation)
system Możesz zarezerwować tę pozycję. Będzie czekać na Ciebie w naszej placówce przez następnych 5 dni roboczych. confirm(reservation)
user Gdzie znajduje się wasza placówka w Poznaniu i jakie są jej godziny otwarcia? request(location=Poznań)&request(time)
system Nasza placówka w Poznaniu znajduje się przy ul. Bibliotecznej 28. inform(location=Poznań, ul. Biblioteczna 28)
system Godziny otwarcia: Poniedziałek-Piątek: 8:30-18:30, Sobota: 11:00-19:00, Niedziela: nieczynne. inform(time=Poniedziałek-Piątek: 8:30-18:30, Sobota: 11:00-19:00, Niedziela: nieczynne)
user Dziękuję bardzo, odbiorę ksiązkę w tym terminie. thankyou()
system Dziękuję za rozmowę. Udanej lektury! thankyou()
user Dziękuję! thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Cześć, czy możesz polecić mi jakąś książkę? request(book)
3 system Na podstawie wcześniej przeczytanych przez Ciebie lektur polecam książkę Krzyżacy Henryk Sienkiewicz. inform(book=Krzyżacy Henryk Sienkiewicz)
4 user Juz przeczytałem tą książkę. Czy macie może coś z gatunku fantasy? reqalts(book)
5 system Polecam książkę Krew elfów Andrzej Sapkowski. inform(book=Krew elfów Andrzej Sapkowski)
6 user Brzmi bardzo ciekawie, czy mogę zarezerwować tą książkę? request(reservation)
7 system Możesz zarezerwować tę pozycję. Będzie czekać na Ciebie w naszej placówce przez następnych 5 dni roboczych. confirm(reservation)
8 user Gdzie znajduje się wasza placówka w Poznaniu i jakie są jej godziny otwarcia? request(location=Poznań)&request(time)
9 system Nasza placówka w Poznaniu znajduje się przy ul. Bibliotecznej 28. inform(location=Poznań, ul. Biblioteczna 28)
10 system Godziny otwarcia: Poniedziałek-Piątek: 8:30-18:30, Sobota: 11:00-19:00, Niedziela: nieczynne. inform(time=Poniedziałek-Piątek: 8:30-18:30, Sobota: 11:00-19:00, Niedziela: nieczynne)
11 user Dziękuję bardzo, odbiorę ksiązkę w tym terminie. thankyou()
12 system Dziękuję za rozmowę. Udanej lektury! thankyou()
13 user Dziękuję! thankyou()

13
data/dialog-15-06-01.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w interaktywnej bibliotece. hello()
user Dzień dobry hello()
user Chcialbym zobaczyć czy mam jakiś ksiażki do oddania. request(status)
system Proszę o podanie numeru karty bibliotecznej. request(card_number)
user 123123 inform(card_number)
system Masz jedną nieoddaną książkę. Zabić drozda Harper Lee; Sygnatura 121212.VI; Zwrot 12.04.21 do godziny 22:00 inform(status=Zabić drozda Harper Lee; Sygnatura 121212.VI; Zwrot 12.04.21 do godziny 22:00)
user Chciałbym wypożyczyć jakiś kryminał request(book=kryminał)
user Jakie są najlepsze kryminały w bibliotece? request(book=kryminał)
system Najczęściej wypożyczanym kryminałem jest książka Zabiłem autorstwa Jan Kowalski. inform(book=Zabiłem Jan Kowalski)
user Chciałbym wypożyczyć tą pozycję request(reservation)
system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
user Dziękuję thankyou()
system Dziękuję. Życzę udanej lektury. thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Dzień dobry hello()
3 user Chcialbym zobaczyć czy mam jakiś ksiażki do oddania. request(status)
4 system Proszę o podanie numeru karty bibliotecznej. request(card_number)
5 user 123123 inform(card_number)
6 system Masz jedną nieoddaną książkę. Zabić drozda Harper Lee; Sygnatura – 121212.VI; Zwrot – 12.04.21 do godziny 22:00 inform(status=Zabić drozda Harper Lee; Sygnatura – 121212.VI; Zwrot – 12.04.21 do godziny 22:00)
7 user Chciałbym wypożyczyć jakiś kryminał request(book=kryminał)
8 user Jakie są najlepsze kryminały w bibliotece? request(book=kryminał)
9 system Najczęściej wypożyczanym kryminałem jest książka Zabiłem autorstwa Jan Kowalski. inform(book=Zabiłem Jan Kowalski)
10 user Chciałbym wypożyczyć tą pozycję request(reservation)
11 system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
12 user Dziękuję thankyou()
13 system Dziękuję. Życzę udanej lektury. thankyou()

13
data/dialog-15-08-01.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w interaktywnej bibliotece. hello()
user Dzień dobry, chciałbym sprawdzić czy mam założone konto czytelnika hello()&request(have_account)
system Dzień dobry. Proszę podać imię, nazwisko, oraz datę urodzenia. hello()&request(personal_info)
user Piotr Kopycki 1998 inform(name=Piotr Kopycki,date_of_birth=1998)
system Niestety, nie posiada Pan karty bibliotecznej w naszym systemie. negate(have_account)
system Czy chce Pan ją założyć? request(create_an_account)
user Tak, poproszę affirm(create_an_account)
system Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem, które znajdują się pod linkiem www.biblioteka.pl. inform(create_an_account)
system Czy mogę jeszcze jakoś pomóc? reqmore()
user Czy mogę wypożyczyć książkę bez karty? request(action=no_account)
system Niestety nie jest to możliwe w naszej bibliotece. negate()
user W takim razie to wszystko, skontaktuję się po zapoznaniu z regulaminem. bye()
system Oczywiście, czekam na kontakt. bye()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Dzień dobry, chciałbym sprawdzić czy mam założone konto czytelnika hello()&request(have_account)
3 system Dzień dobry. Proszę podać imię, nazwisko, oraz datę urodzenia. hello()&request(personal_info)
4 user Piotr Kopycki 1998 inform(name=Piotr Kopycki,date_of_birth=1998)
5 system Niestety, nie posiada Pan karty bibliotecznej w naszym systemie. negate(have_account)
6 system Czy chce Pan ją założyć? request(create_an_account)
7 user Tak, poproszę affirm(create_an_account)
8 system Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem, które znajdują się pod linkiem www.biblioteka.pl. inform(create_an_account)
9 system Czy mogę jeszcze jakoś pomóc? reqmore()
10 user Czy mogę wypożyczyć książkę bez karty? request(action=no_account)
11 system Niestety nie jest to możliwe w naszej bibliotece. negate()
12 user W takim razie to wszystko, skontaktuję się po zapoznaniu z regulaminem. bye()
13 system Oczywiście, czekam na kontakt. bye()

13
data/dialog-15-10-01.tsv Normal file
View File

@ -0,0 +1,13 @@
system Witamy w interaktywnej bibliotece. hello()
user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(book)
system Proszę o podanie tytułu i autora książki. request(book)
user Pan Tadeusz autorstwa Adama Mickiewicza request(reservation=Pan Tadeusz Adam Mickiewicz)
system Czy chodzi o książkę Pan Tadeusz Adam Mickiewicz? confirm(book=Pan Tadeusz Adam Mickiewicz)
user tak affirm()
system Proszę o podanie numeru Pana karty bibliotecznej. request(card_number)
user 12345 inform(card_number)
system Książki została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
user Chciałbym się jeszcze dowiedzieć, jakie książki do tej pory wypożyczyłem. request(status)
system Jak dotąd wypożyczyłeś tylko jedną książkę - Zabić drozda Harper Lee. Zachęcamy do częstszego korzystania z naszych usług. inform(status=Zabić drozda Harper Lee)
user Dziękuję, to wszystko. thankyou()
system Dziękuję. Życzę udanej lektury. thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Dzień dobry, chciałbym wypożyczyć książkę. hello()&request(book)
3 system Proszę o podanie tytułu i autora książki. request(book)
4 user Pan Tadeusz autorstwa Adama Mickiewicza request(reservation=Pan Tadeusz Adam Mickiewicz)
5 system Czy chodzi o książkę Pan Tadeusz Adam Mickiewicz? confirm(book=Pan Tadeusz Adam Mickiewicz)
6 user tak affirm()
7 system Proszę o podanie numeru Pana karty bibliotecznej. request(card_number)
8 user 12345 inform(card_number)
9 system Książki została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
10 user Chciałbym się jeszcze dowiedzieć, jakie książki do tej pory wypożyczyłem. request(status)
11 system Jak dotąd wypożyczyłeś tylko jedną książkę - Zabić drozda Harper Lee. Zachęcamy do częstszego korzystania z naszych usług. inform(status=Zabić drozda Harper Lee)
12 user Dziękuję, to wszystko. thankyou()
13 system Dziękuję. Życzę udanej lektury. thankyou()

11
data/dialog-15-12-01.tsv Normal file
View File

@ -0,0 +1,11 @@
system Witamy w interaktywnej bibliotece. hello()
user Witam. Chciałbym wypożyczyć książkę. hello()&request(book)
system Proszę podać tytuł oraz autora książki. request(book)
user Wywiad z Wampirem, Anna Rice. Czy jest dostępne wydanie z lat 70-tych? request(reservation=Wywiad z Wampirem Anna Rice)&request(edition_info=Wywiad z Wampirem Anna Rice)
system Czy chodzi o książkę Wywiad z Wampirem Anna Rice? Dostępne wydania pochodzą z 1997 oraz 2004. confirm(book=Wywiad z Wampirem Anna Rice)&info(edition_info=1997 i 2004)
user Tak affirm()
system Czy chcesz wypożyczyć tę pozycję? request(reservation)
user Tak affirm(reservation)
system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
user Dziękuję za pomoc. thankyou()
system Dziękuję również. Życzę udanej lektury. thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Witam. Chciałbym wypożyczyć książkę. hello()&request(book)
3 system Proszę podać tytuł oraz autora książki. request(book)
4 user Wywiad z Wampirem, Anna Rice. Czy jest dostępne wydanie z lat 70-tych? request(reservation=Wywiad z Wampirem Anna Rice)&request(edition_info=Wywiad z Wampirem Anna Rice)
5 system Czy chodzi o książkę Wywiad z Wampirem Anna Rice? Dostępne wydania pochodzą z 1997 oraz 2004. confirm(book=Wywiad z Wampirem Anna Rice)&info(edition_info=1997 i 2004)
6 user Tak affirm()
7 system Czy chcesz wypożyczyć tę pozycję? request(reservation)
8 user Tak affirm(reservation)
9 system Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji. inform(reservation)
10 user Dziękuję za pomoc. thankyou()
11 system Dziękuję również. Życzę udanej lektury. thankyou()

9
data/dialog-15-14-01.tsv Normal file
View File

@ -0,0 +1,9 @@
system Witamy w interaktywnej bibliotece. hello()
user Chciałbym wyrobić kartę biblioteczną request(create_an_account)
system Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem. Są one dostępne pod adresem www.biblioteka.pl inform(create_an_account=karta zapisu)
user Można to zrobić przez internet? request(info=create_an_account)
system Kartę zapisu można wypełnić przez internet. Następnie należy udać się do naszej placówki w celu odebrania dokumentu. Wymagany będzie dowód osobisty lub legitymacja szkolna/studencka. inform(create_an_account)
user Skąd będę wiedział kiedy moge to odebrać?? request(time)
system Gdy dokument będzie gotowy otrzyma Pan powiadomienie na podany w formularzy adres email. Maksymalny czas oczekiwania to 5 dni roboczych. inform(new_account)
user Dobrze, dziękuję za rozmowę thankyou()
system Dziękuję również. W razie pojawiających się pytań proszę o kontakt. thankyou()
1 system Witamy w interaktywnej bibliotece. hello()
2 user Chciałbym wyrobić kartę biblioteczną request(create_an_account)
3 system Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem. Są one dostępne pod adresem www.biblioteka.pl inform(create_an_account=karta zapisu)
4 user Można to zrobić przez internet? request(info=create_an_account)
5 system Kartę zapisu można wypełnić przez internet. Następnie należy udać się do naszej placówki w celu odebrania dokumentu. Wymagany będzie dowód osobisty lub legitymacja szkolna/studencka. inform(create_an_account)
6 user Skąd będę wiedział kiedy moge to odebrać?? request(time)
7 system Gdy dokument będzie gotowy otrzyma Pan powiadomienie na podany w formularzy adres email. Maksymalny czas oczekiwania to 5 dni roboczych. inform(new_account)
8 user Dobrze, dziękuję za rozmowę thankyou()
9 system Dziękuję również. W razie pojawiających się pytań proszę o kontakt. thankyou()

9
docker-compose.yml Normal file
View File

@ -0,0 +1,9 @@
version: "3.6"
services:
convlab:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 8888:8888

31
evaluate.py Normal file
View File

@ -0,0 +1,31 @@
import os
import re
import pandas as pd
import numpy as np
from Modules import NLU
PATTERN = r"[^(]*"
# Algorytm sprawdzający
rows = 0
hits = 0
nlu = NLU()
for file_name in os.listdir("data"):
df = pd.read_csv(f"data/{file_name}", sep="\t", names=["user", "sentence", "acts"])
df = df[df.user == "user"]
data = np.array(df)
for row in data:
rows += 1
sentence = row[1]
user_acts = row[2].split("&")
nlu_match = nlu.match(sentence)
if nlu_match["act"] in user_acts:
hits += 1
print(f"Accuracy: {(hits / rows)*100}")
# Dokładność 38.5%

42
evaluation.md Normal file
View File

@ -0,0 +1,42 @@
Zadowolenie użytkownika:
Miara ta została zbadana przy pomocy kwestionariusza ankiety udostępnionego pod adresem: https://forms.office.com/Pages/DesignPage.aspx#Analysis=true&FormId=4Z5ocy-0JU6l9mbR8pvAksTZBFwnYhpNiX-Xgn9ie2xUMTBSWENQVkMzUUszWEhCRjkzTkhGN1lDVCQlQCN0PWcu
W toku badania zadowolenia uzyskanych zostało osiem odpowiedzi dotyczących takich kwestii jak: ocena jakości prowadzonej rozmowy, realizacja celu, stopień realizacji celu, chaotyczność przebiegu rozmowy czy czas jaki zajęło uzyskanie pożądanej informacji.
1. Średnia ocena jakości przeprowadzonej rozmowy wyniosła 6.63 - najniższa uzyskana ocena wyniosła trzy, a najwyższa dziesięć. Uzyskane oceny były związane ze skomplikowaniem i długością dialogu, im dłuższy i bardziej rozbudowany dialog tym niższa ocena, co związane było z niedostatecznym pokryciem wszystkich opcji. Najwyższą skuteczność bot uzyskiwał w przypadku dialogów dotyczących wypożyczeń, a najniższą w przypadku opcji dodatkowych takich jak zakładanie karty bibliotecznej czy kar.
2. Równocześnie, jak wynika z odpowiedzi w pytaniu drugim aż siedem z ośmiu użytkowników wskazało, że ostatecznie cel rozmowy został realizowany, jedna osoba wskazała, że nie wie, podczas gdy nikt nie wskazał odpowiedzi przeczącej. Co sugeruje, że pomimo problemów i niedociągnięć bot może zostać uznany za skutecznego.
3. Pytanie trzecie pozwoliło uzyskać dodatkowe informacje na temat skuteczności, ponieważ dwie osoby wskazały, że udało im się uzyskać odpowiedzi na wszystkie pytania, a kolejne sześć osób uznało, że udało im się uzyskać odpowiedź na większość pytań. Ponadto nikt nie wskazał odpowiedzi dotyczących uzyskania odpowiedzi na mniejszość pytań oraz odpowiedzi dotyczącej niezdolności uzyskania odpowiedzi na żadne pytanie. Tym samym potwierdza to wniosek wynikający z odpowiedzi na pytanie drugie.
4. W pytaniu czwartym użytkownicy mieli za zadanie wskazać, czy rozmowa miała chaotyczny przebieg, dwie osoby wskazały odpowiedź twierdzącą, pięć przeczącą, a jedna osoba stwierdziła że nie wie. Odpowiedzi negatywne dotyczą szczególnie tych bardziej rozbudowanych dialogów.
5. Pytanie piąte dotyczyło czasu potrzebnego do uzyskania satysfakcjonującej odpowiedzi, w trzech przypadkach ankietowani wskazali, że zajęło to mniej niż dwie minuty. Kolejne cztery osoby wskazały na przedział 2-5 minut, a jedna że proces ten zajął ponad 10 minut.
6. W pytaniu szóstym ankietowani zostali poproszeni żeby określić, czy w toku rozmowy pojawiły się zakłócenia. Według sześciu badanych zakłócenia w trakcie rozmowy nie wystąpiły, dwie osoby wskazały odpowiedź, że zakłócenia wystąpiły, ale były niewielkie. Nikt nie wskazał odpowiedzi mówiącej, że zakłócenia były duże.
7. Pytanie siódme miało charakter otwarty i dotyczyło opisu zakłóceń które wystąpiły w trakcie rozmowy, badani udzielili dwóch odpowiedzi. Jedna osoba wskazała, że system nie zrozumiał zapytania, podczas gdy druga wskazała, że system czasami wskazywał odpowiedź "Nie rozumiem pytania lub nie posiadamy takiej książki".
8. W pytaniu ósmym badani zostali poproszeni o wskazanie stopnia w jakim system rozumiał otrzymywane pytania. Skala miała charakter pięcio stopniowy i obejmowała odpowiedzi: zdecydowanie tak, tak, przeciętnie, nie, zdecydowanie nie. Tylko jedna osoba udzieliła odpowiedzi zdecydowanie tak, cztery osoby udzieliły odpowiedzi tak, a trzy osoby odpowiedzi przeciętnie. Nikt jednak nie wskazał odpowiedzi nie lub zdecydowanie nie.
9. W dodatkowych uwagach pojawiła się propozycja dodania dodatkowych informacji na temat terminów zwrotów czy książek do zwrotu, które obecnie nie są dostępne.
Miary wypełnienia zadania:
Task succes: 7/8 - ponieważ siedem osób wskazało, że cel rozmowy został zrealizowany, a jedna wskazała odpowiedź nie wiem, co zostało zinterpretowane jako porażkę czyli wartość 0.
Miary efektywności dialogu:
Czas:
86% dialogów zostało zrealizowanych w czasie poniżej 6 minut,
38% dialogów zostało zrealizowanych w czasie poniżej 2 minut,
13% dialogów było realizowanch w czasie powyżej 10 minut.
Liczba tur:
Średnia liczba tur: 4.3
Miary jakości dialogu
0/43 - liczba wystąpień aktu help w stosunku do pozostałych aktów
0/43 - liczba wystąpień aktu restart w stosunku do pozostałych aktów

1
l08/ConvLab-2 Submodule

@ -0,0 +1 @@
Subproject commit 3812629e8dde63edd4ca5ba94e93d919d50a5d66

171
main.py Normal file
View File

@ -0,0 +1,171 @@
from Modules import NLU
from typing import List, Tuple
import random
nlu = NLU()
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 ."""
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 act_inform(sentence: str) -> str:
if is_in_sentence(sentence, "dostępna"):
return random.choice(
[
"Wskazana przez Ciebie pozycja niestety nie jest dostępna",
"Ksiązką, o którą pytasz jest aktualnie dostępna",
]
)
elif is_in_sentence(sentence, "wydawcy", "wydawca", "wydawnictwo", "wydawnictwa"):
return random.choice(
[
"Książka tego wydawcy jest dostępna",
"Książka tego wydawcy nie jest dostępna",
"Nie znaleziono wydawcy o tej nazwie",
]
)
elif is_in_sentence(sentence, "autor", "autora", "autorstwa"):
return random.choice(
[
"Książka tego autora nie jest dostępna",
"Książki tego autora są dostępne w bibliotece",
"Nie znaleziono autora o tym imieniu i nazwisku"
]
)
elif is_in_sentence(sentence, "godziny", "otwarta", "czynna", "otwarcie"):
return "Biblioteka jest otwarta w dni robocze w godzinach 8-16"
elif is_in_sentence(sentence, "lokalizacja", "lokalicazji", "adres", "ulica", "placówka"):
return "Biblioteka znajduje się na ul. Targowej 10 w Poznaniu"
elif is_in_sentence(
sentence,
"dni", "dzień",
"niedziela", "niedziele", "niedzielę",
"święta", "święto"
):
return "Biblioteka otwarta jest jedynie w dni robocze. Godziny otwarcia: 8-16"
elif is_in_sentence(sentence, "numer telefonu", "kontakt", "numer kontaltowy", "telefon"):
return "Numer kontaktowy: 123 456 789"
elif is_in_sentence(
sentence,
"wydarzenie", "wydarzenia",
"atrakcja", "atrakcje",
"spotkanie", "spotkania"
):
return random.choice(
[
"W najbliższy poniedziałek odbędzie się Dzień młodego czytelnika",
"Dzień fantastyki trwać będzie przez cały najbliższy weekend",
"Dzień promowania czytelnictwa to najbliższe wydarzenie (najbliższa sobota)",
"Obecnie nie ma żadnych zaplanowanych wydarzeń",
]
)
return "Niestety nie zrozumiałem? Jakich informacji szukasz?"
def act_affirm() -> str:
return random.choice(
[
"Zgadza się",
"Tak",
"Tak zgadza się",
]
)
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()
elif act == "inform":
return act_inform(sentence)
elif act == "affirm":
return act_affirm(sentence, slots)
return "Nie rozumiem pytania lub nie posiadamy takiej książki"
while True:
sentence = input("Wiadomość użytkownika: ")
print(answer(sentence))

163
requirements-analysis.md Normal file
View File

@ -0,0 +1,163 @@
Interaktywna biblioteka
==============
Zadanie 1: Wypożyczenie książki
--------------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry, chciałbym wypożyczyć książkę.
*system:* Proszę podać tytuł i autora wybranej książki.
*user:* Biała gorączka Hugo-Badera.
*system:* Czy chodzi o książkę "Biała gorączka" Jacek Hugo-Bader?
*user:* Tak.
*system:* Książka została wypożyczona.
Zadanie 2: Sprawdzenie dostępności
--------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry, czy książka "Finansowy ninja" jest aktualnie dostępna?
*system:* Czy chodzi o książkę "Finansowy ninja" Michał Szafrański?
*user:* Tak.
*system:* Aktualnie dostępnych jest 5 egzemplarzy tej książki.
Zadanie 3: Zamówienie książki
--------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry. Chciałbym zamówić książkę.
*system:* Proszę podać tytuł i autora wybranej pozycji.
*user:* 12 życiowych zasad Petersona.
*system:* Czy chodzi o książkę "12 życiowych zasad. Antidotum na chaos" Jordan B. Peterson?
*user:* Dokładnie tak.
*system:* Książka nie jest aktualnie dostępna. Zostanie jednak zarezerwowana, a Pan poinformowany o jej dostępności.
Zadanie 4: Zamówienie wysyłki
--------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry, chciałbym zamówić wysyłkę książki.
*system:* Proszę podać tytuł i autora wybranej pozycji.
*user:* Nowy wspaniały świat, Aldousa Huxleya.
*system:* Czy chodzi o książkę "Nowy wspaniały świat" Aldous Huxley?
*user:* Tak.
*system:* Adres wysyłki jest zgodny z podanym w karcie, tj. Uniwersytetu Poznańskiego 4, 61-614 Poznań?
*user:* Tak.
*system:* Książka zostanie dostarczona w ciągu 10 dni roboczych.
Zadanie 5: Przedłużenie wypożyczenia
--------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry, chciałbym przedłużyć wypożyczenie książki.
*system:* Proszę podać tytuł i autora aktualnie wypożyczonej pozycji.
*user:* Norwegian Wood, Haruki Murakami.
*system:* Czy chodzi o książkę "Norwegian Wood" Haruki Murakami?
*user:* Tak.
*system:* Termin wypożyczenia książki kończy się za 5 dni. Możliwe jest przedłużenie o miesiąc, dana pozycja może być przedłużana trzy razy pod rząd. Czy dokonać przedłużenia?
*user:* Tak.
*system:* Wypożyczenie zostało przedłużone o miesiąc, obecny termin upływa za 35 dni (DD-MM-YYYY).
Zadanie 6: Założenie karty bibliotecznej
--------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry, chciałbym założyć kartę biblioteczną.
*system:* Do założenia karty bibliotecznej konieczne jest wypełnienie karty zapisu i zapoznanie się z regulaminem.
*user:* Gdzie znaleźć kartę zapisu i regulamin?
*system:* Wzór karty zapisu znajduje się pod tym linkiem: LINK, a regulamin pod tym linkiem: LINK,
*user:* Co należy zrobić po wypełnieniu karty zapisu?
*system:* Konieczne jest udanie się do biblioteki znajdującej się pod adresem: ADRES i odebranie dokumenty, niezbędne będzie także okazanie dowodu osobistego lub legitymacji szkolnej/studenckiej.
Zadanie 7: Podgląd rozliczeń
--------------------------
*system:* Witamy w interaktywnej bibliotece.
*user:* Dzień dobry, chciałbym sprawdzić moje rozliczenia.
*system:* Obecnie posiadasz X niezwróconych w terminie książek, w związki z tym rozpoczęło się naliczanie odsetek.
*user:* Ile muszę zapłacić za przetrzymane książki?
*system:* Suma wszystkich należności wynosi Y.
*user:* Jak mogę dokonać płatności?
*system:* W dowolnej placówce biblioteki albo dokonując przelewu na konto o numerze: XXXX-XXXX-XXXX-XXX w opisie podając numer karty bibliotecznej.
Zadanie 8: Podgląd aktualnych wydarzeń
--------------------------
*system:* Witamy w systemie interaktywnej biblioteki.
*user:* Proszę o informacje o aktualnych wydarzeniach.
*system:* 12.05.21, 18:00 Spotkanie autorskie z Marcinem Wichą LINK,
17.05.21, 18:00 Spotkanie Klubu Książki LINK,
26.05.21, 19:00 Konkurs Młodego Poety LINK.
Zadanie 9: Status wypożyczonej książki
--------------------------
*system:* Witamy w systemie interaktywnej biblioteki.
*user:* Chciałbym uzyskać informacje o statusie książki.
*system:* Proszę podać sygnaturę książki.
*user* 121212.VI
*system:* Zabić drozda - Harper Lee; Sygnatura 121212.VI; Zwrot 12.04.21 do godziny 22:00
Zadanie 10: Informacja o godzinach otwarcia
--------------------------
*system:* Witamy w systemie interaktywnej biblioteki.
*user:* Dzień dobry, chciałbym uzyskać informację o godzinach otwarcia biblioteki w środy.
*system:* Biblioteka jest czynna środy w godzinach 10:00-21:00. Biblioteka on-line jest dostępna całodobowo.
*user:* W jakich godzinach biblioteka jest otwarta w weekend?
*system:* Biblioteka jest czynna w sobotę w godzinach 10:00-14:00, w niedzielę biblioteka jest nieczynna. Biblioteka on-line jest dostępna całodobowo.

402
value_dict.json Normal file
View File

@ -0,0 +1,402 @@
{
"books":{
"title": [
"Bezsenność w Tokio",
"Sapiens Od zwierząt do bogów",
"1Q84",
"Zbrodnia i Kara",
"Ojczyzna",
"Metro 2033",
"Zwodniczy Punkt",
"Wywiad z wampirem",
"Wilkołak",
"Ekstremista",
"Szóstka wron",
"Miasto z mgły",
"Zapis zarazy",
"Angst with happy ending",
"Wiedźmin",
"Hobbit",
"Mitologia grecka i rzymska",
"Jak człowiek staje się mordercą",
"Mroeczne archiwa",
"Alianci",
"Kuchnie świata",
"Kres czasów",
"Jak ocalić świat",
"Mieszkaj boho",
"Potęga checklisty",
"Sen o okapi",
"ON",
"Przygody matematyka",
"Dwanaście Stacji",
"Krew",
"Milczenie owiec",
"Duma i uprzedzenie",
"Władca Pierścieni",
"Jane Eyre",
"Harry Potter i kamień filozoficzny",
"Zabić drozda",
"Wichrowe Wzgórza",
"Rok 1984",
"Mroczne materie",
"Wielkie nadzieje",
"Małe kobietki",
"Tessa DUrberville",
"Paragraf 22",
"Rebeka",
"Birdsong",
"Buszujący w zbożu",
"Żona podróżnika w czasie",
"Miasteczko Middlemarch",
"Przeminęło z wiatrem",
"Wielki Gatsby",
"Samotnia",
"Wojna i pokój",
"Autostopem przez Galaktykę",
"Znowu w Brideshead",
"Grona gniewu",
"Alicja w Krainie Czarów",
"O czym szumią wierzby",
"Anna Karenina",
"David Copperfield",
"Opowieści z Narnii",
"Emma",
"Perswazje",
"Lew, Czarwnica i Stara Szafa"
],
"author": [
"Marcin Bruczkowski",
"Harari Yuval Noah",
"Haruki Murakami",
"Fiodor Dostojewski",
"Wojciech Chmielarz",
"Remigiusz Mróz",
"Leigh Bardugo",
"Carlos Ruiz Zafon",
"Tomasz Budzyński",
"Weronika Łodyga",
"Andrzej Sapkowski",
"J R R Tolkien",
"Katarzyna Marciniak",
"Richard Taylor",
"Megan Rosenbloom",
"Piotr Zychowicz",
"Ewelina Podrez-Siama",
"Marzena Rogalska",
"Bill Gates",
"Justina Blakeney",
"Atul Gawande",
"Mariana Leky",
"Diana Brzezińska",
"Stanisław Ulam",
"Tomasz Różycki",
"Max Czornyj",
"Thomas Harris",
"Jane Austen",
"J R R Tolkien",
"Charlotte Bronte",
"J K Rowling",
"Harper Lee",
"Emily Bronte",
"George Orwell",
"Philip Pullman",
"Charles Dickens",
"Louisa M Alcott",
"Thomas Hardy",
"Joseph Heller",
"Daphne Du Maurier",
"Sebastian Faulks",
"J D Salinger",
"Audrey Niffenegger",
"George Eliot",
"Margaret Mitchell",
"F Scott Fitzgerald",
"Charles Dickens",
"Leo Tolstoy",
"Douglas Adams",
"Evelyn Waugh",
"John Steinbeck",
"Lewis Carroll",
"Kenneth Grahame",
"Leo Tolstoy",
"Charles Dickens",
"C S Lewis",
"Jane Austen",
"Jane Austen",
"C S Lewis"
],
"genre": [
"romans",
"thriller",
"fantasy",
"horror",
"biografia",
"science-fiction",
"dramat",
"powiesc",
"basn",
"satyra",
"legenda",
"liryka",
"opowiadanie",
"komedia",
"epika",
"poezja",
"literatura piekna",
"nowela",
"opowiadanie",
"epos",
"pamiętnik",
"oda",
"tren",
"elegia",
"sonet",
"farsa",
"tragifarsa",
"opera"
],
"publisher":[
"Nowa Era",
"Wydawnictwo Mg",
"Nowa Fantastyka",
"Rebis",
"Latarnik",
"Wolters Kluwer",
"Sphere",
"PAN",
"Titan books",
"Łódzki Dom Wydawniczy",
"ABE Dom Wydawniczy",
"Academica",
"Biały kruk",
"Gdańskie Wydawnictwo Oświatowe",
"Alma-Press",
"Anagram",
"Arkady",
"Arcana",
"ARX REGIA",
"Branta oficyna wydawnicza",
"Carta Blanca",
"Harmonia",
"Impuls"
],
"edition": [
"1977",
"1978",
"1979",
"1980",
"1981",
"1982",
"1983",
"1984",
"1985",
"1986",
"1987",
"1988",
"1989",
"1990",
"1991",
"1992",
"1993",
"1994",
"1995",
"1996",
"1997",
"1998",
"1999",
"2000",
"2001",
"2002",
"2003",
"2004",
"2005",
"2006",
"2007",
"2008",
"2009",
"2010",
"2011",
"2012",
"2013",
"2014",
"2015",
"2016",
"2017",
"2018",
"2019",
"2020"
],
"lang" : [
"polski",
"angielski",
"francuski",
"niemiecki",
"rosyjski",
"japoński",
"chiński",
"arabski",
"hiszpański",
"portugalski",
"szwedzki",
"norweski",
"ukraiński",
"białoruski"
]
},
"library": {
"location":[
"ul. Targowa 10"
],
"status" : [
"otwarta",
"zamknięta do odwołania",
"otwarta w czasie pandemii",
"zamknięta"
],
"events" : [
"dzień młodego czytelnika",
"dzień fantastyki",
"dzień poezji",
"dzień promowania czytelnictwa",
"dzień ziemii",
"wieczór sztuki"
],
"days": [
"od poniedziałku do soboty",
"w dni robocze",
"poniedziałek-piątek",
"poniedziałek",
"wtorek",
"środa",
"czwartek",
"piątek",
"sobota",
"niedziela"
],
"phone number": [
"514 312 231",
"123 987 231",
"432 112 453"
]
},
"card": {
"lost": [
"zgłosić zgubienie pod numere 513 231 211",
"zgłosić w głównej filii biblioteki"
],
"destroyed": [
"zgłosić zgubienie pod numere 513 231 211",
"zgłosić w głównej filii biblioteki"
],
"new": [
"formularz karty znajduje się pod adresem LINK",
"konieczna jest akceptacja regulaminu",
"karta będzie do odbioru za 14 dni w głównej filii"
]
},
"date":{
"day":[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"31"
],
"month":[
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12"
],
"year":[
"1977",
"1978",
"1979",
"1980",
"1981",
"1982",
"1983",
"1984",
"1985",
"1986",
"1987",
"1988",
"1989",
"1990",
"1991",
"1992",
"1993",
"1994",
"1995",
"1996",
"1997",
"1998",
"1999",
"2000",
"2001",
"2002",
"2003",
"2004",
"2005",
"2006",
"2007",
"2008",
"2009",
"2010",
"2011",
"2012",
"2013",
"2014",
"2015",
"2016",
"2017",
"2018",
"2019",
"2020"
]
}
}