def evaluate_cli(model, context_embeddings_op, elmo_context, elmo_ids): config = load_config(FLAGS.config_file) logger = get_logger(FLAGS.log_file) if FLAGS.task == "NER": with open(FLAGS.necessary, "rb") as f: word_to_id, id_to_word, char_to_id, id_to_char, pumsa_to_id, id_to_pumsa, tag_to_id, id_to_tag, ner_morph_tag = pickle.load( f) komoran = Komoran() results = [] while True: # line = input("문장을 입력하세요.:") line = [ "찬민이의 멘탈이 산산조각났습니다.", "진짜 진짜 진짜 맛있는 진짜 라면", "집에 가고 싶읍니다.", "집", "가 가 가 가 가 가, 가, 가 ,가, 가 가 가 가 가 가, 가, 가 ,가 !!!!! ." ] for idx in range(0, len(line), 5): l = line[idx:idx + 2] results.extend( model.evaluate_lines( sess, context_embeddings_op, elmo_context, elmo_ids, ner_morph_tag, inputs_from_sentences(komoran, l, word_to_id, pumsa_to_id, char_to_id, elmo_dict, FLAGS.max_char_length, ner_morph_tag), id_to_tag)) print(results)
def infer(sentences, **kwargs): config = load_config(FLAGS.config_file) logger = get_logger(FLAGS.log_file) reformed_sentences = [' '.join(sen[1]) for sen in sentences] result = model.evaluate_lines(sess, inputs_from_sentences(reformed_sentences, char_to_id, FLAGS.max_char_length), id_to_tag) ''' result = [ (0.0, ['ARG0', 'ARG3', '-']), (0.0, ['ARG0', 'ARG1', '-']) ] # evaluate_lines 함수는 문장 단위 분석 결과를 내어줍니다. # len(result) : 문장의 갯수, 따라서 위 예제는 두 문장의 결과입니다. # result[0] : 첫번째 문장의 분석 결과, result[1] : 두번째 문장의 분석 결과. # 각 문장의 분석 결과는 다시 (prob, [labels])로 구성됩니다. # prob에 해당하는 자료는 이번 task에서 사용하지 않습니다. 따라서 그 값이 결과에 영향을 미치지 않습니다. # [labels]는 각 어절의 분석 결과를 담고 있습니다. 따라서 다음과 같이 구성됩니다. ## ['첫번째 어절의 분석 결과', '두번째 어절의 분석 결과', ...] # 예를 들면 위 주어진 예제에서 첫번째 문장의 첫번째 어절은 'ARG0'을, 첫번째 문장의 두번째 어절은 'ARG3'을 argument label로 가집니다. ### 주의사항 ### # 모든 어절의 결과를 제출하여야 합니다. # 어절의 순서가 지켜져야 합니다. (첫번째 어절부터 순서대로 list 내에 위치하여야 합니다.) ''' return result
def evaluate_cli(model): config = load_config(FLAGS.config_file) logger = get_logger(FLAGS.log_file) with open(FLAGS.map_file, "rb") as f: char_to_id, id_to_char, tag_to_id, id_to_tag = pickle.load(f) while True: line = input("문장을 입력하세요.:") result = model.evaluate_lines(sess, inputs_from_sentences([line], char_to_id, FLAGS.max_char_length), id_to_tag) print(result)
def infer(sentences, **kwargs): config = load_config(FLAGS.config_file) logger = get_logger(FLAGS.log_file) if config['elmo']: elmo_dict = load_elmo_dict(FLAGS.elmo_dict) else: elmo_dict = None results = [] komoran = Komoran() reformed_sentences = [' '.join(sen[1]) for sen in sentences] for idx in range(0, len(reformed_sentences), 100): reformed_sentence = reformed_sentences[idx:idx + 100] results.extend( model.evaluate_lines( sess, context_embeddings_op, elmo_context, elmo_ids, ner_morph_tag, inputs_from_sentences(komoran, reformed_sentence, word_to_id, pumsa_to_id, char_to_id, elmo_dict, FLAGS.max_char_length, ner_morph_tag), id_to_tag)) # results.extend(model.evaluate_lines(sess, context_embeddings_op, elmo_context, elmo_ids, ner_morph_tag,\ # inputs_from_sentences(komoran, reformed_sentence, word_to_id, pumsa_to_id, char_to_id, elmo_dict, FLAGS.max_char_length, ner_morph_tag), id_to_tag)) ''' result = [ (0.0, ['ARG0', 'ARG3', '-']), (0.0, ['ARG0', 'ARG1', '-']) ] # evaluate_lines 함수는 문장 단위 분석 결과를 내어줍니다. # len(result) : 문장의 갯수, 따라서 위 예제는 두 문장의 결과입니다. # result[0] : 첫번째 문장의 분석 결과, result[1] : 두번째 문장의 분석 결과. # 각 문장의 분석 결과는 다시 (prob, [labels])로 구성됩니다. # prob에 해당하는 자료는 이번 task에서 사용하지 않습니다. 에 영향을 미치지 않습니다. # [labels]는 각 어절의 분석 결과를 담고 있습니다. 따라서 다음과 같이 구성됩따라서 그 값이 결과니다. ## ['첫번째 어절의 분석 결과', '두번째 어절의 분석 결과', ...] # 예를 들면 위 주어진 예제에서 첫번째 문장의 첫번째 어절은 'ARG0'을, 첫번째 문장의 두번째 어절은 'ARG3'을 argument label로 가집니다. ### 주의사항 ### # 모든 어절의 결과를 제출하여야 합니다. # 어절의 순서가 지켜져야 합니다. (첫번째 어절부터 순서대로 list 내에 위치하여야 합니다.) ''' '' # results[1000000000000000000000000] # test return results