https://tjddms9376.tistory.com/6
앞선 시간에 Text pre-processing에서 Tokenization에 대해 알아보았다.
오늘은 텍스트 전처리의 3가지 단계 중, tokenization을 제외한 다른 단계인 Cleaning (정제)에 대해 알아보자.
Cleaning (정제) 란?
- 정제(cleaning) : 갖고 있는 corpus로부터 노이즈 데이터를 제거한다.
노이즈 = 실제 아무 의미가 없는 단어 + 분석 목적에 맞지 않는 단어
분석 목적에 맞지 않는 단어 = (등장 빈도가 적은 단어 + 길이가 짧은 단어)
텍스트 데이터를 정제하는 방법은 상황에 따라 여러가지가 있다.
그 중에서 정규 표현식을 이용한 방법과 불용어 제거에 대해 이야기를 할텐데, 이야기를 하기 전에 간단하게 알아보고 자세하게 넘어가보자.
불필요한 단어를 제거
- 등장 빈도가 적은 단어
- 영어에서는 길이가 짧은 단어를 삭제하는 것도 유의미한 전처리 결과를 낳기도 한다.
ex. 알파벳 2개로만 이루어진 글자들을 삭제 : it, he, us 등
정규 표현식 (Regular Expression)
Corpus 내에 계속해서 등장하는 글자들을 규칙에 기반하여 한 번에 제거하는 방식 (ex. HTML 태그를 이용한 불필요한 데이터 제거)
정규 표현식을 이용한 정제
정규 표현식은 개인이 정의할 수 있다. 필요에 따라 정의한 정규 표현식을 이용해 텍스트를 전처리하는데, 이는 정규 표현식에 해당되는 텍스트들을 삭제하는 방식이라고 이해하면 된다.
https://docs.python.org/ko/3/library/re.html
위의 링크는 Python에서 제공하는 정규표현식 모듈인 're'에 대한 설명이다.
정규식 문법과 사용 방법에 대해 자세히 나와 있으니 참고하면 좋을 것 같다.
빨간 박스를 쳐놓은 re 모듈의 함수들이 가장 많이 사용하는 함수들이다.
Compile로 내가 정의하고 싶은 정규 표현식을 python에게 전달하고, split으로 띄어쓰기 기준으로 문자열을 분리하고, sub로 정규 표현식과 일치하는 부분을 원하는 문자열로 대체하는 역할을 한다.
코드 예시는 다음과 같다.
불용어를 이용한 정제
불용어 (Stopword)를 이용해 정제를 하는 방법도 있다.
불용어는 자주 등장하지만 분석을 하는 것에 있어서 큰 도움이 되지 않는 단어들을 의미한다.
유의미한 단어 토큰만을 선별하기 위해 큰 의미가 없는 단어 토큰들을 제거하는 작업을 수행함으로써 텍스트 전처리를 하는 과정이라고 이해하면 된다.
NLTK에선 불용어를 직접 정의하여 100개정도의 불용어를 제거하는 패키지를 지원하고 있다.
한국어에서 불용어를 제거하는 방법으로는, 간단하게 토큰화 이후에 조사, 접속사 등을 제거하는 방법이 있다.
https://www.ranks.nl/stopwords/korean
위의 링크는 한국어 불용어 리스트를 보여준다. 이는 절대적인 기준이 아님을 명심해야 한다.
코드 예시는 다음과 같다.
전반적인 출처와 내용들은 딥러닝을 이용한 자연어 처리 교재를 이용했다.
'학부 > AI 관련 공부' 카테고리의 다른 글
Natural Language Processing, Normalization 이란? (3) (0) | 2023.08.21 |
---|---|
크롤링을 위한 HTML / CSS 간단 소개 (NLP) (0) | 2023.08.20 |
Natural Language Processing, Tokenization이란? (1) (0) | 2023.08.14 |
Perceptron이란 ? (0) | 2023.07.13 |
ML 스터디 간단하게 정리하기 (0) | 2023.05.11 |