text: import json
  '''
  price range : dontcare
  ################  बहुत पैसा खर्च नहीं ################
  -- कोई भी मूल्य सीमा में चलेगा 
  -- कोई भी कीमत सीमा ठीक है।
  -- किसी भी प्राइस रेंज का चलेगा
  -- किसी भी कीमत रेंज में।
  -- कुछ भी प्राइस रेंज चलेगा।
  -- मुझे कीमत से फर्क नहीं पड़ता।
  -- उससे फर्क नहीं पड़ता।
  -- कीमत कुछ भी चलेगी।
  -- मुझे मूल्य से कोई मतलब नहीं है
  -- कीमत की परवाह मत करो
  -- नहीं कीमत मायने नहीं रखती है 
  -- मूल्य सीमा के बारे में कोई वरीयता नहीं।
  -- नहीं मेरी कोई भी परेफरेंस नहीं है। 
  -- मूल्य सीमा के साथ कोई समस्या नहीं है। 
  -- मेरी मूल्य सीमा की कोई वरीयता नहीं है।
  '''
  
  '''
  area : dontcare
  ########### किसी भी जगह चलेगा ############
  -- किसी भी एरिया में चलेगा 
  -- शहर का कोई भी हिस्सा ठीक  है।
  -- शहर के किसी भी हिस्से में
  -- किसी भी इलाके में
  -- मुझे जगह से कोई फर्क नहीं पड़ता।
  -- मुझे क्षेत्र से कोई फर्क नहीं पड़ता
  -- शहर का कोई भी क्षेत्र ठीक होगा।
  -- कहीं भी हो।
  -- कहीं भी चलेगा। 
  -- कोई खास जगह नहीं।
  -- किसी भी क्षेत्र में चलेगा।
  -- कोई भी क्षेत्र।
  -- कोई निश्चित जगह नहीं है
  '''
  
  '''
  food : dontcare
  ############### खाने में कुछ खास नहीं ##############
  -- किसी भी प्रकार का भोजन चलेगा।
  -- किसी भी प्रकार का रेस्तरां ठीक रहेगा।
  -- कुछ भी भोजन चलेगा।
  -- कोई भी भोजन चलेगा
  -- कुछ भी चलेगा।
  -- कैसा भी खाना चलेगा।
  -- बताइये क्या उपलब्ध है।
  -- भोजन के प्रकार से कोई फर्क नहीं पड़ता है
  -- मुझे खाने के प्रकार से कोई फर्क नहीं पड़ता है 
  -- मेरे पास भोजन कोई प्राथमिकता नहीं है।
  -- भोजन के प्रकार की परवाह नहीं है।
  -- आप भोजन की जो भी सलाह दे
  '''
  
  '''
  request
  '''
  
  
  #f = open("woz_validate_hin.json",)
  f = open("woz_train_hin.json",)
  
  data = json.load(f)
  print("Total Dialogues: ", len(data))
  print ("###############################################")
  wrong_req = []
  wrong_food = []
  wrong_area = []
  wrong_price = []
  semantic_dict = {	"चाइनीस": ["चाइनीज़", "चाइनीज", "चीनी", "चाइनीस", "नूडल्स", "चाउमीन", "मैगी"],
  					"अफ्रीकन":["अफ्रीकन", "अफ्रीका"],
  		            "साउथ इंडियन":["साउथ इंडियन", "साऊथ इंडियन", "दक्षिण भारतीय", "ढोसा", "डोसा", "इडली", "सांभर", "उत्तपम", "पोंगल", "उपमा", "फ्राइड राइस"],
  		            "पंजाबी":["पंजाबी", "मक्के की रोटी सरसों का साग", "सरसों का साग मक्के की रोटी", "छोले भटूरे", "छोला भटूरा", "तंदूरी", "लस्सी"],
  		            "कोरियन":["कोरियन", "कोरियाई"],
  		            "सिंधी":["सिंधी", "सिन्धी"],
  		            "इंडोनेशियन":["इंडोनेशियन", "इंडोनेशियाई"],
  		            "बंगाली":["बंगाली", "बंगाल", "संदेश", "रसगुल्ला"],
  		            "ऑस्ट्रेलियन":["ऑस्ट्रेलियन", "ऑस्ट्रेलियाई", "ऑस्ट्रेलिया"],
  		            "मलेशियन":["मलेशियन", "मलेशियाई"],
  		            "यूरोपियन":["यूरोपियन", "यूरोप", "बर्गर"],
  		            "ब्राजीलियन":["ब्राजीलियन", "ब्राजील"],
  		            "शाकाहारी":["शाकाहारी", "वेजिटेरियन", "वेज", "पनीर", "समोसा", "समोसे", "चिल्ली पोटैटो"],
  		            "जैपनीज":["जैपनीज", "जैपनीज़"], 
  		            "स्पेनिश":["स्पेनिश", "स्पेन"],
  		            "अफगान":["अफगान", "अफगानिस्तानी", "अफगानी"],
  		            "फ्रेंच":["फ्रेंच", "फ्रांसीसी"],
  		            "इंटरनेशनल":["इंटरनेशनल", "अंतरराष्ट्रीय"],
  		            "मराठी":["मराठी", "पोहा जलेबी", "पोहा", "जलेबी", "वडा पाव", "वडापाव", "पाव", "श्रीखंड"],
  		            "इटालियन":["इटालियन", "इटैलियन", "पिज्जा", "पिज़्ज़ा"],
  		            "गुजराती":["गुजराती", "गुजरती", "ढोकला", "खांडवी", "खाखरा", "घूघरा"],
  		            "राजस्थानी":["राजस्थानी", "दाल बाटी", "प्याज कचोरी", "राजस्थानी कढ़ी", "घेवर", "बालूशाही"],
  		            "हैदराबादी बिरयानी":["हैदराबादी बिरयानी", "हैदराबादी बिरियानी"],
  		            "सी फूड":["सी फूड", "सी फ़ूड", "मछली"],
  		            "ब्रिटिश":["ब्रिटिश", "लंदन", "इंग्लिश"],
  		            "मेडिटरेनियन":["मेडिटरेनियन", "मेडिटेरियन", "मेडिटेरेनियन"],
  		            "मैक्सिकन":["मैक्सिकन", "मैंक्सिकन"],
  		            "एशियन ओरिएंटल":["एशियन ओरिएंटल", "एशियाई"],
  		            "तुर्किश":["तुर्किश", "तुर्कीश"],
  		            "नेपाली":["नेपाली", "मोमोज", "मोमोज"],
  		            "dontcare":["dontcare"],
  		            "सस्ता": ["सस्ते", "सस्ता", "किफायती", "गरीब", "सस्ती", "बजट", "कर्ज", "कम कीमत", "अफोर्ड कर पाउँगा", "लो प्राइस", "छोटा मोटा","छोटे मोटे"],
              		"मध्यम": ["मध्यम", "माध्यम", "उचित", "नाकि बहुत महंगा हो और नाहि बहुत सस्ता", "ठीक ठाक", "कृपया बहुत महंगा नहीं", "ज्यादा महंगा न", "मध्यमी", "ना ज्यादा महंगा और ना ही ज्यादा सस्ता", "बीच का"],
              		"महंगा": ["मेहेंगे", "मेहेंगा", "मेहंगा", "महेंगे", "महँगा", "मेहँगे", "महंगी", "महंगे", "बढ़िया", "बढ़िया", "महंगा", "फैंसी", "उच्च गुणवत्ता", "आलिशान", "आलीशान", "शानदार", "बेहतेरीन", "उत्कृष्ट", "उच्च कोटि", "हाई इन्ड", "आकर्षक", "अपस्केल"],
              		"केंद्र": ["सेंटर", "केंद्रीय", "बीच", "मध्य", "केंद्र", "सेंट्रल", "बीचो बीच", "बीचों बीच", "मेन"],
              		"पूर्व": ["पूर्व", "पूर्वी", "पूरब", "पूरव", "ईस्ट", "ईस्टर्न"],
              		"दक्षिण": ["दक्षिण", "दाक्षिण", "दक्षिणी", "साउथ", "निचला", "साउदर्न"],
              		"पश्चिम": ["पश्चिमी", "पश्चिन", "पक्षिम", "पश्चिम", "वेस्टर्न", "वेस्ट"],
              		"उत्तर": ["उत्तर", "ऊपर", "नॉर्थ", "उत्तरी", "नॉर्दन", "नॉर्दर्न"]
  		            }
  
  def check_value(value, transcript):
  	flag = False
  	for v in semantic_dict[value]:
  		if v in transcript:
  			flag=True
  	return flag
  
  #############################################################
  ###### Analysing the slot -- [food, price range, area] ######
  #############################################################
  
  #for d in data:
  	#for turn in d['dialogue']:
  		#for (s,v) in turn["turn_label"]:
  			#if s == 'area' and not check_value(v, turn['transcript']) and v != 'dontcare':
  				#print (v, turn['transcript'])
  				#print ("area: ", d['dialogue_idx'])
  				#print ('###############')
  
  			#if s == 'food' and not check_value(v, turn['transcript']) and v != 'dontcare':
  				#print (v, turn['transcript'])
  				#print ("food: ", d['dialogue_idx'])
  				#print ('################################')
  
  			#if s == 'price range' and not check_value(v, turn['transcript']) and v != 'dontcare':
  				#print (v, turn['transcript'])
  				#print ("price range: ", d['dialogue_idx'])
  				#print ('###################################################')
  
  
  # print ("Wrong Prediction for 'request': ", len(wrong_req))
  # with open('wrong_req.json', 'w', encoding='utf-8') as outfile:
  #     json.dump(wrong_req, outfile, indent=4, ensure_ascii=False)
  
  # print ("Wrong Prediction for 'food': ", len(wrong_food))
  # with open('wrong_food.json', 'w', encoding='utf-8') as outfile:
  #     json.dump(wrong_food, outfile, indent=4, ensure_ascii=False)
  
  
  # print ("Wrong Prediction for 'price range': ", len(wrong_price))
  # with open('wrong_price.json', 'w', encoding='utf-8') as outfile:
  #     json.dump(wrong_price, outfile, indent=4, ensure_ascii=False)
  
  # print ("Wrong Prediction for 'area': ", len(wrong_area))
  # with open('wrong_area.json', 'w', encoding='utf-8') as outfile:
  #     json.dump(wrong_area, outfile, indent=4, ensure_ascii=False)        
  
  
  ######################################################################
  ###### Analysing the request -- [food, price range, area, name] ######
  ######################################################################
  
  cnt_address = 0
  cnt_area = 0
  cnt_food = 0
  cnt_name = 0
  cnt_phone = 0
  cnt_price_range = 0
  cnt_postcode = 0
  
  dial_area = []
  dial_name = []
  dial_food = []
  dial_price = []
  
  for d in data:
  	for turn in d['dialogue']:
  		for (s,v) in turn["turn_label"]:
  			if s == 'request':
  				if v == "address":
  					cnt_address += 1
  				if v == "area":
  					dial_area.append(d["dialogue_idx"])
  					cnt_area += 1
  				if v == "food":
  					dial_food.append(d["dialogue_idx"])
  					cnt_food += 1
  				if v == "name":
  					dial_name.append(d["dialogue_idx"])
  					cnt_name += 1
  				if v == "phone":
  					cnt_phone += 1
  				if v == "price range":
  					dial_price.append(d["dialogue_idx"])
  					cnt_price_range += 1
  				if v == "postcode":
  					cnt_postcode += 1
  
  #print ("address\t\t",cnt_address)
  print ("area\t\t",cnt_area, len(dial_area))
  print (sorted(dial_area),"\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n")
  print ("food\t\t",cnt_food, len(dial_food))
  print (sorted(dial_food),"\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n")
  print ("name\t\t",cnt_name, len(dial_name))
  print (sorted(dial_name),"\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n")
  #print ("phone\t\t",cnt_phone)
  print ("price\t\t",cnt_price_range, len(dial_price))
  print (sorted(dial_price),"\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n")
  #print ("post\t\t",cnt_postcode)
  