add form token

This commit is contained in:
s444417 2022-05-23 07:53:43 +02:00
parent b8e4adfe93
commit ac5ed0c0fc
3 changed files with 82 additions and 76 deletions

View File

@ -82,7 +82,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": 1,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -155,7 +155,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 2,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -172,7 +172,7 @@
"'<table>\\n<tbody>\\n<tr><td style=\"text-align: right;\">1</td><td>wybieram</td><td>inform</td><td>O </td></tr>\\n<tr><td style=\"text-align: right;\">2</td><td>batmana </td><td>inform</td><td>B-title</td></tr>\\n</tbody>\\n</table>'" "'<table>\\n<tbody>\\n<tr><td style=\"text-align: right;\">1</td><td>wybieram</td><td>inform</td><td>O </td></tr>\\n<tr><td style=\"text-align: right;\">2</td><td>batmana </td><td>inform</td><td>B-title</td></tr>\\n</tbody>\\n</table>'"
] ]
}, },
"execution_count": 14, "execution_count": 2,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -184,7 +184,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 15, "execution_count": 3,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -202,7 +202,7 @@
"'<table>\\n<tbody>\\n<tr><td style=\"text-align: right;\">1</td><td>chcę </td><td>inform</td><td>O </td></tr>\\n<tr><td style=\"text-align: right;\">2</td><td>zarezerwować</td><td>inform</td><td>B-goal</td></tr>\\n<tr><td style=\"text-align: right;\">3</td><td>bilety </td><td>inform</td><td>O </td></tr>\\n</tbody>\\n</table>'" "'<table>\\n<tbody>\\n<tr><td style=\"text-align: right;\">1</td><td>chcę </td><td>inform</td><td>O </td></tr>\\n<tr><td style=\"text-align: right;\">2</td><td>zarezerwować</td><td>inform</td><td>B-goal</td></tr>\\n<tr><td style=\"text-align: right;\">3</td><td>bilety </td><td>inform</td><td>O </td></tr>\\n</tbody>\\n</table>'"
] ]
}, },
"execution_count": 15, "execution_count": 3,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -213,7 +213,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 16, "execution_count": 4,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -232,7 +232,7 @@
"'<table>\\n<tbody>\\n<tr><td style=\"text-align: right;\">1</td><td>chciałbym </td><td>inform</td><td>O</td></tr>\\n<tr><td style=\"text-align: right;\">2</td><td>anulować </td><td>inform</td><td>O</td></tr>\\n<tr><td style=\"text-align: right;\">3</td><td>rezerwację</td><td>inform</td><td>O</td></tr>\\n<tr><td style=\"text-align: right;\">4</td><td>biletu </td><td>inform</td><td>O</td></tr>\\n</tbody>\\n</table>'" "'<table>\\n<tbody>\\n<tr><td style=\"text-align: right;\">1</td><td>chciałbym </td><td>inform</td><td>O</td></tr>\\n<tr><td style=\"text-align: right;\">2</td><td>anulować </td><td>inform</td><td>O</td></tr>\\n<tr><td style=\"text-align: right;\">3</td><td>rezerwację</td><td>inform</td><td>O</td></tr>\\n<tr><td style=\"text-align: right;\">4</td><td>biletu </td><td>inform</td><td>O</td></tr>\\n</tbody>\\n</table>'"
] ]
}, },
"execution_count": 16, "execution_count": 4,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -251,7 +251,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 26, "execution_count": 5,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -288,20 +288,20 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": 6,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Corpus: 345 train + 38 dev + 32 test sentences\n", "Corpus: 346 train + 38 dev + 32 test sentences\n",
"Dictionary with 20 tags: <unk>, O, B-interval, I-interval, B-title, B-date, I-date, B-time, B-quantity, B-area, I-area, B-goal, I-goal, I-title, I-time, I-quantity, B-seats, I-seats, <START>, <STOP>\n" "Dictionary with 78 tags: <unk>, O, O/reqmore, B-interval/reqmore, I-interval/reqmore, O/inform, B-title/inform, B-date/inform, I-date/inform, B-time/inform, B-quantity/inform, B-area/inform, I-area/inform, B-goal/inform, O/bye, O/hello, O/reqmore inform, B-goal/reqmore inform, I-goal/reqmore inform, B-date/reqmore inform, B-interval/reqmore inform, O/null, O/help, B-goal/reqmore, I-goal/reqmore, B-title/reqmore, B-title/reqmore inform, I-title/reqmore inform, O/ack, O/reqalts\n"
] ]
} }
], ],
"source": [ "source": [
"def conllu2flair(sentences, label=None):\n", "def conllu2flair(sentences, label1=None, label2=None):\n",
" fsentences = []\n", " fsentences = []\n",
"\n", "\n",
" for sentence in sentences:\n", " for sentence in sentences:\n",
@ -310,16 +310,19 @@
" for token in sentence:\n", " for token in sentence:\n",
" ftoken = Token(token['form'])\n", " ftoken = Token(token['form'])\n",
"\n", "\n",
" if label:\n", " if label1:\n",
" ftoken.add_tag(label, token[label])\n", " if label2:\n",
"\n", " ftoken.add_tag(label1, token[label1] + \"/\" + token[label2])\n",
" else:\n",
" ftoken.add_tag(label1, token[label1])\n",
" \n",
" fsentence.add_token(ftoken)\n", " fsentence.add_token(ftoken)\n",
"\n", "\n",
" fsentences.append(fsentence)\n", " fsentences.append(fsentence)\n",
"\n", "\n",
" return SentenceDataset(fsentences)\n", " return SentenceDataset(fsentences)\n",
"\n", "\n",
"corpus = Corpus(train=conllu2flair(trainset, 'slot'), test=conllu2flair(testset, 'slot'))\n", "corpus = Corpus(train=conllu2flair(trainset, 'slot', \"frame\"), test=conllu2flair(testset, 'slot', \"frame\"))\n",
"print(corpus)\n", "print(corpus)\n",
"tag_dictionary = corpus.make_tag_dictionary(tag_type='slot')\n", "tag_dictionary = corpus.make_tag_dictionary(tag_type='slot')\n",
"print(tag_dictionary)" "print(tag_dictionary)"
@ -334,7 +337,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 19, "execution_count": 7,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -361,7 +364,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 20, "execution_count": 8,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -396,7 +399,7 @@
" (locked_dropout): LockedDropout(p=0.5)\n", " (locked_dropout): LockedDropout(p=0.5)\n",
" (embedding2nn): Linear(in_features=4446, out_features=4446, bias=True)\n", " (embedding2nn): Linear(in_features=4446, out_features=4446, bias=True)\n",
" (rnn): LSTM(4446, 256, batch_first=True, bidirectional=True)\n", " (rnn): LSTM(4446, 256, batch_first=True, bidirectional=True)\n",
" (linear): Linear(in_features=512, out_features=20, bias=True)\n", " (linear): Linear(in_features=512, out_features=78, bias=True)\n",
" (beta): 1.0\n", " (beta): 1.0\n",
" (weights): None\n", " (weights): None\n",
" (weight_tensor) None\n", " (weight_tensor) None\n",
@ -417,7 +420,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 21, "execution_count": 9,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -479,14 +482,14 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 22, "execution_count": 10,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"2022-05-05 17:34:34,767 loading file slot-model/final-model.pt\n" "2022-05-22 15:25:19,970 loading file slot-model/final-model.pt\n"
] ]
} }
], ],
@ -504,16 +507,16 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 42, "execution_count": 11,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"[('kiedy', 'O'), ('gracie', 'O'), ('film', 'O'), ('zorro', 'B-title')]" "[('co', 'O/reqmore'), ('gracie', 'O/reqmore'), ('obecnie', 'O/reqmore')]"
] ]
}, },
"execution_count": 42, "execution_count": 11,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -525,7 +528,7 @@
" model.predict(fsentence)\n", " model.predict(fsentence)\n",
" return [(token, ftoken.get_tag('slot').value) for token, ftoken in zip(sentence, fsentence)]\n", " return [(token, ftoken.get_tag('slot').value) for token, ftoken in zip(sentence, fsentence)]\n",
"\n", "\n",
"predict(model, 'kiedy gracie film zorro'.split())" "predict(model, 'co gracie obecnie'.split())"
] ]
}, },
{ {
@ -538,7 +541,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 24, "execution_count": 12,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -546,18 +549,18 @@
"text/html": [ "text/html": [
"<table>\n", "<table>\n",
"<tbody>\n", "<tbody>\n",
"<tr><td>kiedy </td><td>O </td></tr>\n", "<tr><td>kiedy </td><td>O/reqmore</td></tr>\n",
"<tr><td>gracie</td><td>O </td></tr>\n", "<tr><td>gracie</td><td>O/reqmore</td></tr>\n",
"<tr><td>film </td><td>O </td></tr>\n", "<tr><td>film </td><td>O/reqmore</td></tr>\n",
"<tr><td>zorro </td><td>B-title</td></tr>\n", "<tr><td>zorro </td><td>O/reqmore</td></tr>\n",
"</tbody>\n", "</tbody>\n",
"</table>" "</table>"
], ],
"text/plain": [ "text/plain": [
"'<table>\\n<tbody>\\n<tr><td>kiedy </td><td>O </td></tr>\\n<tr><td>gracie</td><td>O </td></tr>\\n<tr><td>film </td><td>O </td></tr>\\n<tr><td>zorro </td><td>B-title</td></tr>\\n</tbody>\\n</table>'" "'<table>\\n<tbody>\\n<tr><td>kiedy </td><td>O/reqmore</td></tr>\\n<tr><td>gracie</td><td>O/reqmore</td></tr>\\n<tr><td>film </td><td>O/reqmore</td></tr>\\n<tr><td>zorro </td><td>O/reqmore</td></tr>\\n</tbody>\\n</table>'"
] ]
}, },
"execution_count": 24, "execution_count": 12,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -568,17 +571,19 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 82, "execution_count": 2,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "ename": "NameError",
"output_type": "stream", "evalue": "name 'testset' is not defined",
"text": [ "output_type": "error",
"stats: \n", "traceback": [
"precision: 0.8076923076923077\n", "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"recall: 0.4117647058823529\n", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"f1: 0.5454545454545454\n" "\u001b[1;32mc:\\Develop\\wmi\\AITECH\\sem1\\Systemy dialogowe\\lab\\08-parsing-semantyczny-uczenie(zmodyfikowany).ipynb Cell 25'\u001b[0m in \u001b[0;36m<cell line: 40>\u001b[1;34m()\u001b[0m\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=36'>37</a>\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mrecall: \u001b[39m\u001b[39m\"\u001b[39m, recallScore)\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=37'>38</a>\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mf1: \u001b[39m\u001b[39m\"\u001b[39m, f1Score)\n\u001b[1;32m---> <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=39'>40</a>\u001b[0m \u001b[39meval\u001b[39;49m()\n",
"\u001b[1;32mc:\\Develop\\wmi\\AITECH\\sem1\\Systemy dialogowe\\lab\\08-parsing-semantyczny-uczenie(zmodyfikowany).ipynb Cell 25'\u001b[0m in \u001b[0;36meval\u001b[1;34m()\u001b[0m\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=13'>14</a>\u001b[0m fp \u001b[39m=\u001b[39m \u001b[39m0\u001b[39m\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=14'>15</a>\u001b[0m fn \u001b[39m=\u001b[39m \u001b[39m0\u001b[39m\n\u001b[1;32m---> <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=15'>16</a>\u001b[0m sentences \u001b[39m=\u001b[39m [sentence \u001b[39mfor\u001b[39;00m sentence \u001b[39min\u001b[39;00m testset]\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=16'>17</a>\u001b[0m \u001b[39mfor\u001b[39;00m sentence \u001b[39min\u001b[39;00m sentences:\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=17'>18</a>\u001b[0m \u001b[39m# get sentence as terms list\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Develop/wmi/AITECH/sem1/Systemy%20dialogowe/lab/08-parsing-semantyczny-uczenie%28zmodyfikowany%29.ipynb#ch0000024?line=18'>19</a>\u001b[0m termsList \u001b[39m=\u001b[39m [w[\u001b[39m\"\u001b[39m\u001b[39mform\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39mfor\u001b[39;00m w \u001b[39min\u001b[39;00m sentence]\n",
"\u001b[1;31mNameError\u001b[0m: name 'testset' is not defined"
] ]
} }
], ],
@ -605,13 +610,13 @@
" # predict tags\n", " # predict tags\n",
" predTags = [tag[1] for tag in predict(model, termsList)]\n", " predTags = [tag[1] for tag in predict(model, termsList)]\n",
" \n", " \n",
" expTags = [token[\"slot\"] for token in sentence]\n", " expTags = [token[\"slot\"] + \"/\" + token[\"frame\"] for token in sentence]\n",
" for i in range(len(predTags)):\n", " for i in range(len(predTags)):\n",
" if (expTags[i] == \"O\" and expTags[i] != predTags[i]):\n", " if (expTags[i][0] == \"O\" and expTags[i] != predTags[i]):\n",
" fp += 1\n", " fp += 1\n",
" elif ((expTags[i] != \"O\") & (predTags[i] == \"O\")):\n", " elif ((expTags[i][0] != \"O\") & (predTags[i][0] == \"O\")):\n",
" fn += 1\n", " fn += 1\n",
" elif ((expTags[i] != \"O\") & (predTags[i] == expTags[i])):\n", " elif ((expTags[i][0] != \"O\") & (predTags[i] == expTags[i])):\n",
" tp += 1\n", " tp += 1\n",
"\n", "\n",
" precisionScore = precision(tp, fp)\n", " precisionScore = precision(tp, fp)\n",
@ -645,7 +650,7 @@
"author": "Marek Kubis", "author": "Marek Kubis",
"email": "mkubis@amu.edu.pl", "email": "mkubis@amu.edu.pl",
"interpreter": { "interpreter": {
"hash": "2be5faf79681da6f2a61fdfdd5405d65d042280f7fba6178067603e3a2925119" "hash": "2f9d6cf1e3d8195079a65c851de355134a77367bcd714b1a5d498c42d3c07114"
}, },
"jupytext": { "jupytext": {
"cell_metadata_filter": "-all", "cell_metadata_filter": "-all",
@ -653,7 +658,7 @@
"notebook_metadata_filter": "-all" "notebook_metadata_filter": "-all"
}, },
"kernelspec": { "kernelspec": {
"display_name": "Python 3.10.4 64-bit", "display_name": "Python 3.8.3 64-bit",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },

View File

@ -19,9 +19,9 @@
# text: o której godzinie w piątek mogę zobaczyć na noże # text: o której godzinie w piątek mogę zobaczyć na noże
# intent: reqmore inform # intent: reqmore inform
# slots: októrejgodzinie:goal,wpiątek:date,nanoże:title # slots: októrejgodzinie:goal,wpiątek:date,nanoże:title
1 o reqmore inform B-goal 1 o reqmore inform B-time
2 której reqmore inform I-goal 2 której reqmore inform I-time
3 godzinie reqmore inform I-goal 3 godzinie reqmore inform I-time
4 w reqmore inform NoLabel 4 w reqmore inform NoLabel
5 piątek reqmore inform B-date 5 piątek reqmore inform B-date
6 mogę reqmore inform NoLabel 6 mogę reqmore inform NoLabel
@ -237,11 +237,11 @@
# slots: 1:quantity # slots: 1:quantity
1 1 inform B-quantity 1 1 inform B-quantity
# text: jakie sš dostępne ulgi # text: jakie są dostępne ulgi
# intent: nan # intent: nan
# slots: # slots:
1 jakie NoLabel 1 jakie NoLabel
2 sš NoLabel 2 są NoLabel
3 dostępne NoLabel 3 dostępne NoLabel
4 ulgi NoLabel 4 ulgi NoLabel

View File

@ -561,12 +561,12 @@
2 potrafisz help NoLabel 2 potrafisz help NoLabel
# text: jakie są najbliższe seanse # text: jakie są najbliższe seanse
# intent: inform # intent: reqmore
# slots: # slots:
1 jakie inform B-goal 1 jakie reqmore NoLabel
2 są inform I-goal 2 są reqmore NoLabel
3 najbliższe inform I-goal 3 najbliższe reqmore B-interval
4 seanse inform I-goal 4 seanse reqmore NoLabel
# text: a jakie są dostępne # text: a jakie są dostępne
# intent: reqmore # intent: reqmore
@ -729,7 +729,7 @@
5 grają reqmore NoLabel 5 grają reqmore NoLabel
6 jakieś reqmore NoLabel 6 jakieś reqmore NoLabel
7 stare reqmore NoLabel 7 stare reqmore NoLabel
8 filmy reqmore NoLabel 8 filmy reqmore B-title
# text: to dziękuję # text: to dziękuję
# intent: thankyou # intent: thankyou
@ -808,14 +808,14 @@
3 film inform NoLabel 3 film inform NoLabel
# text: jakie filmy są teraz w kinach # text: jakie filmy są teraz w kinach
# intent: request # intent: reqmore
# slots: jakiefilmysą:goal # slots: jakiefilmysą:goal
1 jakie request B-goal 1 jakie reqmore B-goal
2 filmy request I-goal 2 filmy reqmore I-goal
3 są request I-goal 3 są reqmore I-goal
4 teraz request NoLabel 4 teraz reqmore B-interval
5 w request NoLabel 5 w reqmore NoLabel
6 kinach request NoLabel 6 kinach reqmore NoLabel
# text: poproszę 3x bilet na ambulans # text: poproszę 3x bilet na ambulans
# intent: inform # intent: inform
@ -1824,13 +1824,13 @@
# slots: # slots:
1 witam hello NoLabel 1 witam hello NoLabel
# text: jakie sš najbliższe seanse # text: jakie są najbliższe seanse
# intent: reqmore # intent: reqmore
# slots: najbliższeseanse:goal # slots: najbliższeseanse:goal
1 jakie reqmore NoLabel 1 jakie reqmore NoLabel
2 sš reqmore NoLabel 2 są reqmore NoLabel
3 najbliższe reqmore B-goal 3 najbliższe reqmore B-interval
4 seanse reqmore I-goal 4 seanse reqmore B-goal
# text: w jakim to kinie # text: w jakim to kinie
# intent: reqmore # intent: reqmore
@ -2525,7 +2525,7 @@
1 niech ack NoLabel 1 niech ack NoLabel
2 będzie ack NoLabel 2 będzie ack NoLabel
# text: jakieś potwierdzenie rezerwacji dostanę czy mogę po prostu wejść i usišść # text: jakieś potwierdzenie rezerwacji dostanę czy mogę po prostu wejść i usiąść
# intent: request # intent: request
# slots: # slots:
1 jakieś request NoLabel 1 jakieś request NoLabel
@ -2538,7 +2538,7 @@
8 prostu request NoLabel 8 prostu request NoLabel
9 wejść request NoLabel 9 wejść request NoLabel
10 i request NoLabel 10 i request NoLabel
11 usišść request NoLabel 11 usiąść request NoLabel
# text: wybieram batmana o 16:20 # text: wybieram batmana o 16:20
# intent: inform # intent: inform
@ -2853,14 +2853,15 @@
2 filmy inform B-goal 2 filmy inform B-goal
3 są inform NoLabel 3 są inform NoLabel
4 wieczorem inform B-interval 4 wieczorem inform B-interval
# text: co gracie za trzy dni # text: co gracie za trzy dni
# intent: inform # intent: inform
# slots: zatrzydni:date # slots: zatrzydni:date
1 co inform NoLabel 1 co reqmore NoLabel
2 gracie inform NoLabel 2 gracie reqmore NoLabel
3 za inform B-date 3 za reqmore B-date
4 trzy inform I-date 4 trzy reqmore I-date
5 dni inform I-date 5 dni reqmore I-date
# text: co gracie za dwa dni # text: co gracie za dwa dni
# intent: inform # intent: inform