onnnzeoz

🌐 해당 카테고리에 작성하는 글은 모두 안상준, 유원준 <딥 러닝을 이용한 자연어 처리 입문> 를 요약했습니다.

🌐 비전공자 개발자가 자연어 처리 대학원에 가고싶어 공부한 기록들입니다.

🌐 해당 실습은 구글의 collab을 통해 실시했습니다.

1. 자연어 처리

자연어 : 우리가 일상생활에서 쓰는 언어.

자연어 처리 : 이러한 자연어의 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 일

활용처 : 음성인식, 사용자 감성분석, 챗봇, 번역 등

머신 러닝 워크플로우(Machine Learning Workflow) :

1) 수집(Acquisition)

기계에 학습시킬 자연어 데이터인 코퍼스를 수집

2) 점검 및 탐색(Inspection and exploration)

데이터 점검하고 탐색, 정제하는 단계 = 탐색적 데이터 분석 (EDA단계)

3) 전처리 및 정제(Preprocessing and Cleaning)

머신 러닝 워크플로우에서 가장 까다로운 작업 중 하나인 데이터 전처리 과정

토큰화, 정제, 정규화, 불용어 제거 등의 단계를 포함

4) 모델링 및 훈련(Modeling and Training)

모델링 : 코드를 작성하는 단계

훈련 : 전처리가 완료 된 데이터를 머신 러닝 알고리즘을 통해 기계에게 학습(training)시킵니다

훈련용, 검증용, 테스트용 데이터를 나누어 훈련용 데이터만 훈련에 사용한다.

5) 평가(Evaluation)

6) 배포(Deployment)

 

2. 텍스트 전처리(Text preprocessing)

풀고자 하는 문제의 용도에 맞게 텍스트를 사전에 처리하는 작업

 

2-1 토큰화(Tokenization)

2-1-1. 단어 토큰화(Word Tokenization)

토큰화를 하다보면, 예상하지 못한 경우가 있어서 토큰화의 기준을 생각해봐야 하는 경우가 발생합니다. 물론, 이러한 선택은 해당 데이터를 가지고 어떤 용도로 사용할 것인지에 따라서 그 용도에 영향이 없는 기준으로 정하면 됩니다.

NLTK는 영어 코퍼스를 토큰화하기 위한 도구들을 제공합니다.

표준 토큰화 예제

표준으로 쓰이고 있는 토큰화 방법 중 하나인 Penn Treebank Tokenization의 규칙

규칙 1. 하이픈으로 구성된 단어는 하나로 유지한다.

규칙 2. doesn't와 같이 아포스트로피로 '접어'가 함께하는 단어는 분리해준다.

 

2-1-2. 문장 토큰화(Sentence Tokenization, sentence segmentation)

NLTK에서는 영어 문장의 토큰화를 수행하는 sent_tokenize를 지원

from nltk.tokenize import sent_tokenize

 

text = "His barber kept his word. But keeping such a huge secret to himself was driving him crazy. Finally, the barber went up a mountain and almost to the edge of a cliff. He dug a hole in the midst of some reeds. He looked about, to make sure no one was near."

print('문장 토큰화1 :',sent_tokenize(text))

한국어의 경우에는 박상길님이 개발한 KSS(Korean Sentence Splitter)를 추천합니다.

pip install kss

import kss

 

2-3. 품사 태깅(Part-of-speech tagging)

각 단어가 어떤 품사로 쓰였는지를 구분

영어 : NLTK (Penn Treebank POS Tags 라는 기준) KoNLPy를 통해

한국어 : Okt와 꼬꼬마 .

 

다음에 이어서

profile

onnnzeoz

@onnnzeoz

비전공자의 개발 공부 일지입니다 💦 국비 풀스택 과정 수강중