[목차]
- 자연어처리의 이해
- 전처리의 이해
- 한국어/영어 데이터 전처리 기법
1. 자연어처리의 이해
👀 '자연어처리'란?
• 컴퓨터 과학과 인공 지능의 한 분야
• 인간이 사용하는 자연어(일상적인 언어)를 기계가 이해하고 처리하는 기술
• NLP는 컴퓨터가 텍스트, 음성 또는 다른 형태의 자연어를 이해하고 해석하며, 이에 대한 응답을 생성하는 기술을 포함
📍 자연어처리의 응용 분야
1) 기계 번역 (Machine Translation):
• 언어 간의 번역을 자동으로 수행하는 기술
• 구글 번역, DeepL, 파파고...
2) 감정 분석 (Sentiment Analysis):
• 텍스트에서 감정이나 태도를 감지하는 기술
• 제품 리뷰, 트위터 글 등을 분석하여 사용자의 감정을 이해하는 데 사용
• 최근 추천 알고리즘과도 함께 사용하기도
3) 질문 응답 시스템 (Question Answering Systems):
• 사용자의 질문에 대답하는 시스템
• 웹 검색 엔진이나 가상 비서(시리, 빅스비 등)에서 사용
• 챗봇과 연관이 있음
📍 머신러닝/딥러닝 WORKFLOW
데이터 ▷ 데이터 전처리 ▷ EDA (데이터 탐색 / 옵션 과정) ▷ 모델 구축 ▷ 하이퍼파라미터 튜닝
1) 데이터 : 스프레드시트, 이미지, 텍스트, 비디오, 오디오…
2) 데이터 전처리 : 데이터 결측치 해결, normalization, 데이터 증강, train/test split 3. EDA : 데이터 탐색 (시각화, 분석)
4) 모델 구축 : Decision tree, KNN, Logistic regression, Neural network...
5) 하이퍼파라미터 튜닝 : 성능 향상을 위한 파라미터 조절
자연어처리 과정 중에서도 '데이터 전처리 과정'이 아주 중요함.
데이터 수집 > 전처리 > 모델구성 > 학습 및 이용
전처리를 어떤 식으로 했느냐에 따라 성능이 달라짐.
👀 자연어 전처리 과정 : 자연어를 컴퓨터가 받아들일 수 있도록 하는 과정
1. 단어 토큰화
2. 정제 및 정규화
3. 어간 추출 및 표제어 추출 4. 불용어 제거
5. 정수 인코딩
6. 패딩
1. 단어 토큰화 : 토큰을 기준으로 문장을 단어 단위로 분리하는 작업 (구두점 제외, 띄워쓰기 기준)
한국어에서 okt는 형태소를 분석
2. 정제 및 정규화 : 텍스트 데이터를 용도에 맞게 사용할 수 있도록 처리하는 작업
• 정제(cleaning) : 가지고 있는 코퍼스로부터 노이즈 데이터를 제거, 예) 뉴스 데이터의 워터마크 표시, 광고 문구..
• 정규화(normalization) : 표현 방법이 다른 단어들을 통합하여 같은 단어로 표현. 예) 문장 앞의 대문자를 소문자로 변경
3. 어간 추출 및 표제어 추출
• 표제어 추출 (lemmatization): 단어의 사전상 기본형을 찾아주는 작업 (영어 데이터에서 주로 사용)
예) am, are, is의 표제어는 be
• 어간 추출 (stemming): 단어의 어미를 자르고 어간(stem)을 찾아주는 작업
4. 불용어 제거 : 자주 등장하지만 분석을 하는 것에 큰 의미가 없는 단어를 제거
• 영어 데이터 : 예) an, the, I, me, myself (영어 데이터에서는 약 100개가 정해져 있음)
• 한국어 데이터 : 예) “아”, “하“, “는”, “를” (참고: https://www.ranks.nl/stopwords/korean)
5. 정수 인코딩 : 각 단어를 정수에 mapping 시켜 텍스트를 계산 가능하도록 만들어주는 과정
🤦🏻♀️ 단어 사전집을 만든 다음, 단어마다 숫자를 부여. 자연어를 숫자로 변형해주는 것!
예)
• preprocessed_sentences = [['barber', 'person’], ['barber', 'good', 'person’], ['barber', 'huge', 'person’], ...]
• Encoded_sentences = [[1, 5], [1, 8, 5], [1, 3, 5], ...]
🙌🏻 'barber'=1, 'person’=5로 고정해서 인코딩하게 되는 것!
6. 패딩 : 모든 데이터를 같은 길이로 맞추어주는 과정
예)
• preprocessed_sentences = [['barber', 'person’], ['barber', 'good', 'person’], ['barber', 'huge', 'person’], ...]
• Encoded_sentences = array([[ 1, 5, 0, 0, 0, 0, 0], [ 1, 8, 5, 0, 0, 0, 0], [ 1, 3, 5, 0, 0, 0, 0], ...])
🙌🏻 7개 문장을 최대의 길이로 할 때, 단어 수가 적은 문장에는 빈 요소가 없도록 0을 추가로 삽입!
즉, 부족한 것을 추가로 삽입해서 채워줌.
5. 정수 인코딩과 6번 패딩 과정이 딥러닝에서 중요!✨
'테크공부 > 자연어처리' 카테고리의 다른 글
딥러닝 / 인공지능 / 머신러닝 구분하기 (0) | 2024.07.31 |
---|---|
마르코프 가정과 N-gram (0) | 2024.07.31 |
자연어처리를 어렵게 하는 언어적 요인들 (0) | 2024.07.30 |
모두를 위한 딥러닝 : Recurrent Neural Network (1) | 2024.04.18 |
모두를 위한 딥러닝 : 임베딩의 이해 (0) | 2024.04.17 |