강의 소개
인공지능에서 가장 중요한 데이터!! “Garbage in, garbage out” 이라는 말이 있습니다.
일반적으로 좋은 데이터를 학습해야 좋은 성능의 모델을 기대할 수 있습니다.
또한 데이터 전처리는 단순히 '정제' 의 개념이 아니라, 어떤 문제를 해결하겠다는 task 정의의 의미도 포함하고 있습니다! ☺️
반드시 날 것의 데이터와 친하게 지내세요!!!
이번 강의에는 다양한 한국어에 특화된 전처리 기법을 배우고 실습합니다.😎
한국어로 할 수 있는 거의 모든 전처리를 포함하고 있습니다! 😀
Further Reading
Further Question
- 텍스트 정제라는 것이 정말 필요할까요?
- 어쩌라는거야? 싶으시죠? ☺️☺️
- 실제로 우리가 웹이나 메신저를 통해 사용하는 언어는 '정제 되지 않은 언어' 입니다.
- 해당 데이터가 적용되는 방향에 따라 정제가 필요할 수도, 필요하지 않을 수도 있습니다.
- 오히려 더욱 어려운 데이터로 학습한 모델의 성능이 좋을 수도 있죠 ☺️
Reference
자연어 전처리란?
- raw data를 기계학습 모델이 학습하는데 적합하게 만드는 프로세스
- 학습에 사용될 데이터를 수집&가공하는 모든 프로세스
자연어 전처리를 하는 이유
- Task 성능을 가장 확실히 올릴 수 있는 방법!
- 모델 변경, 튜닝 등도 데이터가 잘 갖춰져 있는 기반에서 해야 원활한 수행이 가능
자연어 처리의 단계(task에 따라 조금 차이가 있긴 함)
1. Task 설계 - 요구사항에 맞게 어떤 task인지 분류
2. 필요 데이터 수집 - 저작권을 고려하여 데이터 수집
3. 통계학적 분석 - Token 개수->아웃라이어 제거 // 빈도 확인-> 사전 정의
4. 전처리 - 개행문자,특수문자,공백,중복표현,이메일&링크,제목,불용어,조사 선택적 제거 및 띄어쓰기&문장분리 보정
5. Tagging - labeling(?)
6. Tokenizing - 토큰 단위 결정(어절,형태소,wordpiece 등...)
7. 모델 설계
8. 모델 구현
9. 성능 평가
10. 완료!!
Python string 관련 함수
- 자연어 전처리에 반드시 필요한 파이썬 내장 함수!!
- 대소문자 변환
- upper(), lower(), captialize(), title(), swapcase()(대소문자 서로 변환)
- 편집 및 치환
- strip(), rstrip(), lstrip(), replace(a,b)
- 분리, 결합
- split(), split('wt'), ''.join(s), lines.splitlines()(라인 단위로 분리)
- 구성 문자열 판별
- isdigit(), isalpha(), isalnum()(숫자 혹ㄱ은 영어 알파벳 여부), islower(), isupper(), isspace(), startswith(), endswidth()
- 검색
- count(),
find()(괄호안의 단어가 처음으로 출현한 위치 리턴, 없으면 -1),
find(string, 3) - 문자열의 index에서 3번째부터 위치 검색,
rfind() - find와 같지만 우측 기준으로 검색,
index(), rindex() - 존재하지 않는 경우 예외발생
한국어 토큰화!!
- 토큰화(tokenizing)
- 주어진 데이터를 토큰 단위로 분리하는 작업
- 토큰 기준은 상이함(어절,단어,형태소,음절,자소 등)
- 문장 토큰화(sentence Tokenizing)
- 단어 토큰화(word tokeninzing)
- 영어 토큰화는 합성어와 줄임말 예외처리만 하면 띄어쓰기 기준으로도 잘 동작하는 편
- 단, 한국어는 조사나 어미등이 붙는 교착어로, 띄어쓰기만으로 불가
- 한국어에선 어절의 의미를 가지는 최소 단위인 형태소로 분리