텍스트 정규화 기법

Python으로 배우는 Natural Language Processing (NLP)

Fouad Trad

Machine Learning Engineer

텍스트 정규화

  • 정규화는 단어를 표준 형식으로 맞춤
  • 텍스트 분류, 검색, 감성 분석에 유용
  • 살펴볼 기법:
    • 소문자화
    • 스테밍
    • 레머타이제이션

세 사람이 각각 다른 방식으로 “감독이 훌륭한 영화를 보는 걸 즐긴다”고 말하는 이미지: "I enjoy watching movies with great direction!", "I enjoyed watching movies that are well-directed.", "Movies with excellent direction are something I enjoy."

Python으로 배우는 Natural Language Processing (NLP)

소문자화

  • 정규화하지 않으면 서로 다른 토큰으로 처리됨
  • 모델을 혼란시키고 어휘 수를 부풀림
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

‘data’, ‘Data’, ‘DATA’ 사이에서 헷갈리는 사람 이미지.

Python으로 배우는 Natural Language Processing (NLP)

소문자화 적용성

유용한 경우

키워드 기반 분석 작업

텍스트에서 키워드를 찾는 사람 이미지.

Python으로 배우는 Natural Language Processing (NLP)

소문자화 적용성

유용한 경우

키워드 기반 분석 작업

텍스트에서 키워드를 찾는 사람 이미지.

유용하지 않은 경우

대소문자에 따라 의미가 달라지는 구분이 필요한 작업

"us"(우리)와 "US"(미국)를 나타내는 사람들 무리와 미국 국기 이미지.

Python으로 배우는 Natural Language Processing (NLP)

스테밍(Stemming)

  • 접미사를 잘라 단어를 어근으로 축소
    • running → run
    • reading → read
  • 유사 변형을 하나로 묶는 데 유용
  • 비유효 단어가 생성될 수 있음
    • organization → organizat

줄기어 로고

Python으로 배우는 Natural Language Processing (NLP)

코드로 보는 스테밍

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
tokens = ['running', 'bats', 'organizations', 'reading']
stemmed = [stemmer.stem(word) for word in tokens]
print(stemmed)
['run', 'bat', 'organizat', 'read']
Python으로 배우는 Natural Language Processing (NLP)

레머타이제이션(Lemmatization)

  • 단어를 기본형으로 변환
  • 결과가 사전에 있는 유효 단어가 됨
    • organizations → organization
  • 문법적 정확성이 중요할 때 유용
  • 스테밍보다 느리지만 더 정확

레마 로고

Python으로 배우는 Natural Language Processing (NLP)

코드로 보는 레머타이제이션

from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
tokens = ['running', 'bats', 'organizations', 'reading']
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
print(lemmatized)
['running', 'bat', 'organization', 'reading']
Python으로 배우는 Natural Language Processing (NLP)

스테밍

  • 더 빠름
  • 비사전 단어가 나올 수 있음
  • 속도가 중요할 때 사용

체인톱으로 나무를 자르는 사람 이미지.

레머타이제이션

  • 더 느림
  • 더 정확함
  • 문법적 정확성이 필요할 때 사용

구조를 유지하며 나무를 정교하게 다듬는 사람 이미지.

Python으로 배우는 Natural Language Processing (NLP)

연습해 봅시다!

Python으로 배우는 Natural Language Processing (NLP)

Preparing Video For Download...