def to_client(conn, addr, params): db = params['db'] try: db.connect() # 디비 연결 # 데이터 수신 read = conn.recv(2048) # 수신 데이터가 있을 때 까지 블로킹 print('===========================') print('Connection from: %s' % str(addr)) if read is None or not read: # 클라이언트 연결이 끊어지거나, 오류가 있는 경우 print('클라이언트 연결 끊어짐') exit(0) # json 데이터로 변환 recv_json_data = json.loads(read) print("데이터 수신 : ", recv_json_data) query = recv_json_data['Query'] # print(query) 여기 까지는 정상적으로 작동 # 의도 파악 intent_predict = intent.predict_class(query) intent_name = intent.labels[intent_predict] print(intent_name) # 개체명 파악 ner_predicts = ner.predict(query) ner_tags = ner.predict_tags(query) # 답변 검색 try: f = FindAnswer(db) answer_text, answer_image = f.search(intent_name, ner_tags) answer = f.tag_to_word(ner_predicts, answer_text) except: answer = "죄송해요 무슨 말인지 모르겠어요. 조금 더 공부 할게요." answer_image = None send_json_data_str = { "Query": query, "Answer": answer, "AnswerImageUrl": answer_image, "Intent": intent_name, "NER": str(ner_predicts) } message = json.dumps(send_json_data_str) print(message.encode()) conn.send(message.encode()) except Exception as ex: print(ex) print("여기") finally: if db is not None: # db 연결 끊기 db.close() conn.close()
def to_client(conn, addr, params): db = params['db'] try: db.connect() # 데이터 수신 read = conn.recv(2048) # 수신 데이터가 있을 때까지 블로킹 print('============') print('connection from %s'%str(addr)) if read is None or not read: # 클라이언트 연결이 끊어지거나 오류가 있는 경우 print("클라이언트 연결 끊어짐") exit(0) # thread 강제 종료 # json data로 변환 recv_json_data = json.loads(read.decode()) print("데이터 수신 : ", recv_json_data) query = recv_json_data['Query'] # 의도 파악 intent_predict = intent.predict_class(query) intent_name = intent.labels[intent_predict] # 개체명 파악 ner_predicts = ner.predict(query) ner_tags = ner.predict_tags(query) # 답변 검색 try: f = FindAnswer(db) answer_text = f.search(intent_name, ner_tags) answer = f.tag_to_word(ner_predicts, answer_text) except: answer = "무슨 말인지 모르겠어요, 공부가 필요합니다" send_json_data_str = {"Query": query, "Answer": answer, "Intent": intent_name, "NER": str(ner_predicts)} message = json.dumps(send_json_data_str) # json 객체를 전송 가능한 문자열로 변환 conn.send(message.encode()) except Exception as ex: print('에러: ', ex) finally: if db is not None: # db 연결 끊기 db.close() conn.close()
intent = IntentModel(model_name='models/intent/intent_model.h5', proprocess=p) predict = intent.predict_class(query) intent_name = intent.labels[predict] # 개체명 인식 from models.ner.NerModel import NerModel ner = NerModel(model_name='models/ner/ner_model.h5', proprocess=p) predicts = ner.predict(query) ner_tags = ner.predict_tags(query) print("질문 : ", query) print("=" * 100) print("의도 파악 : ", intent_name) print("개체명 인식 : ", predicts) print("답변 검색에 필요한 NER 태그 : ", ner_tags) print("=" * 100) # 답변 검색 from utils.FindAnswer import FindAnswer try: f = FindAnswer(db) answer_text, answer_image = f.search(intent_name, ner_tags) answer = f.tag_to_word(predicts, answer_text) except: answer = "죄송해요 무슨 말인지 모르겠어요" print("답변 : ", answer) db.close() # 디비 연결 끊음
def to_client(conn, addr, params): db = params['db'] try: db.connect() read = conn.recv(2048) # 수신 데이터가 있을 때까지 블로킹 print('==========================') print('Connection from: %s' % str(addr)) if read is None or not read: print('클라이언트 연결 끊어짐') exit(0) #스레드 강제 종료 #json 데이터로 변환 recv_json_data = json.loads(read.decode()) print("데이터 수신 : ", recv_json_data) query = recv_json_data['Query'] #의도 파악 intent = IntentModel(model_name='models/intent/intent_model.h5', proprocess=p) predict = intent.predict_class(query) intent_name = intent.labels[predict] #개체명 파악 ner = NerModel(model_name='models/ner/ner_model.h5', proprocess=p) predicts = ner.predict(query) ner_tags = ner.predict_tags(query) #답변 검색 try: if intent_name == "음식점추천" and ner_tags == None: answer = "해당 음식 맛집을 찾지 못했어요 ㅠㅠ 다른 음식을 입력해주세요" answer_image = ' ' else: f = FindAnswer(db) answer_text, answer_image = f.search(intent_name, ner_tags, predicts) answer = f.tag_to_word(predicts, answer_text) except: answer = "죄송해요… 무슨 말씀이신지 모르겠어요…!!" answer_image = None send_json_data_str = { "Query": query, "Answer": answer, "AnswerImageUrl": answer_image, "Intent": intent_name, "NER": str(predicts) } message = json.dumps(send_json_data_str) #json 객체를 전송 가능한 문자열로 변환 conn.send(message.encode()) #응답 전송 except Exception as ex: print(ex) finally: if db is not None: #db 연결 끊기 db.close() conn.close()