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 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
@ -123,7 +124,7 @@ class DP(Policy):
system_action[(domain, "NoOffer")] = []
else:
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]:
system_action[(domain, "Inform")].append(
@ -146,6 +147,7 @@ class DP(Policy):
)
# Dialogue State Tracker
class SDST(DST):
def __init__(self):

View File

@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
@ -11,16 +11,16 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Dzień dobry'"
"'Dzień dobry, witam w interaktywnej bibliotece'"
]
},
"execution_count": 2,
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@ -56,14 +56,14 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
@ -165,16 +165,18 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 6,
"metadata": {},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (<ipython-input-4-dc0d3ec9b748>, line 28)",
"output_type": "error",
"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"
]
"data": {
"text/plain": [
"'Czy ta książka to 1?'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
@ -198,14 +200,13 @@
" else:\n",
" return f'Ksiązka tego autora nie została znaleziona. Proszę podać więcej informacji.'\n",
" \n",
" # zosia:\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:\n",
" elif r==3:\n",
" return 'Książka została wypożyczona'\n",
" \n",
" if intent == 'Confirm' and domain == '' and slot == '':\n",
@ -217,15 +218,15 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Książka została wypożczyona\n",
"Po spełnieniu warunków karta zostanie założona\n"
"Tak, to będzie wszystko\n",
"Tak, to wszystko w zakresie założenia karty\n"
]
}
],
@ -262,7 +263,6 @@
" else:\n",
" return 'Tak, to wszystko'\n",
" \n",
" # zosia:\n",
" if intent=='Affirm' and domain=='create_an_account':\n",
" return 'Tak, poproszę'\n",
" \n",
@ -280,7 +280,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 8,
"metadata": {},
"outputs": [
{
@ -289,7 +289,7 @@
"'Do widzenia'"
]
},
"execution_count": 6,
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@ -317,22 +317,21 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Dobrze, dziękuję za rozmowę'"
"'Bardzo dziękuję za informację. Wszystko już wiem'"
]
},
"execution_count": 7,
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# zosia:\n",
"#######################Thankyou#################################\n",
"def nlg(system_act):\n",
" domain, intent, slot, value = system_act\n",
@ -369,22 +368,22 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Chciałbym anulować rezerwację książki'"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
"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 zarezerwować książkę Kafka Haruki Murakami\n",
"Chciałbym anulować rezerwację książki\n"
]
}
],
"source": [
"# zosia:\n",
"#######################Request#############################\n",
"def nlg(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",
"\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",
" if domain == 'book':\n",
" r = random.randint(1,5)\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",
" return 'Proszę podać tytuł i autora pozycji'\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",
" return 'Proszę podać tytuł i autora wybranej pozycji'\n",
" elif r==5:\n",
@ -452,14 +451,14 @@
" return 'Można odebrać ją w innej filli biblioteki?'\n",
"\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",
" 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ę {slot}'\n",
" return f'Chciałbym zarezerwować książkę {value}'\n",
" elif r==2:\n",
" return 'Chciałbym wypożyczyć książkę'\n",
"\n",
@ -485,11 +484,11 @@
"\n",
" \n",
" \n",
"nlg(['card', 'Request', '', ''])\n",
"nlg(['books', 'Request', 'Owoce wiśni Osamu Dazai', ''])\n",
"nlg(['return', 'Request', 'Kafka Haruki Murakami', ''])\n",
"nlg(['reservation', 'Request', 'Kafka Haruki Murakami', ''])\n",
"nlg(['reservation', 'Request', 'cancel', ''])"
"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', '']))"
]
}
],

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