def match_domain(self, sentence, flag=None, user_nickname=None): # 在未斷詞前先取得句子,之後上傳對話紀錄到資料庫用 User.get_question(sentence, user_nickname) # 個人化專屬語不需經過斷詞,且domain='none' if flag == 'user_nickname': jieba_tw.add_word(sentence, freq=200000) key_words = jieba_tw.cut(sentence, cut_all=False) key_words = list(key_words) print('key_words: %s' % key_words) else: newsen = self.filter_stopwords(sentence) key_words = jieba_tw.cut(newsen, cut_all=False) key_words = list(key_words) print('key_words: %s' % key_words) domain_score = self.match_domain_alg(key_words) return domain_score
def store_conversation(self, response): User.store_conversation(response)
def response_word(self): # TODO 新增 or concern_done if self.flag is None or self.flag=='special_done' or self.flag=='user_done' or self.flag=='emergency_done' or self.flag=='hospital_done' or self.flag=='disease_done' or self.flag=='weather_done' or self.flag=='location_done' or self.flag=='reminder_done' or self.flag=='morning_concern_done' or self.flag=='noon_concern_done': domain = self.choose_domain() if domain == 'user': user = User() return user.response() # 決定為emergency的模組流程,可先收集word elif domain == 'emergency': emergency = Emergency(word_domain=self.word_domain, flag='emergency_init') return emergency.response() # 決定為hospital的模組流程,可先收集word elif domain == 'hospital': hospital = Hospital(word_domain=self.word_domain, flag='hospital_init') return hospital.response() # 決定為disease的模組流程,可先收集word elif domain == 'disease': disease = Disease(word_domain=self.word_domain, flag='disease_get') return disease.response() # 決定為weather的模組流程,可先收集word elif domain == 'weather': weather = Weather(word_domain=self.word_domain, flag='weather_init') return weather.response() # 決定為location的模組流程,可先收集word elif domain == 'location': location = Location(word_domain=self.word_domain, flag='location_init') return location.response() # 決定為reminder的模組流程,可先收集word elif domain == 'reminder': reminder = Reminder(word_domain=self.word_domain, flag='reminder_init') return reminder.response() # 決定為morningconcern的模組流程 elif domain == 'morningconcern': concern = Concern(word_domain=self.word_domain, flag='morning_init', nickname=self.nickname) return concern.response() # 決定為noonconcern的模組流程 elif domain == 'noonconcern': concern = Concern(word_domain=self.word_domain, flag='noon_init') return concern.response() # 決定為nightconcern的模組流程 elif domain == 'nightconcern': concern = Concern(word_domain=self.word_domain, flag='night_init') return concern.response() # 決定為special(domain=none)的流程 else: special = Special() return special.response() else: if 'user' in self.flag: user = User(word_domain=self.word_domain, flag=self.flag) return user.response() elif 'emergency' in self.flag: emergency = Emergency(word_domain=self.word_domain, flag=self.flag) return emergency.response() elif 'hospital' in self.flag: hospital = Hospital(word_domain=self.word_domain, flag=self.flag) return hospital.response() elif 'disease' in self.flag: disease = Disease(word_domain=self.word_domain, flag=self.flag) return disease.response() elif 'weather' in self.flag: weather = Weather(word_domain=self.word_domain, flag=self.flag) return weather.response() elif 'location' in self.flag: location = Location(word_domain=self.word_domain, flag=self.flag) return location.response() elif 'reminder' in self.flag: reminder = Reminder(word_domain=self.word_domain, flag=self.flag) return reminder.response() elif 'morning' in self.flag: concern = Concern(word_domain=self.word_domain, flag=self.flag) return concern.response() elif 'noon' in self.flag: concern = Concern(word_domain=self.word_domain, flag=self.flag) return concern.response() elif 'night' in self.flag: concern = Concern(word_domain=self.word_domain, flag=self.flag) return concern.response()