우리는 매일 수많은 문장을 읽고, 쓰고, 듣고, 말하며 살아간다.
아침에 스마트폰으로 보는 뉴스 기사, 친구에게 받은 메시지, 지금 이 블로그 글까지 모두 자연어(Natural Language)다. 자연어는 사람이 일상에서 자연스럽게 사용하는 언어를 뜻한다.
이처럼 자연어는 우리가 숨 쉬듯 사용하는 언어지만 정작 그 복잡성과 정체를 잘 인지하지 못한 채 살아간다. 대부분의 사람은 모국어를 '학습'했다기보다 '노출'을 통해 습득한다. 게다가 문법을 정확히 몰라도 말하고, 듣고, 쓸 수 있다.
그렇다면 "기계는 이 언어를 제대로 이해할 수 있을까?"
이 언어를 기계에게 가르치려고 할 때 인간의 언어는 생각보다 훨씬 더 복잡하다 것을 인지할 수 있다.
기계에게 언어를 가르친다고 하면 프로그래밍 언어를 떠올릴 수 있다. 파이썬, 자바스크립트, C 같은 언어들은 사람이 만든 인공어(Artificial Language)다. 문법이 명확하고 애매함이 없어, 기계는 언제나 같은 방식으로 이해하고 처리할 수 있다.
이러한 인공어는 문맥자유 문법(Context-free Grammar)을 따른다. 이는 한 문장을 해석할 때 앞뒤 문맥에 의존하지 않아도 되는 구조다. 컴파일러는 이러한 규칙 덕분에 에러를 빠르게 감지하고, 코드 실행 흐름을 정확하게 이해할 수 있다.
반면 자연어는 문맥의존 문법(Context-sensitive Grammar)을 따른다. 단어의 의미나 문장의 구조가 앞뒤 맥락에 따라 달라지고, 문법 규칙도 예외가 많다. 인간에게는 당연한 이 특성은 기계에게는 큰 장벽이 된다.
예를 들어 보자.
Alice drove down the street in her car.
이 문장은 두 가지로 해석될 수 있다.
두 번째 해석은 현실적으로 말이 안 되지만, 문법적으로는 가능하다.
이럴 때 사람은 '차 안에 거리 같은 게 있을 리 없다'는 상식을 바탕으로 해석을 하나로 고정할 수 있다. 하지만 기계는 그렇지 않다. 기계에게 상식은 학습된 데이터로만 주어지며 그조차 부족하거나 왜곡되기 쉽다.
이처럼 자연어는 단어의 뜻, 문법, 문맥, 상황, 배경지식, 상식까지 모두 고려해야 정확히 이해할 수 있기 때문에 복잡한 것이다.
자연어는 다음 네 가지 측면에서 기계 처리에 특히 어려움을 준다.
이러한 특성 때문에 자연어처리는 문법 분석 수준에서 멈출 수 없고, 의미 분석, 문백 구조 파악, 도메인 지식 기반 추론까지 필요하다.
여기서 자연어 처리를 왜 배우는가를 생각해 보게 되었다.
자연어를 처리하는 것은 굉장히 복잡하고 어려운 과정이라는 것을 알 수 있었다. 그렇다면 그저 문장을 처리하거나 번역하거나 챗봇을 만들기 위해서 사람들은 자연어 처리에 비용을 투자하고 있는 걸까? 하는 궁금증이 생겼다.
좀 더 넓게 보면 자연어 처리는 언어를 이해하는 시스템을 만드는 작업이고, 이는 인간의 사고방식을 기계에 담아내려는 시도라고 해석할 수 있을 것 같다.
이 관점에서 생각해 보면 결국 자연어 처리를 배우는 것은,
"기계가 어떻게 사람처럼 말하고, 듣고, 이해할 수 있을까?"
를 진지하게 고민해보는 일이지 않을까?
앞으로 공부해 나가다 보면 어딘가 결론에 도달할 수 있을 거라 기대한다.
기계는 언어를 해석하려면 가장 먼저 문장을 잘게 나눠야 한다. 이때 토큰화(Tokenization)라는 개념이 등장한다.
토큰화란 문장을 의미 단위(보통 단어 또는 그 이하)로 쪼개는 작업이다. 이 단계가 정확하지 않으면 이후에 아무리 좋은 모델을 써도 원하는 결과를 얻기 어렵다.
예시로 살펴보자.
"나는 밥을 먹었다"
→ ["나는", "밥을", "먹었다"]
혹은 → ["나", "는", "밥", "을", "먹", "었", "다"]
이처럼 문장을 어디서 자르고, 어떤 단위를 의미로 볼지 정하는 기준은 자연어 처리의 성능에 큰 영향을 미친다. 이 내용은 다음 글에서 자세히 다뤄 볼 예정이다.
이 글을 작성하면서 사람이 무의식적으로 사용하는 자연어가 기계에게 어떤 이유로 까다롭게 작용하는지 이해할 수 있었다.
당연한 사실이지만 기계 입장에서는 구조가 불명확하고 예외가 많은 복잡한 데이터라는 점을 생각하면서 자연어 처리에 어떤 어려움이 있을 수 있을지 생각해 보는 시간이 되었다.
동일한 문장도 상식이나 배경지식이 있어야 제대로 해석되는 것처럼 규칙 기반 처리만으로는 자연어를 이해할 수 없는 어려움을 어떻게 해결해 나갈 수 있을지 앞으로의 학습을 통해 확인해 보아야겠다.