pyeunjeon
pyeunjeon copied to clipboard
토크나이즈 이슈입니다
안녕하세요
윈도우 10 환경에서 eunjeon으로 Mecab을 사용중입니다. 코퍼스 분석 중에 에러가 발생하는 것을 확인하고, 글 남깁니다.
캘리
에듀
라는 단어가, 뒤에 공백이 올 경우 공백까지 포함하여 토크나이즈가 됩니다.
즉, 캘리
라는 토큰과 캘리
라는 토큰이 각각 존재합니다. 에듀
도 마찬가지구요.
아래 스크린샷 확인해주세요.
# tokenizer = Mecab()
sent1 = [x for (x,y) in tokenizer.pos('고구마참치비빔밥')]
sent1
>>> ['고구마', '참치', '비빔밥']
sent2 = [x for (x,y) in tokenizer.pos('고구마 참치 비빔밥')]
sent2
>>> ['고구마', '참치', '비빔밥']
sent1 = [x for (x,y) in tokenizer.pos('캘리참치비빔밥')]
sent1
>>> ['캘리', '참치', '비빔밥']
sent2 = [x for (x,y) in tokenizer.pos('캘리 참치 비빔밥')]
sent2
>>> ['캘리 ', '참치', '비빔밥']
sent3 = [x for (x,y) in tokenizer.pos('고구마 캘리 비빔밥')]
sent3
>>> ['고구마', '캘리 ', '비빔밥']
sent1[0] == sent2[0]
>>> False # '캘리' != '캘리 '
sent2[0] == sent3[1]
>>> True
sent1[0] == sent2[0].strip()
>>> True # 공백을 제거하면 해결
sent3[1][-1] == ' ' # 마지막에 덧붙는 것이 공백인지 확인
>>> True
sent1 = [x for (x,y) in tokenizer.pos('고구마에듀비빔밥')]
sent1
>>> ['고구마', '에듀', '비빔밥']
sent2 = [x for (x,y) in tokenizer.pos('고구마 에듀 비빔밥')]
sent2
>>> ['고구마', '에듀 ', '비빔밥']
sent1[1] == sent2[1]
>>> False # '에듀' != '에듀 '
sent1[1] == sent2[1].strip()
>>> True
sent2[1][-1] == ' ' # 마지막에 덧붙는 것이 공백인지 확인
>>> True
sent3 = [x for (x,y) in tokenizer.pos('고구마초코비빔밥')]
sent3
>>> ['고구마', '초코', '비빔밥']
sent4 = [x for (x,y) in tokenizer.pos('고구마 초코 비빔밥')]
sent4
>>> ['고구마', '초코', '비빔밥']
제가 사용한 코퍼스 안에서 저렇게 나타난것이지, 다른 오작동 토큰들이 있을지도 모릅니다.