본문 바로가기
  • 공부 기록 인생 기록
Python/NLP

정제, 정규화

by 티권 2023. 2. 19.

토큰화 작업 전, 후에는 텍스트 데이터를 용도에 맞게

정제(cleaning)정규화(normalization)하는 일이 함께한다

 

정제

- 갖고 있는 코퍼스로부터 노이즈 데이터를 제거

- 토큰화 작업 전,후에 모두 이뤄질 수 있다

- 완벽한 정제는 어려운 편이라, 합의점을 찾기도함

 

노이즈 데이터

- 분석 목적에 맞지 않는 불필요한 단어들

- 제거 방법

  - 불용어 제거

  - 등장 빈도가 적은 단어 제거  ex)스팸메일 분류에서 100000개의 데이터 중 5번 등장한 단어는 도움이 안됨

  - 길이가 짧은 단어 제거 - 영어권에서는 길이가 짧은 단어들은 대부분 불용어, 하지만 한국어는 아님

  - 노이즈 데이터의 특징을 잡아낼 수 있다면 정규표현식으로 제거 ex) re.sub

https://wikidocs.net/21703

 

02-05 정규 표현식(Regular Expression)

텍스트 전처리에서 정규 표현식은 아주 유용한 도구입니다. 이번에는 파이썬에서 지원하고 있는 정규 표현식 모듈 re의 사용 방법과 NLTK를 통한 정규 표현식을 이용한 토큰화에 대…

wikidocs.net

 

불용어(Stopword)

- 자주 등장하지만 분석에는 도움 안되는 단어들

- 직접 정의할 수도 있다

 

NLTK가 정의한 영어 불용어 리스트가 있음

stopwords.words('english')

 

 

 

불용어를 따로 정의해서 공백을 기준으로 리스트 생성

한국어 불용어 삭제

 


 

정규화

- 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어줌

- 같은 의미를 갖고 있는 표기가 다른 단어들을 하나의 단어로 정규화

- 표기가 다른 단어들을 통합하는 방법 : 어간 추출, 표제어 추출

 

표제어 추출(Lemmatization)

- 단어들이 형태가 달라도, 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단

- 표제어 : 기본 사전형 단어

- 형태소 : 의미를 가진 가장 작은 단위. 어간, 접사.

- 어간 : 단어의 의미를 담고 있는 단어의 핵심 부분

- 접사 : 단어에 추가적인 의미를 주는 부분

 

NLTK 표제어 추출

의미 알 수 없는 단어들 출력하기도 함. 

표제어 추출기가 본래 단어의 품사 정보를 알아야만 정확한 결과 얻을 수 있음

 

 

 

어간 추출(Stemming)

- 정해진 규칙만 보고 단어의 어미를 자르는 어림짐작의 작업

- 표제어 추출보다 일반적으로 빠름

- 알고리즘이 여러가지가 있는데 어떤 알고리즘이 해당 코퍼스에 적합한지 판단 후 사용해야함

 

 

 

 

대, 소문자 통합

- 영어권 언어에서 단어의 개수를 줄일 수 있는 정규화 방법

- 대부분 대문자를 소문자로 변환하는 작업

- 하지만 무작정 통합해서는 안됨. ex)회사이름, 사람 이름

- 여러가지를 고려하여 소문자 변환을 언제 사용할지 결정해야함

 

 

한국어에서 표제어 추출과 어간 추출이 필수일까?

- 코퍼스가 부족하다면 표제어 추출과 어간 추출이 같은 문장에 대해 같은 샘플로 취급하여 희소성 문제에서 어느정도 타협을 볼 수 있다

- 딥러닝시대에서 성공적인 차원 축소를 수행할 수 있게 되면서 희소성 관련 문제는 더 이상 큰 장애물이 아니다

- 일단 위의 작업들을 하지 않고 텍스트 분류 문제 해결을 시도해보자

- 코퍼스 양의 부족이 성능 저하의 원인이라고 판단되면 그 때 추가로 실험해보자

 

 

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

펄플렉서티(Perplexity, PPL)  (0) 2023.03.14
N-gram 언어 모델  (0) 2023.03.14
언어 모델 - 통계적 언어 모델  (0) 2023.03.14
konlpy 사용 시 오류  (0) 2023.02.18
토큰화(Tokenization)  (0) 2023.02.17