앞으로 자연어처리의 최신 트렌드까지 살펴보기에 앞서 본 포스팅에서는 자연어처리가 무엇인지 그리고 자연어처리가 왜 어려운지, 특히 한국어 자연어처리가 왜 어려운지에 대해 전반적으로 살펴보도록 하겠습니다.
1. 자연어처리란?
우선 자연어가 무엇인지에 대해 살펴보자면, 자연어(Natural Language)는 인공언어의 반대말로 사람들이 일상생활에서 자연스럽게 사용하는 언어를 말한다. 한국어, 영어, 일본어 등이 이러한 자연어의 예시이다.
그렇다면 인공언어는 무엇일까? 인공언어는 인간이 만들어낸 말로 컴퓨터와 소통하기 위해 만들어낸 프로그래밍 언어, 예를 들어 파이썬, 자바 등을 예시로 들 수 있다.
자연어처리(Natural Language Processing)는 컴퓨터가 인간의 언어를 이해하고 생성할 수 있도록 만들어주는 기술을 의미한다.
자연어처리의 분야로는 아래 그림과 같은 분야들이 존재한다.
2. 자연어처리가 어려운 이유
컴퓨터가 인간의 언어를 이해하는 것은 컴퓨터에게는 쉬운 일이 아니다. 왜 컴퓨터가 인간의 언어를 이해하기 어려운지 살펴보도록 하자.
1. 문맥에 따른 모호성
언어에는 문맥이 중요한 역할을 하는데, 문장 내의 단어나 구문은 주변 문맥에 의해 의미가 변화한다.
따라서 컴퓨터는 주변 단어나 문구 등의 문맥을 기반으로 언어의 의미를 해석해야 한다. 아래와 같은 예시를 살펴보자.
왼쪽 그림의 '바람', '사과', '눈'은 각각 'wind', 'apple', 'snow'를 뜻하는 반면 오른쪽 그림의 '바람', '사과', '눈'은 각각 'wish', 'apalogize', 'eye'를 뜻한다. 위와 같이 '바람', '사과', '눈'이라는 단어가 문맥에 따라 단어의 의미가 변화하는 것을 볼 수 있다.
2. 표현의 중의성
언어는 효율성 극대화를 위해 커뮤니케이션 과정에서 많은 정보가 생략되기도 한다. 이에 따라 문장에서는 일반적인 정보의 생략이 빈번하게 일어나며 이러한 문장 내의 정보 부족이 의미론적인 중의성을 야기한다. 컴퓨터는 자연어를 인간처럼 이해하는데 한계가 있기 때문에 이러한 정보 부족이 컴퓨터가 인간의 언어를 이해하는 것을 어렵게 한다. 아래 예시를 통해 조금 더 살펴보도록 하자.
'나는 영수를 안 때렸다'라는 문장을 봤을 때 사람에따라 여러 가지 의견으로 해석할 수 있다.
3. 규칙의 예외성
언어에서 규칙이란, 여러 단어에서 같은 부분이 반복되면 비슷한 의미를 갖는다고 유추하는 것을 의미한다.
그러나 단어의 결합 또는 탈락이 반드시 기존 단어와 유사한 의미를 갖거나 일관된 의미를 갖는 것은 아니다.
흔히 '숙어'라는 것이 규칙의 예외성에 해당한다. 본래 단어가 가지고 있는 의미가 숙어로 사용되면 단어의 의미가 바뀌기도 한다.
예를 들어 'hit the sack'이라는 문장에서 단어의 의미대로 해석을 한다면 '큰 가방을 때리다'라고 해석할 수 있다.
하지만 해당 문장은 '자러 가다' 라는 의미를 가진 숙어로 주로 사용된다. 이처럼 단어의 결합이 반드시 기존 단어와 유사하거나 일관된 의미를 갖는 것이 아니기 때문에 컴퓨터는 이러한 규칙을 이해하기 어렵다.
3. 한국어에서 자연어처리가 더 어려운 이유
1. 교착어
왜 '한국어'에서 자연어처리가 더 어려운지에 대해 살펴보도록 하자. 우선 아래 그림을 먼저 살펴보자.
한국어는 '교착어'로 어근과 접사에 의해 단어의 의미와 기능이 정해진다. 예를 들어 '그녀' 뒤에는 '가', '를', '의', '에게' 등 많은 접사가 붙는 것이 가능하고 이는 타 언어에 비해 같은 단어라도 무수히 많은 조합이 존재함을 의미한다.
2. 단어 순서 및 주어 생략
한국어는 단어의 순서가 문장의 의미를 결정하는 결정적인 요소는 아니다. 따라서 순서를 바꾸어도 문장을 이해하는데 전혀 어려움이 없으며 이러한 어순이 바뀌어도 문법적으로 지장이 없는 경우가 많다. 아래 예시를 통해 살펴보자.
이러한 언어의 특징은 편리하지만, 어순이 다르나 의미는 동일한 정보로 처리하는 것이 쉽지 않기 때문에 컴퓨터에게는 매우 어려운 일이다. 또한 주어를 생략하고 표현하는 언어적 특징 역시 문제에 해당한다.
3. 띄어쓰기
영어의 경우 단어 단위로 띄어쓰기가 이루어지고, 일본어, 중국어의 경우 띄어쓰기가 존재하지 않는다.
한국어에서는 띄어쓰기가 아직 정착 단계로, 표준이 계속 변화하고 있다. 또한 일반적으로는 띄어쓰기가 없어도 어느 정도의 의미전달이 가능하기 때문에 띄어쓰기가 올바른 문장, 띄어쓰기가 올바르지 않은 문장이 혼재한다. 이로 인해 추후 정제단계 중 하나인 '분절' 단계에서 컴퓨터는 띄어쓰기가 없는 단어에 대해 혼란이 있을 수 있다. 다음 예시를 보면 이해가 조금 더 쉬울 것이다.
4. 평서문과 의문문
영어와 다르게 한국어는 의문문과 평서문이 같은 형태의 문장 구조를 갖는 경우가 많다. 아래의 예시를 통해 살펴보자.
"You are eating"이라는 평서문을 의문문으로 바꾸면 "Are you eating?"이 되며 문장의 구조가 바뀌게 된다.
하지만 한국어의 경우 "밥 먹었어."라는 평서문을 의문문으로 바꾸게 되면 "밥 먹었어?"로 바뀌며 문장의 구조가 바뀌지 않는다.
이처럼 문장 끝에 문장부호가 붙지 않으면 구분이 어려우며, 많은 경우 사용하지 않아 문맥에 의존해서 판단해야 하는 경우가 존재한다.
따라서 한국어의 경우 컴퓨터가 숨겨진 맥락이나 의미를 파악하는데 더 까다롭다.
'Deep Learning > NLP' 카테고리의 다른 글
BERT와 ELECTRA 비교 (0) | 2024.03.12 |
---|---|
BERT와 SpanBERT 비교 (0) | 2024.03.11 |
BERT와 RoBERTa 비교 (1) | 2024.03.11 |
Transformer 등장 이전의 자연어처리 Backbone 모델 (0) | 2024.03.03 |
텍스트 전처리 (0) | 2024.02.29 |