Dockerize

This commit is contained in:
Bartosz 2021-06-07 16:00:53 +02:00
parent 3bea55ecea
commit feb204306f
6 changed files with 75 additions and 46 deletions

3
.dockerignore Normal file
View File

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

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

View File

@ -3,6 +3,7 @@ from convlab2.dst.rule.multiwoz.dst_util import normalize_value
from collections import defaultdict from collections import defaultdict
from convlab2.policy.policy import Policy from convlab2.policy.policy import Policy
from convlab2.util.multiwoz.dbquery import Database from convlab2.util.multiwoz.dbquery import Database
from convlab2.util.multiwoz.multiwoz_slot_trans import REF_SYS_DA, REF_USR_DA
import copy import copy
from copy import deepcopy from copy import deepcopy
import json import json
@ -123,7 +124,7 @@ class DP(Policy):
system_action[(domain, "NoOffer")] = [] system_action[(domain, "NoOffer")] = []
else: else:
for slot in user_action[user_act]: for slot in user_action[user_act]:
kb_slot_name = ref[domain].get(slot[0], slot[0]) kb_slot_name = REF_USR_DA[domain].get(slot[0], slot[0])
if kb_slot_name in self.results[0]: if kb_slot_name in self.results[0]:
system_action[(domain, "Inform")].append( system_action[(domain, "Inform")].append(
@ -146,6 +147,7 @@ class DP(Policy):
) )
# Dialogue State Tracker # Dialogue State Tracker
class SDST(DST): class SDST(DST):
def __init__(self): def __init__(self):

View File

@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": 3,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -11,16 +11,16 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 4,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"'Dzień dobry'" "'Dzień dobry, witam w interaktywnej bibliotece'"
] ]
}, },
"execution_count": 2, "execution_count": 4,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -56,14 +56,14 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 5,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Dzień fantastyki.\n", "Obecnie nie ma żadnych wydarzeń.\n",
"W przypadku zgubienia karty fakt ten można zgłosić w głównej filii biblioteki\n" "W przypadku zgubienia karty fakt ten można zgłosić w głównej filii biblioteki\n"
] ]
} }
@ -165,16 +165,18 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 6,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"ename": "SyntaxError", "data": {
"evalue": "invalid syntax (<ipython-input-4-dc0d3ec9b748>, line 28)", "text/plain": [
"output_type": "error", "'Czy ta książka to 1?'"
"traceback": [ ]
"\u001b[1;36m File \u001b[1;32m\"<ipython-input-4-dc0d3ec9b748>\"\u001b[1;36m, line \u001b[1;32m28\u001b[0m\n\u001b[1;33m elif:\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" },
] "execution_count": 6,
"metadata": {},
"output_type": "execute_result"
} }
], ],
"source": [ "source": [
@ -198,14 +200,13 @@
" else:\n", " else:\n",
" return f'Ksiązka tego autora nie została znaleziona. Proszę podać więcej informacji.'\n", " return f'Ksiązka tego autora nie została znaleziona. Proszę podać więcej informacji.'\n",
" \n", " \n",
" # zosia:\n",
" if domain == 'reservation' and intent == 'Confirm':\n", " if domain == 'reservation' and intent == 'Confirm':\n",
" r = random.randint(1, 3)\n", " r = random.randint(1, 3)\n",
" if r==1:\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", " 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", " 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", " return 'Możesz zarezerwować tę pozycję. Będzie czekać na Ciebie w naszej placówce przez następnych 5 dni roboczych.'\n",
" elif:\n", " elif r==3:\n",
" return 'Książka została wypożyczona'\n", " return 'Książka została wypożyczona'\n",
" \n", " \n",
" if intent == 'Confirm' and domain == '' and slot == '':\n", " if intent == 'Confirm' and domain == '' and slot == '':\n",
@ -217,15 +218,15 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 7,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Książka została wypożczyona\n", "Tak, to będzie wszystko\n",
"Po spełnieniu warunków karta zostanie założona\n" "Tak, to wszystko w zakresie założenia karty\n"
] ]
} }
], ],
@ -262,7 +263,6 @@
" else:\n", " else:\n",
" return 'Tak, to wszystko'\n", " return 'Tak, to wszystko'\n",
" \n", " \n",
" # zosia:\n",
" if intent=='Affirm' and domain=='create_an_account':\n", " if intent=='Affirm' and domain=='create_an_account':\n",
" return 'Tak, poproszę'\n", " return 'Tak, poproszę'\n",
" \n", " \n",
@ -280,7 +280,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 8,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -289,7 +289,7 @@
"'Do widzenia'" "'Do widzenia'"
] ]
}, },
"execution_count": 6, "execution_count": 8,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -317,22 +317,21 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": 9,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"'Dobrze, dziękuję za rozmowę'" "'Bardzo dziękuję za informację. Wszystko już wiem'"
] ]
}, },
"execution_count": 7, "execution_count": 9,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"# zosia:\n",
"#######################Thankyou#################################\n", "#######################Thankyou#################################\n",
"def nlg(system_act):\n", "def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n", " domain, intent, slot, value = system_act\n",
@ -369,22 +368,22 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": 11,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "name": "stdout",
"text/plain": [ "output_type": "stream",
"'Chciałbym anulować rezerwację książki'" "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",
"execution_count": 9, "Chciałabym zwrócić książkę Kafka Haruki Murakami\n",
"metadata": {}, "Chciałbym zarezerwować książkę Kafka Haruki Murakami\n",
"output_type": "execute_result" "Chciałbym anulować rezerwację książki\n"
]
} }
], ],
"source": [ "source": [
"# zosia:\n",
"#######################Request#############################\n", "#######################Request#############################\n",
"def nlg(system_act):\n", "def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n", " domain, intent, slot, value = system_act\n",
@ -424,16 +423,16 @@
" return 'Chciałabym sprawdzić, czy mam jakieś wypożyczone książki'\n", " return 'Chciałabym sprawdzić, czy mam jakieś wypożyczone książki'\n",
"\n", "\n",
" if domain == 'books':\n", " if domain == 'books':\n",
" return f'Czy książka {slot}, znajduje się w bibliotece w formie ebooka?'\n", " return f'Czy książka {value}, znajduje się w bibliotece w formie ebooka?'\n",
"\n", "\n",
" if domain == 'book':\n", " if domain == 'book':\n",
" r = random.randint(1,5)\n", " r = random.randint(1,5)\n",
" if r==1:\n", " if r==1:\n",
" return f'Chciałabym wypożyczyć książkę {slot}'\n", " return f'Chciałabym wypożyczyć książkę {value}'\n",
" elif r==2:\n", " elif r==2:\n",
" return 'Proszę podać tytuł i autora pozycji'\n", " return 'Proszę podać tytuł i autora pozycji'\n",
" elif r==3:\n", " elif r==3:\n",
" return f'Czy posiadacie książke {slot}?'\n", " return f'Czy posiadacie książke {value}?'\n",
" elif r==4:\n", " elif r==4:\n",
" return 'Proszę podać tytuł i autora wybranej pozycji'\n", " return 'Proszę podać tytuł i autora wybranej pozycji'\n",
" elif r==5:\n", " elif r==5:\n",
@ -452,14 +451,14 @@
" return 'Można odebrać ją w innej filli biblioteki?'\n", " return 'Można odebrać ją w innej filli biblioteki?'\n",
"\n", "\n",
" if domain == 'return':\n", " if domain == 'return':\n",
" return f'Chciałabym zwrócić książkę {slot}'\n", " return f'Chciałabym zwrócić książkę {value}'\n",
"\n", "\n",
" if domain == 'reservation':\n", " if domain == 'reservation':\n",
" r = random.randint(1,2)\n", " r = random.randint(1,2)\n",
" if slot=='cancel':\n", " if slot=='cancel':\n",
" return 'Chciałbym anulować rezerwację książki'\n", " return 'Chciałbym anulować rezerwację książki'\n",
" if r==1:\n", " if r==1:\n",
" return f'Chciałbym zarezerwować książkę {slot}'\n", " return f'Chciałbym zarezerwować książkę {value}'\n",
" elif r==2:\n", " elif r==2:\n",
" return 'Chciałbym wypożyczyć książkę'\n", " return 'Chciałbym wypożyczyć książkę'\n",
"\n", "\n",
@ -485,11 +484,11 @@
"\n", "\n",
" \n", " \n",
" \n", " \n",
"nlg(['card', 'Request', '', ''])\n", "print(nlg(['card', 'Request', '', '']))\n",
"nlg(['books', 'Request', 'Owoce wiśni Osamu Dazai', ''])\n", "print(nlg(['books', 'Request', '', 'Owoce wiśni Osamu Dazai']))\n",
"nlg(['return', 'Request', 'Kafka Haruki Murakami', ''])\n", "print(nlg(['return', 'Request', '', 'Kafka Haruki Murakami']))\n",
"nlg(['reservation', 'Request', 'Kafka Haruki Murakami', ''])\n", "print(nlg(['reservation', 'Request', '', 'Kafka Haruki Murakami']))\n",
"nlg(['reservation', 'Request', 'cancel', ''])" "print(nlg(['reservation', 'Request', 'cancel', '']))"
] ]
} }
], ],

9
docker-compose.yml Normal file
View File

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

1
l08/ConvLab-2 Submodule

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