Пример #1
0
    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
Пример #2
0
 def store_conversation(self, response):
     User.store_conversation(response)
Пример #3
0
 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()