토크나이징이란?
텍스트에 대해 특정 기준 단위로 나누는 것. 문장을 단어나 나누거나 글을 문장 단위로 나누는 것과 같이.
예를 들면 'ㄱ','ㅑ','ㅎ' 과 같은 음소도 하나의 토큰이 됨
영어 토크나이징 라이브러리 : NLTK, Spacy
한글 토크나이징 라이브러리 : KoNLPy
KoNLPy를 설치하려면 1.7버전 이상의 Java가 필요하다고 한다. 그러기 전에 Konlpy에 JPype1도 필요한데
jpype.readthedocs.io/en/latest/install.html
여기서
아래 명령어 conda install -c conda-forge jpype1 를 입력해 설치한 후
pip install konlpy로 설치한다
KoNLPy는 기존 C,C++,자바를 통해 제공된 형태소 분석기를 모두 포함하는데 그 목록은
각 성능이 다르고 Mecab은 윈도우에서 사용불가함. 이 중 Okt를 이용할 것이다.
from konlpy.tag import Okt
okt=Okt()
Okt 객체는 4개의 함수를 제공하는데
text="자연어 처리를 열심히 해야해 알겠지? ㅎㅎㅎㅎㅎㅎㅎ"
print(okt.morphs(text))
>>['자연어', '처리', '를', '열심히', '해야해', '알겠지', '?', 'ㅎㅎㅎㅎㅎㅎㅎ']
print(okt.morphs(text, stem=True))
>>['자연어', '처리', '를', '열심히', '하다', '알다', '?', 'ㅎㅎㅎㅎㅎㅎㅎ']
print(okt.nouns(text))
>>['자연어', '처리']
print(okt.phrases(text))
>>['자연어', '자연어 처리', '처리']
print(okt.pos(text))
>>[('자연어', 'Noun'), ('처리', 'Noun'), ('를', 'Josa'), ('열심히', 'Adverb'), ('해야해', 'Verb'), ('알겠지', 'Verb'), ('?', 'Punctuation'), ('ㅎㅎㅎㅎㅎㅎㅎ', 'KoreanParticle')]
print(okt.pos(text,join=True))
>>['자연어/Noun', '처리/Noun', '를/Josa', '열심히/Adverb', '해야해/Verb', '알겠지/Verb', '?/Punctuation', 'ㅎㅎㅎㅎㅎㅎㅎ/KoreanParticle']
[ 출처 : 책 ( 텐서플로와 머신러닝으로 시작하는 자연어 처리) ]
[ NLP ] 텍스트 분류 (1) | 2020.10.24 |
---|---|
[ NLP ] 원-핫 인코딩과 분포 가설 (2) | 2020.10.21 |
[ Beautiful Soup ] Beautiful Soup 설치와 html 태그 제거 (2) | 2020.10.03 |
[ NLP ] 사이킷런을 사용해서 데이터를 수치화 하는 방법 (0) | 2020.09.18 |
[ 사이킷런(scikit-learn) ] DLL load failed: 지정된 프로시저를 찾을 수 없습니다. 해결방법 (0) | 2020.09.16 |