새소식

AI/NLP

한국어 자연어 처리 - 기본 용어 및 형태소 분석기 사용법

  • -

 

 

 

  • 토큰(Token) : 가장 기본이 되는 단어, 일반적으로 일정한 의미가 있는 가장 작은 정보 단위
  • 토크나이징(Tokenizing) : 언어를 토큰화하는 것

 

 

- 한 문장에 대한 토크나이징 예시

문장 토큰화

 

 

 

  • 형태소 : 일정한 의미가 있는 가장 작은 단위(언어학에서 사용되는 용어)

 

한국어 문장을 분석하려면 토크나이징을 먼저 해야 한다. 이 과정에서 형태소를 토큰 단위로 사용할 것이다.

이제 문장을 형태소 단위로 토크나이징해보자.

 

이 때, 토크나이징을 하려면 형태소 분석기가 필요하다.

KoNLPy 라이브러리를 이용할 것이다.(여기서는 Kkma(꼬꼬마), Komoran, Okt(구 Twitter)를 실습한다)

 

 

 

 

 

형태소 분석기

  • Kkma(꼬꼬마)
  • Komoran
  • Okt(구 Twitter)
  • 여기에는 다루지 않아도 mecab, khaiii, soynlp 등...

 

 

1. Kkma(꼬꼬마) 

1
2
3
4
5
6
7
8
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

1
2
3
4
5
6
7
8
9
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)가 가능하다. 사랑햌이 사랑해로 수정되었다. 그러나 다 정규화가 되진 않는다.

그리하여 정규화 성능은 그다지인 걸로..

 

 

 

 

 

 

 

 

 

 

참고할 만한 링크:

'AI > NLP' 카테고리의 다른 글

TAPAS 코드 실습(Hugging Face)  (221) 2023.05.04
Seq2Seq  (216) 2022.08.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.