Open tsbach opened 1 year ago
저도 이 영어 단어가 문자 단위로 분리되는 것을 어떻게 막을 수 있는지 궁금합니다 ㅠ
from pecab import PeCab
pecab = PeCab()
def pecab_tokenizer(text):
clean_tokens = []
raw_tk_n_pos = pecab.pos(text)
i = 0
while i < len(raw_tk_n_pos):
tk, pos = raw_tk_n_pos[i]
if pos in ['SN', 'SL']:
# 현재 토큰과 같은 품사를 가진 연속된 토큰을 찾아 결합합니다.
while i + 1 < len(raw_tk_n_pos) and raw_tk_n_pos[i + 1][1] == pos:
i += 1
tk += raw_tk_n_pos[i][0]
clean_tokens.append(tk)
i += 1
return clean_tokens
test_sentence = 'abc2023년, 드디어 python으로 한글을 분석합니다. 12'
print(pecab.morphs( test_sentence ))
# >>> ['a', 'b', 'c', '2', '0', '2', '3', '년', ',', '드디어', 'p', 'y', 't', 'h', 'o', 'n', '으로', '한글', '을', '분석', '합니다', '.', '1', '2']
print(pecab_tokenizer( test_sentence ))
# >>> ['abc', '2023', '년', ',', '드디어', 'python', '으로', '한글', '을', '분석', '합니다', '.', '12']
저도 이 문제를 겪고있는데 업데이트가 없어 pecab.morphs
를 대체할 수 있는 함수를 남깁니다. 급하신 분은 이대로 넣고 돌리시면 됩니다만, 반복문이있어 pecab.morphs
보다는 속도가 느립니다.
숫자와 외국어의 token 인식이 문자단위로 이루어집니다.