- 토큰(Token) : 가장 기본이 되는 단어, 일반적으로 일정한 의미가 있는 가장 작은 정보 단위
- 토크나이징(Tokenizing) : 언어를 토큰화하는 것
- 한 문장에 대한 토크나이징 예시
문장 토큰화
- 형태소 : 일정한 의미가 있는 가장 작은 단위(언어학에서 사용되는 용어)
한국어 문장을 분석하려면 토크나이징을 먼저 해야 한다. 이 과정에서 형태소를 토큰 단위로 사용할 것이다.
이제 문장을 형태소 단위로 토크나이징해보자.
이 때, 토크나이징을 하려면 형태소 분석기가 필요하다.
KoNLPy 라이브러리를 이용할 것이다.(여기서는 Kkma(꼬꼬마), Komoran, Okt(구 Twitter)를 실습한다)
형태소 분석기
- Kkma(꼬꼬마)
- Komoran
- Okt(구 Twitter)
- 여기에는 다루지 않아도 mecab, khaiii, soynlp 등...
1. Kkma(꼬꼬마)
|
from konlpy.tag import Kkma
kkma = Kkma()
text = "코스피 지수가 3200을 돌파하였다."
morphs = kkma.morphs(text)
print(morphs)
|
cs |
1-1. Kkma(꼬꼬마) 출력 결과
형태소 분석
1-2. Kkma(꼬꼬마) 실행이 안되는 에러 발생 시
혹여 SystemError: java.nio.file.InvalidPathException: ...(중략) 와 같은 에러가 난다면 JPype 버전이 안맞는 경우이다.
www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 에 들어가서 Python 버전에 맞는 JPype를 다운로드한다.
본인이 받은 파일의 경로를 찾아가서 설치한다.
본인의 경우 Python 3.8 버전대를 사용 중이다.
그러면 java 에러는 더 이상 뜨지 않을 것이다.
2. Komoran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from konlpy.tag import Komoran
komoran = Komoran()
text = "최고의 코딩 알고리즘 백준"
sent_ = komoran.morphs(text)
print("morphs() : ", sent_)
nouns_ = komoran.nouns(text)
print("nouns() : ", nouns_)
pos_ = komoran.pos(text)
print("pos() : ", pos_)
|
cs |
2-1. Komoran 출력 결과
3. Okt
|
from konlpy.tag import Okt
okt = Okt()
text = "게임 한판 할랙?ㅋㅋㅋㅋㅋ, 사랑햌ㅋㅋㅋ, 최고얌"
morphs = okt.morphs(text)
print("morphs() : ", morphs)
normalize = okt.normalize(text)
print("normalize() : ", normalize)
|
cs |
3-1. Okt 출력 결과
Okt는 특이하게 정규화(normalize)가 가능하다. 사랑햌이 사랑해로 수정되었다. 그러나 다 정규화가 되진 않는다.
그리하여 정규화 성능은 그다지인 걸로..
참고할 만한 링크: