1. Natural Language Processing
1.1 Natural Language
- 사람들의 사회생활에서 자연스럽게 발생하여 쓰이는 언어
- 컴퓨터에게 명령하기 위한 프로그래밍 언어(인공언어)와 대비
1.2 Natural Language Processing
- 사람들이 사용하는 자연어를 컴퓨터를 이용해 이해하고 생성하는 연구
- 인간과 기계의 의사소통 기술
- NLU(understanding): 자연어 형태의 문장을 이해하는 기술
- NLG(generation): 자연어 문장을 생성하는 기술
2. Application
- Machine Translation
- Speech Recognition
- Personal Assistant
- Smart Speaker
많이 알려진 것에 비해 정확도는 높지 않고, 자연어는 숫자와 다른 복잡성과 불확실성(언어의 특징)을 갖는다.
3. Why is NLP difficult?
NLP를 어렵게 하는 3가지 요인
- 규칙의 예외
- 언어의 중의성
- 언어의 유연성과 확장성
3.1 규칙의 예외
- 형태론: 언어의 규칙을 연구하는 분야
- 언어의 규칙의 예시
- -었-이 들어간 한국어 동사는 과거형
- -ed로 끝나는 영어 동사는 과거형: "excited"(형용사)
- 숙어로 쓰인 동사나 명사는 원본의 단어의 규칙을 그대로 적용할 수 없음
- 숙어: 여러 단어가 모여 내포하는 뜻이 달라짐
- 규칙을 모든 단어에 그대로 적용할 수 없어 처리의 복잡도 상승
3.2 언어의 중의성
"배"에 담긴 의미들
- 과일의 한 종류
- 운송수단
- 크기 비교의 단위
- 신체 부위
- 완벽히 같은 글자의 조합이 여러 의미를 가지고 있기에 처리의 복잡도 상승
- "참 잘 했다"라는 말도 비꼬는 의미가 될 수 있다.
3.3 언어의 유연성과 확장성
언어의 유연성
- 언어는 항상 변화며, 시대가 지나 더이상 쓰지 않는 단어도 있고, 새롭게 탄생한 용어도 존재
- 새롭게 언어가 태어나는 방법도 다양
- 이 모든 방법들을 규칙화할 수 없음
언어의 무한성
- 단어와 소리의 개수는 유한하지만, 이를 조합하여 만들 수 있는 문장의 수/길이가 무한함
구조 문법을 사용한 확장성의 이해
- 문장의 여러 단어가 이루는 구조를 통해 문장이 구성된다는 문법 모델
- 중의성을 완전히 해결할 수 없지만, 언어의 확장성 설명 가능
- 단어가 들어갈 자리에 구를 넣어서 문장의 길이를 계속 늘릴 수 있음
- Man -> Old man
- Party -> party that she would also attend
NLP의 어려움을 해결하려면 "context"를 이용해야 한다.
문장에서 어떤 단어들과 쓰이느냐를 통해 의미를 파악한다.
4. Paradigm
4.1 규칙 기반
- 언어의 문법적 규칙을 사전에 정의해두고 자연어를 처리
- 초창기 자연어처리 연구에 많이 사용
- 1954년: 러시아어-영어 번역기
- 1966년: ELIZA 대화형 시스템
E.g., Machine Translation
- 문장을 단어 등의 단위로 분해하고, 그 사이에 감지된 규칙을 사용해 번역
- 핵심 단어들을 사전을 통해 번역
- 원본 문장에서 발견되는 문법적인 규칙들을 찾아냄
- 번역하려는 언어의 규칙을 불러옴
- 단어와 단어 사이를 이어줌
Problem
- 규칙을 사전에 직접 구축해야 함
- 예외 상황이 발생하면? 이를 모두 파악하여 규칙화는 어려움
분명한 한계점이 존재하기 때문에 거의 사용되지 않는다. 한국어의 경우 어순이 바뀌어도 의사소통이 가능하고, 규칙을 미리 지정하는 것의 부담과 작업의 정확도가 낮기 때문이다.
4.2 통계 기반
규칙 사전 정의를 통계적(count)으로 처리
- 언어에 어떤 규칙이 있다면 그 단어나 어구 사이에 통계적으로 유의미한 값이 도출된다는 가정
- 컴퓨터의 성능이 발전하여 대량의 데이터를 빠르게 처리할 수 있게 되면서 발전
- 통계적인 분석을 위해서는 사전에 수립된 대량의 문장들(corpus)을 처리해야 함
corpus는 자연어 처리에서 기계 학습 모델이 언어의 통계적 패턴이나 번역 규칙을 학습할 수 있도록 제공되는 대규모 텍스트 데이터이다.
이를 통해 'I -> 나는', 'school -> 학교'와 같은 번역 규칙이나 언어적 규칙을 모델이 얻을 수 있다.
조건부 확률
- 어떤 사건이 이미 일어난 것을 가정하고, 그 상황에서 다른 사건이 일어날 확률
- 어떠한 단어가 등장할 확률을 앞뒤의 단어를 기반으로 산출
- 앞(or 뒤)에 등장한 단어라는 이미 일어난 사건
- 이에 대해 어떤 단어가 나올 확률이 가장 높은지 여러 단어들에 대해 계산 → 이 중에서 가장 확률이 높은 단어를 선택하면 가장 자연스러운 문장이 됨
Problem
- 선형적인 분석이므로 복잡한 규칙을 처리하기 어려움
- 여전히 사람의 손이 많이 가는 통계 분석 자료 활용
4.3 신경망/딥러닝 기반
Machine Learning
- 입력으로 들어올 데이터를 대입시켜 알고리즘이 스스로 연산의 가중치를 학습
- 프로그램을 작성 후 바로 사용하지 않고 학습시키는 과정 필요
- 학습된 가중치는 나중에 저장하였다가 다시 활용 가능
Deep Learning
- 신경망 구조에서 은닉층 수를 매우 많이 늘린 것
- 은닉층 수에 대한 구체적 기준은 없으나, 연산의 흐름이나 각 가중치가 무엇을 의미하는지 개발자조차 알 수 없게 됨
- 여러 복잡한 특징들을 처리할 수 있게 되어 각광받고 있음
Natural Language Processing
- Deep Learning 기반
- 모델을 잘 구성해두는 것이 중요
- 문장 전체를 고려하는 모델을 만들고 싶다면, 모든 단어에 걸쳐 적용되는 연결을 하나 생성
- 통계적 분석보다 고차원적인 분석을 할 수 있어 성능이 비약적으로 상승
통계적으로 분석하는 것은 단어들 간의 등장 빈도(count)와 같은 일차적인 분석에 기반하지만, 딥러닝은 여러 데이터 간에 복합적인 연결을 통해 심층적인 분석을 할 수 있음
→ 문장이나 문단의 전체적인 맥락을 파악하는 자연어처리 모델이 만들어진 것도 딥러닝에 기반한 자연어처리가 시작된 이후이다.