본문 바로가기
테크공부/자연어처리

모두를 위한 딥러닝 : 딥러닝을 이용한 자연어처리

by es25n.n 2024. 4. 14.

 

[목차]

  1. 자연어처리의 이해
  2. 전처리의 이해
  3. 한국어/영어 데이터 전처리 기법

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번 패딩 과정이 딥러닝에서 중요!✨