[딥러닝 스터디] 자연어 처리의 전처리
다음의 책을 공부하며 정리한 내용입니다.
자연어 처리의 전처리
자연어 처리를 위해 자연어 데이터는 일반적으로
토큰화
,단어집합생성
,정수인코딩
,패딩
,벡터화
의 과정을 거친다.
토큰화
- 주어진 텍스트를 단어/문자 단위로 자르는 것을 의미한다.
- 토큰화 도구
- spaCy, NLTK: English Tokenization
- .split(): 파이썬 기본함수. 띄어쓰기 등으로 토큰화한다면..
1 | # tokenizer 도구 사용해보기 - 상세 코드는 wikidocs.net/64157 참고 |
1 | A |
한국어 토큰화
- 영어와 달리 한국어는 띄어쓰기 단위로 토큰화 하면 ‘사과가 =/= 사과는’ 으로 인식되어 단어집합이 불필요하게 커진다.
- 형태소 토큰화 사용 : 형태소 분석기를 사용해 토큰화를 진행한다.
1 | # 형태소 분석기 중 mecab을 사용해 한국어 형태소 토큰화한다. |
단어집합의 생성
: 단어집합(vocabulary)란 중복을 제거한 텍스트 내 총 단어의 집합(set)
을 의미한다.
(실습) 네이버 영화 리뷰 데이터를 통해 단어집합 생성
1 | # 20만개의 영화리뷰에 대해 긍정 1, 부정 0으로 레이블링한 네이버 데이터를 다운받는다. |
1 | [결과] |
1 | from konlpy.tag import Mecab |
1 | [결과] |
1 | import nltk |
1 | [결과] |
각 단어에 고유한 정수 부여
- 각 토큰에 고유한 정수를 부여한다.
- 0과 1은 특수 인덱스로 사용한다.
- 인덱스 0 : 단어집합에 없는 토큰
- 인덱스 1 : 패딩 토큰(길이맞추기용)
1 | word_to_index = {} |
1 | [[294, 51, 6, 4, 89, 63, 86, 11, 21, 34], [0, 79, 0, 0, 0, 54, 0, 0, 0, 0, 48, 0, 0, 0, 19, 314, 136, 319, 26, 54, 0, 278, 169, 72, 0, 0, 0, 32, 0, 8, 36, 140, 32, 68, 383, 0, 4, 0, 22, 8, 123, 29, 320, 103]] |
Padding
: 길이가 다른 문장들을 모두 동일한 크기로 바꿔주는 작업
- 인코딩한 리뷰를 모두 일정한 길이로 변환해준다.
- 특정 길이로 모든 샘플들의 길이를 맞춰준다.
- 정한 길이보다 짧은 샘플들에는 ‘pad’ 토큰을 추가하여 길이를 맞춰준다.
리뷰의 길이를 그래프로 출력하는 코드
1 | max_len = max(len(l) for l in encoded) |
1 | max_len = max(len(l) for l in encoded) |
1 | [결과] |
1 | # 리뷰 최대 길이인 81로 모든 리뷰의 길이를 맞춰준다. |
1 | [결과] |