텍스트 전처리(한국어)

Sirius·2023년 9월 3일

텍스트 전처리: "주어진 텍스트에서
1) 데이터 정제: 노이즈와 같이 불필요한 부분을 제거하고,
2) 문장을 표준 단어들로 분리한 후,
3) 각 단어의 품사를 파악함

1) 데이터 정제

분석에 불필요한 부분을 제거하는 과정, 분석에 별 도움이 안되는 단어들을(Stop Words) 제거하는 과정이다.
토큰화 이후에도 틈틈이 수행할 수 있다.

2) 토큰화

주어진 텍스트를 원하는 단위(토큰)로 나누는 작업

1> 문장토큰화

2> 단어토큰화

3) 정규화

같은 의미를 가지는 단어여도 다른형태로 쓰여진 단어들을 통일한다.
ex> goes, went, go -> go

1> 어간추출

2> 표제어 추출(lemmatization)

4) 품사태깅

품사: 명사, 대명사, 동사, 형용사 등
토큰화한 단어에 품사를 파악하여 부착한다.
같은 단어여도 문맥에 따라 품사가 바뀔 수 있다.

한국어 전처리 기법(형태소분석 & 품사태깅)

1) 형태소

형태소: "뜻을 가지는 가장 작은 말의 단위"
한국어의 경우 띄어쓰기만으로 토큰화 하기에는 부족함

영어와 달리 한국어는 띄어쓰기 단위로 토크화 하기에는 어렵다.
한국어는 띄어쓰기의 단위가 '어절'이 됨.
한국어는 교착어이기 때문에 조사("에서", "을/를"), 어미(먹"는다", 먹"었다") 등을 붙여서 말을 만든다.

한국어는 형태소(morpheme) 기준으로 생각해야함(가장작은 말의 단위)

1) 자립형태소: 그 자체로 단어가되는것
2) 의존형태소: 다른 형태소와 결합되어 사용됨

"잭슨은 책을 읽었다"
자립형태소: 잭슨, 책
의존형태소: -은, -을, -었, -다

-> 결국 토큰화를 함에 있어서 문장 파악에 의미가 있는 단위로 하기 위해서 한국어는 형태소 단위로 토큰화를 한다.

2) 품사

영어에는 조사가 없다.

품사태깅을 통해 품사마다 다르게 쓰이는 의미를 구분할 수 있다.

못: 박는 못, 못-: 못한다

3) KoNLPy 실습

from konlpy.tag import Okt
t = Okt()

KoNLPy가 제공하는 형태소 분석기 중에서 Twitter 클래스를 임포트해서 설치를 확인한다. Twitter클래스의 이름이 Okt다.

sentence = '''절망의 반대가 희망은 아니다.
어두운 밤하늘에 별이 빛나듯
희망은 절망 속에 싹트는 거지
만약에 우리가 희망함이 적다면
그 누가 세상을 비추어줄까.
정희성, 희망 공부
'''

print('형태소:', t.morphs(sentence))
print()
print('명사:', t.nouns(sentence))
print()
print('품사 태깅 결과: ', t.pos(sentence))

pos는 주어진 텍스트를 형태소 단위로 분리하고, 각 형태소에 품사를 부착한다. NLTK와의 다른점은 품사태깅, 토큰화를 함께 수행한다는 점이다.

0개의 댓글