자연어 처리
정의
자연어 처리natural language processing, NLP란 컴퓨터가 인간의 언어를 이해하고, 해석하고, 처리하게 하기 위한 기술 또는 그것을 연구하는 학문을 의미한다. 흔히 영어 줄임말인 NLP로 불린다.
설명1
자연어natural language란 한국어나 영어처럼 사람이 일상적으로 쓰는 언어를 말하며, 프로그래밍 언어처럼 엄밀한 규칙에 따라 인공적으로 설계된 형식 언어formal language와 대비되는 개념이다. 자연어 처리의 대표적인 과제로는 다음과 같은 것들이 있다.
- 기계번역machine translation: 한 언어의 문장을 다른 언어의 문장으로 옮기는 일
- 텍스트 분류text classification: 문서를 정해진 범주로 나누는 일. 스팸 메일 필터링, 감성 분석 등이 여기에 속한다.
- 질의응답question answering: 질문을 입력받아 그에 대한 답을 내놓는 일
- 언어 모델링language modeling: 주어진 문맥 다음에 올 단어의 확률분포를 추정하는 일. 대형 언어 모델large language model, LLM의 근간이 된다.
자연어가 다루기 까다로운 이유는 그것이 정해진 틀 없이 길이가 제각각인 비정형 데이터이고, 문자와 단어라는 이산적인 기호의 나열이어서 그 자체로는 덧셈이나 곱셈 같은 연산이 정의되지 않기 때문이다. 신경망은 결국 벡터를 입력받아 벡터를 내놓는 함수이므로, 신경망으로 자연어를 다루려면 먼저 텍스트를 수치 데이터로 바꿔야 한다. 그래서 오늘날의 자연어 처리는 대체로 다음의 파이프라인을 따른다.
$$ \text{텍스트} \overset{\text{토큰화}}{\longrightarrow} \text{토큰열} \overset{\text{임베딩}}{\longrightarrow} \mathbb{R}^{d}\text{의 벡터열} \overset{\text{모델}}{\longrightarrow} \text{출력} $$
우선 텍스트를 🔒(26/08/01)토큰token이라 불리는 작은 단위로 쪼개고, 각 토큰을 임베딩embedding을 통해 벡터로 바꾼다. 이렇게 얻은 벡터의 수열을 순환신경망이나 🔒(26/08/19)트랜스포머 같은 모델에 입력하여 번역문, 분류 결과, 다음 단어의 확률분포 등 원하는 출력을 얻는다.
역사적으로 초기의 자연어 처리는 언어학자가 손수 작성한 문법 규칙과 사전에 의존하는 규칙 기반rule-based 방법이 주류였다. 1990년대에 들어서는 코퍼스로부터 단어의 출현 확률을 추정하는 통계적statistical 방법이 이를 대체했고, 2010년대에는 순환신경망, LSTM 등 신경망 기반의 기계번역이 좋은 성과를 내면서 표준으로 자리잡았다. 이후 🔒(26/08/07)어텐션으로 이루어진 아키텍처인 🔒(26/08/19)트랜스포머(2017)가 등장했고, 이를 거대한 코퍼스로 학습시킨 대형 언어 모델이 현재(2026년 기준) 자연어 처리의 중심에 있다.

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

