2. 전처리
2022. 4. 8. 10:27ㆍ카테고리 없음
자연어처리의 전처리과정
자연어처리 작업흐름
- 문제정의
- 데이터수집
- 데이터전처리 및 분석
- 알고리즘 적용
- 평가
- 배포 및 유지보수
데이터수집
데이터 수집 방법 4가지
- 구입
- 정제 및 레이블링 완료된 양질의 데이터획득가능
- 양이 매우 제한적 - 외주
- 무료 공개 데이터
- AI-HUB
- WMT competetion
- Kaggle
- OPUS (http://opus.nlpl.eu/) - 크롤링을 통한 데이터 수집
- 무한한 양의 코퍼스 수집 가능
- 도메인별로 데이터 수집가능
- 정제과정에 많은 노력필요
- 아직은 회색지대이지만, 적법한 절차에 따른 크롤링 필수
데이터 전처리
데이터 전처리 과정
- 1. 정제과정
- Task에 따른 노이즈 제거
- 인코딩변환 - 2. 레이블링
- 문장마다 또는 단어마다 레이블링 수행 - 3. Tokenization
- 형태소 분석기를 활용하여 분절 수행 - 4. Subword Segmentation (optional)
- 단어보다 더 작은 의미 단위 추가 분절 수행 - 5. 사전 구축
- { 토큰 : 빈도수 } 형태로 단어 사전 구축 - 6. word2index
- 높은 빈도수를 가진 단어일수록 낮은 정수를 부여
- 정수는 1부터 부여
1. 정제과정
- 기계적인 노이즈 제거방법
- Task에 따른 전형적인 Noise 제거
- 전각문자를 반각문자로 변경 - interactive 노이즈 제거방법
- 정규식을 사용하여 노이즈제거
- 코퍼스를 살펴보고 정규식(규칙)을 만들어서 노이즈를 제거
2. 레이블링
- Text classification 의 경우
- Label : Class - Token classification 의 경우
- 형태소분석같은것을 의미
- Label : 각 문장의 각 토큰에 대해 형태소를 태깅 - Seq2Seq 의 경우
- Label : 번역된 문장
3. Tokenization 분절
[라인 분절]
보통 학습시 우리가 원하는 입력데이터는 "한 라인당 한 문장"이어야 한다.
한 라인에 여러문장이 들어있거나, 한문장이 여러 라인에 들어있을 경우 분할수행필요
- 이 과정을 Sentence Segmentation이라 함
- NLTK를 활용하여 변환가능
[문장 분절]
두개 이상의 다른 token들의 결합으로 이루어진 단어를 쪼개어
vocabulary 숫자를 줄이고, 희소성(sparseness)을 낮추기 위해 필요
- Korea's 와 He's --> Korea / He / 's 로 구분하여 세개로 구성
- 만약 문장을 분절하지 않으면?
- Korea's 와 He's --> Korea / Korea's / He / He's 로 구분하여 네개로 구성됨
- 즉 Vocab 숫자를 줄이고 희소성을 낮추기위해 필요
[형태소 분석 및 품사 태깅]
형태소 분석 : 형태소를 비롯하여, 어근/접두사/접미사/품사 등 다양한 언어적 속성의 구조를 파악
품사 태깅 : 형태소의 뜻과 문맥을 고려하여 각 단어에 품사를 붙이는 일
[분절길이에 따른 장단점]
토큰 평균길이에 따른 성격과 특징
분절길이가 짧을수록
- Vocabulary 크기 감소
- 희소성 문제감소
- Oov ( Out of Vocabulary ) 줄어듦
- train data로 학습하였는데, test할때 모르는 단어가 있을경우 해당 단어를 Oov 라고함
- 이런 Oov 는 <UNK> 토큰으로 대체 - Sequence 길이가 길어짐
- 분절된 한 토큰당 한 Sequence 로 취급하여서
- 모델의 부담도 증가
분절의 길이가 길수록
- Vocabulary 크기 증가
- 희소성 문제 증대
- Oov 가 늘어남
- Sequence 길이가 짧아짐
- 분절된 한 토큰당 한 Sequence 로 취급하여서
- 모델의 부담감소
4. Subword segementation (optional)
나중에 추가
5. 사전 구축
- ddddd
6. word2index
- ddddd