Colab으로 하루에 하나씩 딥러닝

자연어 전처리_1.자연어 처리 본문

딥러닝_개념

자연어 전처리_1.자연어 처리

Elleik 2022. 12. 7. 22:50
728x90

자연어 처리

  • 우리가 일상생활에서 사용하는 언어의 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 과정
  • 언어에 대한 이해도가 필요함
    • 언어 종류가 다르고 그 형태가 다양하기 때문
    • ex) 영어는 명확한 띄어쓰기가 있지만 중국어는 띄어쓰기가 없기 때문에 단어 단위의 임베딩이 어려움

1.  자연어 처리 관련 용어

  • 말뭉치(corpus)
    • 모델을 학습시키기 위한 데이터
    • 자연어 연구를 위해 특정한 목적에서 표본을 추출한 집합
  • 토큰(token)
    • 자연어 처리를 위해 작은 단위로 나눈 단위
  • 토큰화(tokenization)
    • 텍스트를 문장이나 단어로 분리하는 것
    • 토큰화 단계를 마치면 텍스트가 단어 단위로 분리 됨
  • 불용어(stop words)
    • 문장 내에서 많이 등장하는 단어
    • 분석과 관계 없지만 등장 빈도로 인하여 성능에 부정적인 영향을 미치기 때문에 사전에 제거해 주어야 함
    • ex) a, the, she, he
  • 어간추출(stemming)
    • 단어를 기본 형태로 만드는 작업
    • worked, working, works 가 있을 때 기본 단어인 ‘work’로 통일하는 것
  • 품사 태깅(part-of-speech tagging)
    • 주어진 문장에서 품사를 식별하기 위해 붙여 주는 태그(식별 정보)

 


2.  NLTK

  • 교육용으로 개발된 자연어 처리 및 문서 분석용 파이썬 라이브러리
  • 주요기능
    • 말뭉치
    • 토큰 생성
    • 형태소 분석
    • 품사 태깅
### 문장 토큰화

import nltk
nltk.download('punkt') # 문장을 단어로 쪼개기 위한 자원 내려받기 
text = nltk.word_tokenize("Is it possible distinguishing cats and dogs")
text### 태깅에 필요한 자원 내려받기

nltk.download('averaged_perceptron_tagger')

 

문장 토큰화 결과

### 태깅에 필요한 자원 내려받기 

nltk.download('averaged_perceptron_tagger')

태깅에 필요한 자원 내려받기 완료

### 품사 태깅

nltk.pos_tag(text)

품사 태깅 결과

  • 품사 의미
    • VBZ: 동사, 동명사 또는 현재 분사
    • PRP: 인칭 대명사(PP)
    • JJ: 형용사
    • VBG: 동사, 동명사 또는 현재 분사
    • NNS: 명사, 복수형
    • CC: 등위 접속사 
 
### 단어 단위로 분리

nltk.word_tokenize(string2)

string2에 대해 문장을 단어 단어루 분리킨 결과


3.  KoNLPy

  • 한국어 처리를 위한 파이썬 라이브러리 
  • 꼬꼬마(Kkma), 코모란(Komoran), 한나눔(Hannanum), 트위터(Twitter), 멕켑(Mecab) 분석기를 설치하고 사용함
  • 로컬에서 사용할 때에는 Orcale JDK,JPype1를 설치해야하지만 colab을 사용하기 때문에 설치 없이 진행
  • 주요기능 
    • 형태서 분석
    • 품사 태깅
### 라이브러리 호출 및 문장을 형태로 변환

from konlpy.tag import Komoran
komoran = Komoran()
print(komoran.morphs('딥러닝이 쉽나요? 어렵나요?')) # 텍스트를 형태소로 변환

 

 

 

문장을 형태소로 변환한 출력 결과

### 품사 태깅

print(komoran.pos('소파 위에 있는 것이 고양이인가요? 강아지인가요?')) # 텍스트에서 품사를 태깅하여 변환

 

문장을 형태로 분해하여 품사를 태깅한 출력 결과

출처: 서지영, 『딥러닝 텐서플로 교과서』, 길벗(2022)