자연어처리(NLP)가 한국어에서 특히 어려운 4가지 이유

SHARE

Last updated on 5월 7th, 2021 at 10:49 오전

자연어 처리를 이해하기에 앞서, 컴퓨터와의 커뮤니케이션 방식에 대해 한 번 생각해 볼까요. 사람의 생각을 컴퓨터에게 전달하는 방법으로는 크게 2가지가 있습니다.

  • 인공 언어를 통한 커뮤니케이션 : 프로그래밍 언어
  • 자연 언어를 통한 커뮤니케이션 : 사람이 실제로 사용하는 형태에 가까운 언어

‘자연어’ 혹은 ‘자연 언어’는 사람들이 일상적으로 사용하는 언어를 인공 언어와 구분하여 부르는 개념입니다(위키백과 자연어). 인공 언어로는 컴퓨터에게 명령을 내리기 위한 프로그래밍 언어가 대표적이죠. 반대로 자연어는 한국어나 영어처럼 사람들이 실제로 대화하며 사용하는 일상어를 지칭합니다.

자연어처리를 통한 챗봇서비스


자연어 처리(NLP)란 무엇일까?

우리가 일상적으로 사용하는 자연어는 컴퓨터가 바로 이해할 수 없습니다. 그렇기에 ‘자연어 처리’ 기술이 필요합니다. 자연어 처리(Natural Language Processing)는 사람이 이해하는 자연어를 컴퓨터가 이해할 수 있는 값으로 변환하는 과정이죠. 나아가 컴퓨터가 이해하는 값을 사람이 이해할 수 있도록 다시 바꾸는 과정까지도 포함합니다.

  • 자연어 이해(NLU, Natural Language Understanding) 
  • 자연어 생성(NLG, Natural Language Generation)

자연어생성(nlg) 및 자연어이해(nlu )


자연어 처리는 왜 어려울까?

하지만 인간의 언어를 컴퓨터에게 전달하고, 컴퓨터의 언어를 인간이 이해할 수 있게 바꾸는 이 과정은 여간 쉬운 일이 아닙니다. 이는 언어 자체가 갖고 있는 여러 특징 때문인데요. 예시 문장을 보면서 그 이유를 알아봅시다.

1. 모호성(Ambiguity)

1) 표현의 중의성

를 마시러 공원에 가는 안에서 나는 그녀에게 였다.

위 문장을 영어 번역기에 입력했을 때, 우리가 이해한 것을 정확하게 구현하는 영어 문장을 과연 받을 수 있을까요? 인간의 언어에는 ‘차’와 같이, 소리와 모양은 동일하지만 맥락에 따라 의미가 달라지는 단어들이 있습니다. 우리는 이 문장을 보고 직관적으로 맥락을 파악해내지만, 컴퓨터의 경우는 쉽지 않습니다.

언어의 모호성 예시

2) 문장 내 정보 부족

나는 철수를 안 때렸다.

위 문장은 여러 가지 의미로 해석될 수 있습니다. 언어는 효율성 극대화를 위해 커뮤니케이션 과정에서 많은 정보가 생략되기도 합니다. 하지만 컴퓨터는 자연어를 인간처럼 이해하는데 한계가 있기 때문에, 정보의 생략이 많을수록 자연어 처리는 굉장히 어려워집니다.

언어의 정보 생략 예시


2. 같은 정보를 다르게 표현하기(Paraphrase)

(출처 동아일보)

표현 방식
문장 1 여자가 김치를 어떤 남자에게 집어 던지고 있다.
문장 2 여자가 어떤 남자에게 김치로 때리고 있다.
문장 3 여자가 김치로 싸대기를 날리고 있다.
문장 4 여자가 배추 김치 한 포기로 남자를 때리고 있다.

 

위 같은 이미지를 문장으로 표현한 예시입니다. 모두 다른 문장이지만, 하나의 이미지를 묘사하고 있죠. 이처럼 문장의 표현방식이 다양하고 비슷한 의미의 단어들이 존재하기 때문에 자연어 처리는 까다롭습니다.

언어는 생명체와 같아서 효율성을 극대화하기 위한 방향으로 계속해서 진화합니다. 그 과정에서 최대한 짧은 문장에 많은 정보를 담고, 굳이 언급할 필요 없는 정보는 생략하죠. 단, 생략된 맥락을 기계는 인간만큼 단번에 이해할 수 없다는 것이 자연어 처리가 어려운 이유입니다.


자연어 처리에 딥러닝을 접목하는 이유

그렇다면 자연어 처리에 딥러닝 기술을 접목하는 이유는 무엇일까요? 사실 기존의 전통적인 자연어 처리 방식은 언어가 가진 모호성이나 중의성 등의 문제를 해결하기 어려웠습니다.

관련 글 : 머신러닝과 딥러닝, 아직도 헷갈린다고?

예를 들어, <빨강>, <분홍>, <파랑>이라는 3개의 단어를 컴퓨터에게 입력한다고 가정해봅시다. 전통적인 자연어 처리 과정에서는 <빨강>과 <분홍>, <파랑>이 각각 동일하게 다른 의미를 지닌 정보로 취급됩니다. 하지만 사람인 우리는 <빨강>과 <분홍>이 어떤 포함 관계에 속하는 유사성을 지닌 단어임을 직관적으로 이해하죠.

전통적인 자연어 처리(Traditional NLP) 딥러닝을 접목한 자연어 처리
Symbolic 기반의 접근, 이산적 딥러닝 기반의 접근, 연속적(Continuous)
사람이 인지하기 쉬운 사람이 이해하기 어려운
디버깅이 용이한 디버깅이 어려운
언어의 모호성과 유의성에 취약한 언어의 모호성과 유의성에 강한

 

딥러닝을 기반으로 하는 자연어 처리에서는 사람이 단어를 이해하는 것과 같이, <빨강>과 <분홍>을 <파랑>과 비교하여 더 가깝고 유사한 관계에 있는 정보라 처리합니다. 즉, 언어에서 연속적인 가치(Continuous Value)를 발견하고 언어를 처리할 수 있게 됩니다. 기존의 자연어 처리 방식이 지녔던 단점을 한층 보완하고, 보다 인간이 이해하는 방식과 유사하게 처리할 수 있습니다.


왜 ‘한국어’ 자연어 처리는 유독 어려울까?

복잡하고 까다로운 자연어 처리, 그런데 ‘한국어’ 를 처리하는 과정은 유독 어렵습니다. (고객의 소중한 의견을 분석하는 텍스트 마이닝 편 참고) 이는 각 나라별 언어가 가지고 있는 특징이 다르기 때문인데요. 한국어는 어간에 접사가 붙어 의미와 문법적 기능이 변화하는 ‘교착어’에 속합니다.

한경BUSINESS | AI 스피커는 어떻게 인간 언어를 이해할까 참고

대표 언어 특징
교착어 한국어, 일본어, 몽골어 어간에 접사가 붙어, 단어를 이루고 의미와 문법적 기능이 정해짐
굴절어 라틴어, 독일어, 러시아어 단어의 형태가 변함으로써 문법적 기능이 정해짐
고립어 영어, 중국어 어순에 따라 단어의 문법적 기능이 정해짐


1) 접사 추가에 따른 의미 발생

예를 들어볼까요. 한국어로 ‘사과’라는 단어와 접사를 붙여 문장을 만들어 봅니다. ‘사과(어간)’ + ‘를(접사)’일 때는 ‘사과’가 목적어가 되지만, ‘사과(어간)’ + ‘가(접사)’일 때는 ‘사과’가 주어가 되어 같은 언어도 문법적 기능이 달라지는 걸 알 수 있습니다. 교착어인 한국어의 대표적인 특징입니다.

2) 유연한 단어 순서

나는 밥을 먹으러 간다.
밥을 먹으러 나는 간다.
나는 간다, 밥을 먹으러.

 

한국어는 단어의 순서를 바꾸어도 맥락을 이해하는데 문제가 없습니다. 몇 가지 경우를 제외하면, 어순이 바뀌어도 문법적으로도 오류가 없이 올바른 문장이라 볼 수 있습니다. 인간이 쓰기에는 편리하지만, 컴퓨터는 어순이 제각각이지만 의미는 동일한 이 문장들을 동일한 정보로 받아들이기 어려워 합니다. 한국어 자연어 처리가 어려운 이유입니다.

3) 모호한 띄어쓰기 규칙

근대 이전까지 동양의 언어에는 ‘띄어쓰기’ 개념이 존재하지 않았습니다. 서양문화권에서는 중세부터 띄어쓰기가 확립된 것과 비교해보면 늦은 편입니다. 한국어는 맞춤법 상 띄어쓰기 규칙이 정해져 있기는 하나, 띄어쓰기를 지키지 않아도 문장의 맥락을 이해하는데 큰 무리가 없는 언어입니다. 문제는 사람들이 띄어쓰기를 지키지 않고 뭉텅이로 작성한 텍스트를 컴퓨터가 정확하게 인식하는 것이 어렵다는 점입니다.

4) 평서문과 의문문의 차이 없음, 주어 부재

영어 I had lunch. Did you have lunch?
한국어 점심 먹었어. 점심 먹었어?

 

어순의 변화 없이, 주어가 생략되어도 한국어는 이해하는데 큰 문제가 없습니다. 하지만 똑같은 의미의 문장을 영어에서 한국어로 컴퓨터가 번역하는 것과, 한국어에서 영어로 변환하는 데에는 큰 차이가 있습니다. 동일한 문장에 마침표 대신 물음표를 붙이고, 주어에 대한 정보를 생략하더라도 한국어에서는 문장이 완성됩니다. 반대로 컴퓨터가 숨겨진 맥락이나 의미를 파악하는데 더 까다로울 수밖에 없습니다.


더 많은 내용을 김기현의 딥러닝을 활용한 자연어처리 입문 강의에서 만나보세요! 자연어처리 연구 11년차로, 400여 명의 자연어처리 전문가들을 배출한 김기현 수석연구원과 함께 기초부터 자연어 처리 모델 구현 한 사이클을 온라인으로 경험할 수 있습니다. 지금 커리큘럼을 확인해보세요.

김기현 수석연구원의 자연어 처리 입문 강의 보러가기 ▼
딥러닝을 활용한 자연어 처리 입문 강의 보러가기

Facebook Comments