소프트웨어 전문지 마이크로소프트웨어 395호는 데이터과학을 주제로 담았습니다. 데이터과학에 대한 개론, 학습 방법, 실무 적용 사례, 학계 등 마소 395호 주요 기사들을 IT조선 독자에게도 소개합니다. [편집자주]

자연어 처리는 컴퓨터로 사람의 언어를 활용하기 위해 발전한 분야다. 이를 위해 컴퓨터 과학, 인공지능, 언어학 등 세 분야 융합으로 다양한 문제를 해결해 왔다. 자연어 데이터는 단어와 단어 관계를 학습하기 위한 데이터부터 단어를 모은 문구, 문장 더 나아가서는 책 전체를 사용한다. 즉, 머신러닝 모델은 주어진 데이터로부터 존재하는 패턴을 분석해 자연어 처리를 한다.

맞춤법 검사, 기계 번역, 질의응답, 챗봇 등은 자연어 처리가 실생활에 사용되는 대표적 사례다. 이외에도 감성 분석, 동의어 찾기 등 다양한 분야에 활용된다.

자연어 처리의 기본은 자연어를 컴퓨터가 이해하는 것부터 시작한다. 자연어를 구성하는 가장 작은 의미적 단위는 단어다. 단어를 컴퓨터가 이해하는 형태로 표현하기 위해서는 벡터를 구축해야 한다. 벡터를 구축하면 단어의 의미를 숫자로 표현할 수 있다. 벡터를 통한 단어 표현은 국소 표현과 분산 표현 등 2가지가 있다.

국소 표현은 단어의 의미를 나타내는 단어 벡터를 생성할 때 1개 원소만 ‘1’로 구축하는 형태다. 이를 ‘One-Hot Vector’라 한다. 단어 벡터의 크기가 존재하는 모든 단어 개수와 같기 때문에, 많은 단어를 사용하는 모델의 경우 단어 벡터가 과도하게 커지는 문제가 있다.

국소 표현. / 마이크로소프트웨어 395호
국소 표현. / 마이크로소프트웨어 395호
개, 고양이, 배 등 3개 단어를 크기가 ‘5’인 벡터로 표현하고 있다. 가운데 그림을 보면, 5개 원소 중 1개만 붉은색으로 표시해 3개 단어 벡터가 서로 다름을 볼 수 있다. 오른쪽 실제 벡터에서는 ‘One-Hot Vector’로 1개 원소만 ‘1’로 표현된 것을 볼 수 있다. 이처럼 국소 표현은 단어 벡터 표현 중 가장 직관적인 형태다.

하지만 국소 표현은 ‘차원의 문제’가 있다. 1개 단어를 벡터로 생성할 때, 전체 요소 중 1개만 ‘1’로 표현하면 벡터의 크기가 단어의 수와 같아진다. 만약 한글로 단어 모델을 만들 경우 단어가 몇십만 개이므로 벡터의 크기가 몇십만이 돼야 한다.

또 다른 단어의 벡터 표현 방법으로는 분산 표현이 있다. 국소 표현 차원의 문제를 해결하기 위해 제안됐다. 분산 표현은 국소 표현과 다르게 전체 단어 수보다 작은 N차원 벡터로 단어를 표현할 수 있다.


분산 표현. / 마이크로소프트웨어 395호
분산 표현. / 마이크로소프트웨어 395호
분산 표현은 5개 원소를 가지는 벡터에 각기 다른 5개 값으로 표현하고 있다. 또한 개와 고양이는 동물이라는 비슷한 분류에 속하기 때문에, 1번부터 4번 원소는 [0.5, 0.0, 1.0, 1.0]으로 같은 값을 가지는 것을 볼 수 있다. 3번째 줄 배는 전혀 다른 값으로 표현됐다.

이처럼 분산 표현을 활용하면 차원의 문제를 해결하는 것에서 나아가 단어 간 의미적 유사성을 내포할 수 있게 됐다. 단어 의미가 유사하면 벡터 공간에서 가깝게 위치하고, 반대의 경우에는 멀리 배치된다. 또한, 벡터의 연산을 통해 추론 같은 작업도 수행할 수 있다.

최현영 필자의 ‘자연어 처리 소개와 언어 모델’에 대한 자세한 내용은 ‘마이크로소프트웨어 395호(https://www.imaso.co.kr/archives/4654)’에서 확인할 수 있다.