전처리는 왜 필요할까?
정제하지 않은 데이터와 정제한 데이터는 분석 결과에서 많은 차이를 보인다.
전처리 방법
Basic, Tokenize, Spell, Check, Pos Tag, STemming, Stopwords
1. Basic
- 기초적인 전처리
- html tag 제거 (크롤링한 html 원문 데이터일 경우)
- 숫자 영어, 특수문자 등 필요하지 않은 언어 제거
- Lowercasing
- punctuation(문장부호) 제거
- Emoji 및 BMP (유니코드에서 Basic Multilingual Plane(기본 다국어 평면)) 제거
기초 전처리는 데이터를 적재, 전송 등 다른 용도로 사용할 때에도 필요하다
2. Tokenize
- 자연어 처리에서는 텍스트를 토큰 단위로 나눈다.
특히 한국어에서는 띄어쓰기는 문맥과 의미를 구분하는데 큰 영향. 애초에 모든 공백을 없앤 후, 문맥에 따라 띄어 쓴 문장을 만드는 것이 좋은 방법 -> 너무기대를 안했나봐 (원문) -> 너무기대를안했나봐 -> 너무 기대를 안 했나봐
2-1.
- 경계인식 방식: 머신러닝을 이용한 문장 경계인식
(다중 클래스 분류 모델, 다중 손실을 이용한 공동 학습모델)
- 영역인식 방식: 띄어 쓰는 지점 주변 토큰의 영향을 고르게 받음
2-2. 문장 분리
- 영역인식 방식: 문장 분리의 경우 형태소 분석으로 종결어미를 구분, 문장의 CRF 결과로 판단하는 방법 등
- 한국어 문장분리 파이썬 라이브러리
- 정확도는 약간의 편차들이 있음
- 정확도도 중요하나 대량 데이터처리시 속도도 고려해야 함
3. Pos Tag(폼사 태깅)
- 품사를 붙이는 행위를 PoS Tagging이라고 한다.
- 형태소 분석은 의미있는 가장 작은 단위의 말(형태소)을 분석한다라는 뜻
- Pos Tagging 즉 품사 태깅 행위를 현업에서는 구분없이 동의어로 상당히 자주 사용함
- 형태소 분석은 말 그대로 형태소를 분석하는 모든 행위(어근,접두사/점미사 등 속성 구조 파악)
- konlpy의 형태소 분석기 및, Khaiii 등 여러가지 분석기가 나와 있으며 컨텐츠에 따른 정확도를 확인하여 선택
- 영어는 NLTK는 자연어 처리 및 문서 분석용 파이썬 패키지에서 많이 사용
- 품사가 제대로 태깅 되어야 양질의 분석이 가능하다
- 최근의 ELMo나 BERT 같은 Contextualized Word Embedding 방법에서는 단어 주변의 문맥 정보를 전체적으로 사용하기 때문에 주요 품사만 사용하는 방법은 효과가 안 좋을 수 있다.
4-1 Stemming(어간추출)
- 주어진 단어에서 핵심 의미를 담고 있는 부분을 찾는 과정
- 단어의 의미를 담고 있는 어간과 문법적 역할을 하는 접사를 분리하는 방식으로 동작
-동사를 원형으로 복원한다. (입니다->이다)로 바꾸어 줌
4-2. Lemmatisation(표제어)
- 주어진 단어의 사전적 어원(기본 사전형 단어)을 찾는 과정
5. Stopwords (불용어처리)
- 갖고 있는 데이터에서 유의미한 단어 토큰만을 선별하기 위해서 큰 의미가 없는 단어 토큰을 제거하는 작업
6. 한국어 전처리 패키지
- PykoSpacing : 띄어쓰기 교정
- Py-Hanspell: 네이버 한글 맞춤법 검사기
- Customized KoNLPy: 영어는 띄어쓰기만 해도 단어가 잘 분리되나 한국어는 경우가 다르다.
형태소 분석기를 사용할 때 이러한 상황을 극복하기 위해 하나의 해결책으로써 형태소 분석기에 사용자 사전을 추가
- 특정 도메인 업종, 특수 명칭 등을 사용하는 텍스트 분석에 유용
7. 실무에서 한국어 전처리
- 기존에 나와 있는 라이브러리르 100% 활용하지는 않음
- 내부에서 사용하는 용어,동의어,불용어 사전을 함께 운용해서 반영함
- 신조어도 주기적으로 반영
- AI 기반 확률적 전처리 방법에는 예외가 종종 발생,하며 대량의 데이터 처리시 발생하는 처리속도 문제도 있음
<결론>
한국어 전처리하는데 어떤 방법들이 있는지, 예외가 발생하는 이유에 대한 이해가 있어야 분석의 정확도를 높일 수 있다.
'CS지식' 카테고리의 다른 글
디자인 패턴 - 싱글톤 패턴(Singleton Pattern) (0) | 2023.06.03 |
---|---|
코드 리펙토링 (0) | 2023.06.03 |
게임 제작 방법 노하우 (0) | 2023.06.02 |
AWS 보안 가이드 (0) | 2023.06.02 |
BlockChain이란? (0) | 2023.06.02 |