자연어 처리(NLP) (1)

2023. 9. 20. 15:00ML&DL/NLP

1. 자연어처리

1) 자연어 

  • 우리가 일상 생활에서 사용하는 인간의 언어

2) 자연어 처리 (natural language processing)

  •  자연어 텍스트를 컴퓨터가 학습할 수 있도록 변환하는 작업

2.  토큰화 (Tokenization)

1) 토큰화

  •  주어진 Corpus(단어뭉치)에서 토큰(Token)이라 불리는 단위로 나누는 작업
  •  주어진 문장에서 의미부여가 가능한 단어를 찾아내기

2) 토큰화에서 고려해야 할 사항

  • 구두점, 특수 문자 단순 제외 금지
  • 줄임말과 단어 내 띄어쓰기가 있는 경우 ex) New York
  • 구두점, 특수무자를 모두 제거하는 작업만으로는 토큰화 불가능

3) 토큰화 방법 

  • 파이썬 NLTK 라이브러리 사용
  • 문장 토큰화 
    • 토큰의 단위가 문장일 경우 문장 분류라고도 함

4) 한국어 토큰화 

  •  KSS(문장 토큰화), Konlpy(형태소 토큰화) 주로 사용 
  •  한국어의 토큰화는 다른 언어보다 어려운 편 
    •  형태소 단위로 토큰화를 수행해야 함

3. 텍스트 전처리

1)정제 

  • 갖고 있는 코퍼스로부터 노이즈 데이터 제거

2)정규화

  • 표현이 다른 단어들을 통합 ex) 공부를, 공부가,공부는

3)정제, 정규화 방안 

  • 규칙이 있거나 동일 의미 단어들 통합 
  • 대,소문자 통합
  • 불필요한 단어 제거(특수문자)
  • 빈도가 적은 단어 제거

4) 어간 및 표제어 추출

어간 추출

  • 정해진 규칙을 보고 단어의 어미를 자르는 작업

표제어 추출

  • 단어들로부터 표제어(기본 사전형 단어)를 찾는 작업 ex) am, are, is => be

라이브러리별로 추출 규칙이 조금씩 다름

추출된 단어는 사전에 존재하지 않을 수 있음

5) 불용어(Stopword)

  • 큰 의미가 없는 단어 토큰
  • 문장에서는 자주 등장하지만 의미를 분석하는데 별 필요 없는 것 ex) 은,는,이,가

6) 정수 및 원핫 인코딩

  • 컴퓨터는 숫자를 더 효율적으로 처리할 수 있기때문에 인코딩을 통해 텍스트를 숫자로 바꿔주는 작업 필요
  • 정수 인 코딩 
    • 각 단어별로 고유 정수를 부여하는 방법으로 인코딩함
    • ex) 사과, 바나나 수박 => 0,1,2
  • 원핫 인코딩
    •  표현하고 싶은 인덱스에 1을, 다른 인덱스에는 0을 부여함 
    • ex) 사과, 바나나 수박 => [1,0,0],[0,1,0],[0,0,1]
    •  단어가 3개이기 때문에 차원도 3 ( dim=3)