From 5ba45186a13a711bba20b7b95c1f43f1982699d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julian=20Zab=C5=82o=C5=84ski?= <julzab4@st.amu.edu.pl>
Date: Wed, 8 Jun 2022 09:25:32 +0200
Subject: [PATCH] Zaktualizuj 'dialogue_system.py'

fix
---
 dialogue_system.py | 40 +++++++++++++++++++++++++++-------------
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/dialogue_system.py b/dialogue_system.py
index da322ab..dc90163 100644
--- a/dialogue_system.py
+++ b/dialogue_system.py
@@ -1,11 +1,11 @@
 from modules.NLU import NLU
 from modules.DST import DST
-from modules.DP import DP
+# from modules.DP import DP
 from modules.NLG import NLG
 import json
 import re
 
-value_dict = json.load(open('value_dict.json'))
+value_dict = json.load(open(r'C:\Users\User\VisualStudio\Diagramy\aitech-sd-lab\modules\value_dict.json'))
 
 def format_prediction(prediction, intent):
     out_list = []
@@ -26,7 +26,7 @@ def format_prediction(prediction, intent):
 def main():
     nlu = NLU()
     dst = DST()
-    dp = DP()
+    # dp = DP()
     nlg = NLG()
     
     nlu.train_slot_model('data/train+test-pl.conllu', 'data/train+test-pl.conllu')
@@ -47,17 +47,16 @@ def main():
         slots = nlu.predict_slots(user_input)
         intent = nlu.predict_intent(user_input)
         formatted_prediction = format_prediction(slots, intent)
+        print(formatted_prediction)
         for slot in formatted_prediction:
             if slot[2]=='seat':
-                if ',' in slot[3]:  # ???
+                if ',' in slot[3]:
                     seat,row = slot[3].split(',')
                     formatted_prediction.remove(['inform', 'Cinema', 'seat', slot[3]])
                     formatted_prediction.append(['inform', 'Cinema', 'seat', seat])
                     formatted_prediction.append(['inform', 'Cinema', 'row', f' {row}'])
         
-        if format_prediction == []:
-            print('Czy mogę w czymś jeszcze pomóc? ')
-
+        
         if user_input_lr == '/pomoc':
             print('TEKST_POMOCY_WIP')
 
@@ -67,6 +66,7 @@ def main():
 
         elif 'rezerw' in user_input_lr:
             if 'anulo' in user_input_lr:
+                flag=False 
                 for slot in slots:
                     if slot == 'B-e-mail' or '@' in slot[0]:
                         print(nlg.update([['cinema','inform','cancel_book',slot[0]]]))
@@ -91,8 +91,9 @@ def main():
                             elif slot in ["cancel_book_status","cancel_buy_status"] and value =='':
                                 continue
         elif 'kup' in user_input_lr or ('zwr' and 'bilet') in user_input_lr:
-
+            
             if 'anulo' in user_input_lr or 'zwr' in user_input_lr:
+                flag=False 
                 for slot in slots:
                     if slot == 'B-e-mail' or '@' in slot[0]:
                         print(nlg.update([['cinema','inform','cancel_buy',slot[0]]]))
@@ -118,18 +119,30 @@ def main():
                             elif slot in ["cancel_book_status","cancel_buy_status"] and value =='':
                                 continue
                       
-        elif (('jak' or 'któr') and 'film') in user_input_lr or 'repertuar' in user_input_lr:   
+        elif (('jak' or 'któr') and 'film') in user_input_lr or 'repertuar' in user_input_lr:  
             dst.update([['inform', 'Cinema', 'task', 'show_movies']])
+            print(dst.state)
+            flag=False 
             for slot in slots:
                 if slot[0] in value_dict['train']['date'] or slot[0] in value_dict['train']['day'] or slot[0] in ['dziś','jutro','pojutrze']:
-                    print(nlg.update([['cinema','inform','closestscreening',slot[0]]]))
+                    print(nlg.update([['cinema','offer','closestscreening',slot[0]]]))
                     flag = True
             if not flag:
-                print(nlg.update([['cinema','inform','closestscreening','']]))
+                print(nlg.update([['cinema','offer','closestscreening','']]))
 
         elif (('czy' or 'jakie' or 'które') and ('dostęp' or 'woln' or 'zajęt') and 'miejsc') in user_input_lr:
             dst.update([['offer', 'Cinema', 'task', 'show_seats']])
-            print(nlg.update([['cinema','offer','seat','']]))
+            print(dst.state)
+            flag=False 
+            for slot in slots:
+                if slot[0] in value_dict['train']['seat']:
+                    print(nlg.update([['cinema','offer','seat',slot[0]]]))
+                    flag = True
+            if not flag:
+                print(nlg.update([['cinema','offer','seat','']]))
+            
+        elif len(formatted_prediction)<1:
+            print('Nie do końca zrozumiałem mógłbyś/mogłabyś powtórzyć? ')
 
         else:
             print(formatted_prediction) # NLU output
@@ -144,7 +157,7 @@ def main():
                     for slot,value in dst.state['belief_state']['cinema']['semi'].items():
                         if slot == 'payments' and value == '':
                             print('Czy chciałbyś dokonać płatności online?')
-                            input_user = input('> ')
+                            input_user = input()
                             if input_user.lower() == 'tak':
                                 print(nlg.update([['cinema','request',slot,'online']]))
                                 dst.update([['inform', 'Cinema', 'payments', 'online']])
@@ -164,3 +177,4 @@ def main():
 if __name__ == '__main__':
     main()
 
+                  
\ No newline at end of file