# 말뭉치 데이터 읽기 def read_corpus_data(filename): with open(filename, 'r', encoding='utf-8') as f: data = [line.split('\t') for line in f.read().splitlines()] data = data[1:] # 헤더 제거 return data # 말뭉치 데이터 가져오기 corpus_data = read_corpus_data('./corpus.txt') # 말뭉치 데이터에서 키워드 추출하여 dictionary list 생성 p = Preprocess() dict = [] for c in corpus_data: pos = p.pos(c[1]) for k in pos: dict.append(k[0]) # 사전에 사용될 word2index 생성 # 사전 첫번째 인덱스에 OOV(Out of Vocabulary) 사용 tokenizer = preprocessing.text.Tokenizer(oov_token='OOV') tokenizer.fit_on_texts(dict) word_index = tokenizer.word_index # 사전 파일 생성 f = open("chatbot_dict.bin", 'wb') try: pickle.dump(word_index, f) except Exception as e: print(e) finally:
import sys sys.path.append('..') import pickle from utils.preprocess import Preprocess f = open('../train_tools/dict/chatbot_dict.bin', 'rb') word_index = pickle.load(f) f.close() sentence = "오늘 오후 5시 30분에 닭고기를 먹고 싶어 ㅎㅎㅎ" # 전처리 객체 생성 p = Preprocess(userdic='../utils/user_dic.tsv') # 형태소 분석기 실행 pos = p.pos(sentence) # 품사 태그와 같이 키워드 출력 keywords = p.get_keywords(pos, without_tag=True) for word in keywords: try: print(word, word_index[word]) except KeyError: # 해당 단어가 사전에 없는 경우 OOV 처리 print(word, word_index['OOV'])
from utils.preprocess import Preprocess sent = '내일 오전 10시에 탕수육 주문하고 싶어' p = Preprocess(userdic='../utils/user_dic.tsv') pos = p.pos(sent) ret = p.get_keywords(pos, without_tag=False) print(ret) ret = p.get_keywords(pos, without_tag=True) print(ret)