Patrick's 데이터 세상

사내 교육 1주차 - 자연어 처리 입문 본문

Deep Learning/NLP 강의

사내 교육 1주차 - 자연어 처리 입문

patrick610 2023. 2. 18. 16:50
반응형
SMALL

 

 

 

언어

자연언어 : 한국어, 영어, 일본어 등
인공언어 : 프로그래밍 언어, 에스페란토어 등

 

 

 

 

NLP란 무엇인가?

인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 묘사할 수 있도록 연구하고 이를 구현하는 인공지능의 주요 분야 중 하나다.
구현을 위해 수학적 통계적 도구를 많이 활용하며 특히 기계학습 도구를 많이 사용하는 대표적인 분야이다. 정보검색, QA 시스템, 문서 자동 분류, 신문기사 클러스터링 등 다양한 응용이 이루어지고 있다.

- Wikipedia -

NLP는 Natural Language Processing, 말 그대로 우리가 일상적으로 사용하는 자연어를 처리하는 것을 뜻합니다.

 

 

NLP Model

 

 

 

자연어 처리 모델은 자연어를 입력받아서 해당 입력이 특정 범주일 확률을 반환하는 확률 함수

 

입력 : 숫자로 치환된 자연어

출력 : 0~1 사이의 확률 값

 

 

NLP Task

Sentiment Analysis

 

Document Summarization

 

Machine Translation

예) 구글 번역, 네이버 파파고 등

 

Question Answering

Q : 요즘 가장 핫한 k-pop 그룹은 누구야?

A : 뉴진스입니다. 대표곡으로는 attention, hypeboy 있습니다.

예) 챗봇

 

 

Model Workflow

 

Data Separation for Training

 

텍스트 전처리 Text Processing

토큰화
정제, 정규화
어간 추출, 표제어 추출
불용어

 

토큰화

문장을 단어, 단어구, 문자열 등의 단위 기준으로 나누는 작업.

 

🤮 한국어 토큰화의 어려움

한국어는 영어와 달리 띄어쓰기만으로는 토큰화를 하기에 어려움이 있습니다.

띄어쓰기 단위가 '어절'인데 어절 토큰화에는 조사, 접속사 등이 있기 때문에 단어 토큰화와 같지 않기 때문입니다.

 

👉🏻 형태소 분석기 - Okt(Open Korea Text)

# 설치
pip install konlpy

# package import
from konlpy.tag import Okt

okt = Okt()

# 형태소 추출
print('OKT 형태소 분석 :',okt.morphs("열심히 일한 당신, 연휴에는 여행을 가봐요"))
# 품사 태깅(Part-of-speech tagging)
print('OKT 품사 태깅 :',okt.pos("열심히 일한 당신, 연휴에는 여행을 가봐요"))
# nouns 명사 추출
print('OKT 명사 추출 :',okt.nouns("열심히 일한 당신, 연휴에는 여행을 가봐요"))

OKT 형태소 분석 : ['열심히', '일', '한', '당신', ',',  '연휴', '에는', '여행', '을', '가봐요']

OKT 품사 태깅 : [('열심히', 'Adverb'), ('일', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), (',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb')]

OKT 명사 추출 : ['일', '당신', '연휴', '여행']

 

 

정제, 정규화

정제(cleaning) : 갖고 있는 코퍼스로부터 노이즈 데이터를 제거합니다.

정규화(normalization) : 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만듭니다.

 

 

어간 추출(Stemming), 표제어 추출(Lemmatization)

어간 추출(Stemming) : 주어진 단어에서 의미를 담는 핵심 부분을 추출합니다.

 

☉ 활용(conjugation)

용언의 어간(stem)이 어미(ending)을 가지는 언어적 특성을 통칭하는 개념입니다.

 

☉ 규칙 활용

/어간 + /어미

어간이 어미를 붙일 때, 어간의 모습이 일정하다. 규칙 기반으로 어미를 단순히 분리해주면 어간 추출이 됩니다.

 

☉ 불규칙 활용

어간이 어미를 붙일 때, 어간의 모습이 바뀌거나 취하는 어미가 특수한 어미입니다.

듣/들-, 돕/도우-, 곱/고우-, 잇/이-, 올/올-, 노랗/노라-

위 예처럼 어간의 모습이 바뀌면 단순한 분리만으로는 어간 추출이 되지 않고 좀 더 복잡한 규칙이 필요합니다.

from konlpy.tag import Okt

okt = Okt()
print(okt.morphs('했다', stem= True))

 

 

표제어 추출(Lemmatization) : 기본 사전형 단어, 표제어를 추출합니다.

단어의 형태학적 파싱을 먼저 진행. 형태소란 '의미를 가진 가장 작은 단위'.

형태소의 종류로 어간(stem)과 접사(affix)가 존재합니다.

from konlpy.tag import Komoran

def lemmatize(word):
    morphtags = Komoran().pos(word)
    print(f"품사 태깅 : {morphtags}")
    if morphtags[0][1] == 'VA' or morphtags[0][1] == 'VV':
        return f"표제어 추출 : {morphtags[0][0]}다"
        
print(lemmatize('했다'))

 

 

불용어

한국어에서 불용어를 제거하는 방법으로는 간단하게는 토큰화 후에 조사, 접속사 등을 제거하는 방법이 있습니다.

하지만 불용어를 제거하려고 하다보면 조사나 접속사와 같은 단어들뿐만 아니라 명사, 형용사와 같은 단어들 중에서 불용어로써 제거하고 싶은 단어들이 생기기도 합니다. 결국에는 사용자가 직접 불용어 사전을 만들게 되는 경우가 많습니다.

보편적 불용어 사전

 

 

 


참고

 

딥러닝을 이용한 자연어 처리 입문

 

딥 러닝을 이용한 자연어 처리 입문

많은 분들의 피드백으로 수년간 보완된 입문자를 위한 딥 러닝 자연어 처리 교재 E-book입니다. 오프라인 출판물 기준으로 코드 포함 **약 1,000 페이지 이상의 분량*…

wikidocs.net

 

 

BERT와 GPT로 배우는 자연어 처리 - 이기창

 

 

Do it! BERT와 GPT로 배우는 자연어 처리 | 이기창 - 교보문고

Do it! BERT와 GPT로 배우는 자연어 처리 | ‘사람 말을 알아듣는 AI’를 만들어 보자! 트랜스포머 핵심 원리부터 문서 분류, 기계 독해, 문장 생성 실습까지!사람 말을 알아듣고 처리하는 인공지능은

product.kyobobook.co.kr

 

반응형
LIST
Comments