자연어 처리(NLP, Natural Language Processing)란 ?
🚀 자연어 처리(NLP, Natural Language Processing)란 ?
NLP(Natural Language Processing, 자연어 처리)는 인공지능의 한 분야로서 머신러닝을 사용하여 텍스트와 데이터를 처리하고 해석한다. 자연어 인식 및 자연어 생성이 NLP의 유형이다.
NLP의 하위 주제인 자연어 이해는(NLU, Natural Language Understanding) 텍스트 본문의 실제 의미를 이용하기 위해 사용된다.
NLU는 텍스트를 분류, 아카이브, 분석할 수 있다.
NLP는 한 단계 더 나아가 그러한 의미에 기반한 의사결정을 도와준다.
🚀 NLP의 용도는 무엇인가 ?
자연어 처리 어플리케이션은 구조화되지 않은 텍스트 기반 데이터로부터 유용한 정보를 얻기 위해 사용되며,
사용자가 추출된 정보에 액세스하여 해당 데이터에 대해 새로운 이해를 생성할 수 있게 해준다.
🚀 NLP의 응용 분야
- 맞춤법 검사
- 키워드 기반 정보 검색
- 토픽 모델링
- 텍스트 분류
- 텍스트 요약
- 대화 시스템 및 자동 질의 응답 시스템
- 기계 번역
- 열린 주제의 대화 에이전트
- 감정 분석
회사 내규를 자체적으로 검색하여 질문에 답해주는 챗봇
통화 중 해당하는 자료를 찾아 스크린에 띄워주는 음성 검색 기능
구직자 이력서를 분류하고, 다양한 지원자를 끌어들이며 양질의 구직자를 선발하는 기능
고객들이 남긴 피드백의 감정을 파악하는 기능
SNS 글의 감정을 분석하여 범죄 행위 예후나 우울증 예후 등을 파악하는 기능
🚀 NLP 처리 분석 과정
NLP에서의 분석은 크게 네 가지가 있다.
거치는 순서대로 형태소 분석(Morphological Analysis), 구문 분석(Syntactic Analysis), 의미 분석(Semantic Analysis), 화용 분석(Pragmatic Analysis)이다.
형태소 분석(Morphological Analysis) → 구문 분석(Syntactic Analysis) → 의미 분석(Semantic Analysis) → 화용 분석(Pragmatic Analysis)
구문 분석(Syntactic analysis)와 의미 분석(Semantic Analysis)는 NLU의 핵심이라고도 볼 수 있다.
언어란 기본적으로 유효한 문장들의 집합이다. 그렇다면 어떤 것이 문장을 유효하게 만들까?
→ 그것은 바로 구문(Syntax)와 의미(Semantics)이다.
Syntax란 문법, 구조, 또는 언어 문장 내에 있는 구성요소의 순서를 뜻한다.
반대로 Semantics란 이러한 구성요소의 의미를 뜻한다.
구문 분석(Syntactic analysis)에서는 문장이 구조적으로 옳은 문장인지 옳지 않은 문장인지를 분석하는 과정이다.
구문 분석을 수행하는 주체를 파서(Parser)라고 한다.
의미 분석(Semantic Analysis)에서는 해당 문장이 의미적으로 옳은 문장인지 아닌지를 분석하는 과정이다.
예를 들어, 책이 수영한다. 와 같이 구조적으로는 옳으나 의미적으로는 틀린 문장이 있을 수 있다.
의미 분석 과정은 때로는 모호할 수 있다는 취약점이 있다.
화용 분석(Pragmatic Analysis)는 문장이 실세계와 가지는 연관관계를 분석하는 과정이다.
즉, 사람과 같이 실세계의 지식과 상식이 요구되는 과정이다.
예를 들어, 사람이 "Do you have a time?"이라고 질문을 하는 것은 "너는 시간을 가지고 있는가?"라는 질문이 아니다.
이 때에는 "지금이 몇시인가?"라고 해석하는 것이 타당하며, 이러한 점을 분석하는 것이 화용 분석이다.
이 모든 분석을 하기 전, 입력된 문장을 분석하기 용이하도록 정제하는 과정이 바로 형태소 분석(Morphological Analysis)이다.
형태소 분석과정에서 입력된 문자열을 분석하여 형태소(morpheme)라는 최소 의미 단위로 분리한다.
형태소 분석은 언어에 따라 난이도가 다른데, 한국어에 비해 영어가 쉬운 편이다.
🚀 NLP 처리 프로세스
1. 텍스트 전처리 (Text Preprocessing) : 대/소문자 변경, 특수문자 삭제, 이모티콘 삭제 등의 전처리 작업, 단어(word) 토큰화 작업, 불용어(Stop word) 제거 작업, 어근 추출(Stemming/Lemmatization) 등의 텍스트 정규화 작업을 수행하는 것이 텍스트 전처리 단계에 속한다.
2. 피처 벡터화 (Feature Vectorization) : 전처리된 텍스트에서 피처를 추출하고 여기에 벡터 값을 할당한다.
3. 머신러닝 모델링 : 피처 벡터화된 데이터에 대해 모델을 수립하고 학습/예측을 하는 단계이다.
🚀 국내 NLP 모델
현재 일반인들에게 공개된 대표적인 한국어 자연어처리 모델로는 koBERT, koGTP2, korBERT가 있다.
koBERT는 2019년 SKT가 구글이 공개한 BERT를 기반으로 한 자연어처리 모델이며 Gihub에 소스코드가 공개되어 있다.
koGTP2는 SKT가 koBERT에 이어 2021년에 다시 한번 공개한 자연어처리 모델이다. 이름에서 알 수 있듯 Open AI의 GPT-2를 한국어에 맞게 학습한 모델이다. 이 모델 또한 GIthub에 공개되어 있다.
korBERT는 국내 연구 기관인 ETRI에서 개발한 모델이다. ETRI 사이트에서 신청 후 사용할 수 있다.
추가로 네이버는 자연어처리 서비스를 제공하지만 모델을 오픈소스의 형태로 제공하고 있지는 않다.
🚀 Open AI란
Open AI는 2015년 일론 머스크 및 실리콘밸리 사업가들의 주도로 인간 안전에 해를 끼치지 않는 AI 기술의 개발을 위해 비영리 기관으로 설립되었다.
그 후 2019년 제한적 형태지만 영리 기관으로 전환했는데 대부분의 사람들은 자연어처리로 대표되는 대규모 딥러닝 모델 연구를 위한 하드웨어 비용 충당 목적으로 해석한다.
Open AI가 개발한 3세대 자연어처리 모델인 GPT-3는 정확도가 높으면서도 Fine-tuning이 적게 필요해 쉽게 적용할 수 있다는 장점 덕분에 많은 주목을 받았다.
참고