Skip to main content

자연어 처리 소개

텍스트 분석과 자연어 처리

텍스트 분석과 자연어 처리는 매우 유사한 용어이다. 두 분야는 비슷한 기법을 사용하지만, 그 목적에 따라 포인트가 약간 달라진다.

텍스트 분석은 말 그대로 분석에 초점을 맞춘다. 텍스트를 분석하여 의사 결정, 조사, 연구 등의 목적을 달성하는 활동을 말한다. 예를 들어, 제품 개발 시 고객들의 의견을 알고 싶을 때 리뷰나 댓글을 광범위하게 수집하여 분석한다. 이는 기존의 설문조사 방식보다 예상 외의 답변을 얻을 수 있는 장점이 있다. 텍스트 분석은 '텍스트 마이닝'이라고도 불린다.

반면 자연어 처리는 자동화에 중점을 둔다. 예를 들어, 부정적인 리뷰가 올라오면 담당 팀에 자동으로 알람을 주는 등의 처리를 포함한다. 이는 특히 식품 기업에서 이물질 발견과 같은 긴급한 상황에 빠르게 대응하기 위해 사용될 수 있다.

두 분야는 내용적으로 큰 차이가 없으며, 주로 사용되는 맥락에 따라 구분된다. 자연어 처리는 주로 공대에서, 텍스트 분석은 사회과학대학이나 경영대에서 많이 다룬다. 그러나 실질적인 기법은 거의 동일하다.

더 깊이 공부하고 싶다면, 텍스트 분석이나 자연어 처리라는 제목의 책들을 구분 없이 참고하면 된다. 두 분야의 구분은 내용보다는 활용 목적에 따른 것이므로, 실질적인 기법은 거의 동일하다고 볼 수 있다.

자연어, 인공어, 형식어

자연어는 한국어와 같이 자연스럽게 생겨난 언어를 말한다. 반면에 자연스럽게 생겨나지 않은 언어를 인공어라고 한다.

인공어의 대표적인 예는 에스페란토이다. 에스페란토는 유럽의 한 안과 의사가 언어 차이로 인한 갈등을 해소하기 위해 만든 언어다. 유럽 각국의 언어를 골고루 섞고 문법을 단순화하여 만들었다. 에스페란토 이후로도 많은 인공어가 만들어졌으며, 이를 취미로 만드는 사람들도 있다.

인공어의 특징은 어휘와 규칙이 자연어에 비해 일관성이 있고 단순하다. 자연어는 규칙이 많고 복잡하며 예외도 많지만, 인공어는 인위적으로 만들어졌기 때문에 그런 부분이 적다.

통제자연어는 자연어와 인공어 사이에 있는 언어다. 예를 들어, 군대에서 사용하는 언어가 있다. 자연어를 사용하지만 문법과 어휘를 제약하여 거의 인공어에 가깝게 사용한다. 이는 전쟁이나 군사 작전과 같이 긴급하고 통신이 어려운 상황에서 의사소통의 명확성을 높이기 위함이다. 항공 분야에서도 비행기 기장과 관제탑 사이의 통신에 통제된 표현을 사용한다.

형식어는 굉장히 형식이 정해진 추상적인 언어를 말한다. 예를 들어 수식이나 프로그래밍 언어가 있다. 이것도 크게 보면 인공어라고 할 수 있지만, 일반적인 인공어와 달리 생김새 자체가 사람이 쓰는 말과 다르다. 형식어는 정해진 형식을 갖추어 추상적인 의미를 전달하는 것이 목적이다.

자연어의 특징

복잡하고 예외가 많음

자연어의 주요 특징은 규칙이 매우 복잡하다는 점이다. 예를 들어, 영어는 상대적으로 규칙이 단순한 언어 중 하나이지만, 한국어는 규칙이 훨씬 복잡하다.

언어학에서 중요한 이론 중 하나는 사용 인구가 많을수록 규칙이 단순해진다는 것이다. 실제로 세계에서 가장 단순한 언어는 중국어이며, 그 다음으로 영어가 뒤를 잇는다. 이는 사용자가 많을수록 복잡한 규칙이 통용되기 어렵기 때문이다.

반면, 사용자가 적은 언어는 규칙이 복잡해지는 경향이 있다. 예를 들어, 은어는 좁은 집단 내에서만 통용되기 때문에 규칙이 복잡해도 의사소통이 가능하다. 일부 영화에서 원시부족을 단순한 언어를 사용하는 것으로 묘사하는 것은 언어학적으로 부정확할 수 있다. 오히려 사용 인구가 적은 원시부족의 언어가 더 복잡한 표현을 사용할 가능성이 크다.

자연어의 또 다른 특징은 규칙이 복잡할 뿐만 아니라 예외도 많다는 점이다. 예를 들어, 한국어의 '사귀다'라는 동사를 보면, 문법적으로는 '사귀어'로 활용해야 하지만, 실제로는 '사겨' 또는 '사귀여'로 발음하는 경우가 많다. 이런 예외는 사용자들의 언어 습관에 따라 생기는 것이다.

여러 수준으로 구성

다음은 텍스트 분석과 자연어 처리 강의 내용을 수정하고 재구성한 것이다.

자연어는 여러 가지 수준으로 나누어져 있다. 자연어 처리의 수준을 나누어 보면, 먼저 음운론이 있다. 음운론은 소리와 관련된 것인데, 물리적인 소리가 아닌 심리적인 소리를 다룬다.

예를 들어, '가게'라는 단어를 한국어 화자와 영어 화자가 다르게 듣는 현상이 있다. 한국어 화자는 두 '가게'를 같은 소리로 듣지만, 영어 화자는 첫 번째 '가게'는 'kake', 두 번째 '가게'는 'kage'로 다르게 듣는다. 이는 한국어와 영어의 음운론적 체계가 다르기 때문이다.

반대로, 영어의 'golf'나 'bus', 'dance' 등의 단어에서 어두의 유성음을 한국어 화자들은 유기음으로 발음하는 경향이 있다. 이는 한국어에 어두 유성음이 없기 때문이다.

다음으로 통사론이 있는데, 이는 우리가 흔히 말하는 문법 중 좁은 의미의 문법으로, 말이 어떤 식으로 쓰이는지에 대한 규칙을 다룬다. 그 다음 의미론은 문장의 의미가 어떤 식으로 이루어지는지를 다룬다.

자연어 처리에서는 각 층위마다 다루는 대상이 다르다. 가장 기초적인 단위는 음소로, 언어에서 소리의 가장 작은 단위를 말한다. 음소들이 모여 형태소가 되고, 형태소 중 독립적으로 쓸 수 있는 것을 단어라고 한다. 단어들이 모여 구조를 이루면 그것을 구문구조라고 한다.

그러나 사람이 말을 이해할 때는 반드시 이 순서대로만 처리하는 것은 아니다. 예를 들어, "Time flies like an arrow"와 "Fruit flies like a banana"라는 문장에서 'flies'와 'like'의 품사가 문맥에 따라 달라지는 것을 볼 수 있다. 이는 의미의 이해가 구문 구조나 단어에 대한 처리에도 영향을 미친다는 것을 보여준다.

애매성

자연어 처리는 언어의 복잡성과 예외의 다양성 때문에 많은 어려움을 가지고 있다. 이러한 어려움 중 하나는 애매성(ambiguity)이다.

애매성은 A인지 B인지 명확히 구분되지만 어느 쪽인지 모르는 경우를 말하고, 모호성은 A와 B 사이의 경계가 흐릿해 어디까지가 A이고 어디까지가 B인지 불분명한 경우를 말한다.

텍스트에는 여러 레벨의 애매성이 존재한다. 예를 들어:

  1. 동음이의어 문제: '은행'이라는 단어는 먹는 은행과 금융기관인 은행을 모두 의미할 수 있다. 영어의 'bank'도 금융기관과 강둑을 모두 의미할 수 있다.

  2. 문장 구조의 애매성: "동생과 고기를 들었다"라는 문장은 동생과 협력해서 고기를 들었다는 의미일 수도 있고, 동생도 들고 고기도 들었다는 의미로 해석될 수도 있다.

  3. 의미적 애매성: "아버지는 너무 무거워서 아들을 들 수 없었다"와 "아버지는 너무 약해서 아들을 들 수 없었다"라는 문장에서, 무거운 것과 약한 것의 주체가 다르다.

  4. 관계의 애매성: "영이와 지형은 자매다"와 "영이와 지형은 엄마다"라는 문장에서 관계의 해석이 다르다.

  5. 행위 주체의 애매성: "철수는 민희에게 떠날 것을 약속했다"와 "철수는 민희에게 떠날 것을 명령했다"에서 떠나는 주체가 다르다.

순서

자연어에서는 데이터 값들, 즉 문장을 구성하는 요소들의 순서가 중요하다. 어순이 문장의 의미를 결정하는 중요한 요소이다. 예를 들어, "개가 사람을 물었다"와 "사람이 개를 물었다"는 구성하는 단어들은 같지만, 어순에 따라 의미가 완전히 달라진다.

순서의 중요성은 자연어뿐만 아니라 주가와 같은 다른 순차적 데이터에서도 볼 수 있다. 그러나 자연어는 다른 순차적 데이터보다 훨씬 복잡한 문제를 가지고 있다. 그 중 하나가 의존성 문제이다. 예를 들어, "나는 어렸을 때 프랑스에서 자랐는데... 여전히 불어를 잘한다"라는 문장에서, 문장의 앞부분에 나온 '프랑스'가 문장 끝의 '불어'에 영향을 미친다. 이런 긴 의존성은 다른 순차적 데이터에서는 잘 나타나지 않는 자연어의 특징이다.

또 다른 자연어의 특징은 불연속성이다. 주가와 같은 순차적 데이터는 연속적으로 변화하지만, 텍스트를 구성하는 단어는 기본적으로 불연속적이다. 예를 들어, "밥을 먹었다"에서 "굶었다"로 변화할 때, 그 사이에 중간 단계가 없이 단절적으로 변화한다. 이러한 불연속성 때문에 자연어의 변화를 예측하기가 매우 어렵다.

성인이 보통 알고 있는 단어는 평균적으로 2만 개에서 5만 개 정도로 예상된다. 문장에서 한 단어가 지날 때마다 선택할 수 있는 단어의 수가 2만 개에서 5만 개가 있는 셈이다. 이는 문장이 길어질수록 가능한 조합의 수가 기하급수적으로 증가함을 의미한다. 예를 들어, 2만 개의 단어를 기준으로 할 때, 한 단계를 지나면 2만 개, 두 단계를 지나면 4억 개, 세 단계를 지나면 8조 개의 조합이 생긴다. 이러한 급격한 증가로 인해 문장의 예측이나 분석이 매우 어려워진다.

또한, 문장의 복잡한 문법적 구조가 눈에 잘 보이지 않는 것도 문제다. 예를 들어, 동사와 그 동사의 목적어 사이의 관계가 문장에 직접적으로 드러나지 않는 경우가 있다. 이런 경우 문장을 앞뒤로 잘 읽어보고 이해해야 하는데, 이는 영어 독해 등에서 어려움을 느끼게 하는 원인이 된다.

더 나아가, 재귀(recursion)라는 현상도 있다. 이는 어떤 구조 안에 똑같은 구조가 또 들어갈 수 있는 것을 말한다. 예를 들어, "철수가 영희를 사랑한다"라는 문장에 "민수가 모른다"라는 구조를 추가하여 "철수가 영희를 사랑하는 것을 민수가 모른다"라고 할 수 있다. 이러한 구조는 무한히 반복될 수 있어, "영희는 민수가 철수를 영희를 사랑하는 것을 모른다는 것을 안다"와 같은 복잡한 문장을 만들어낼 수 있다.

이러한 재귀 구조는 긴 의존성을 만들어내는 원인 중 하나가 된다. 주어와 동사가 멀리 떨어져 있게 되면서 의존성이 길게 생기는 것이다.

수많은 언어

다음은 자연어의 다양성과 자연어 처리의 접근 방식에 관한 강의 내용을 수정하고 재구성한 것이다.

전 세계에는 수천 개의 언어가 있으며, 이 언어들은 각각 다르다. 언어학자들은 이러한 언어들 사이에서 공통성을 찾으려고 노력한다. 예를 들어, 영어와 한국어의 어순 차이를 통해 '핵어 선치'와 '핵어 후치'라는 패턴을 발견했다. 이러한 패턴은 대부분의 언어에서 일관되게 나타나는 경향이 있다.

그러나 이러한 언어의 보편성에 대한 논쟁도 있다. 피라하 언어 논쟁이 그 예인데, 아마존 깊은 밀림에서 발견된 피라하 언어는 기존에 알려진 언어의 특징들을 가지고 있지 않다고 한다. 이는 언어의 보편적 특징이 실제로는 우리가 알고 있는 일부 언어의 특징일 뿐이라는 주장을 뒷받침한다. 하지만 이러한 주장을 검증하기 어려운 것이 현실이다.

자연어 처리와 언어학 분야는 주로 영어권 중심으로 발전해왔다. 따라서 한국어와 같은 다른 언어에 적용하려면 추가적인 노력이 필요하다. 최근에는 이러한 격차가 많이 줄어들었지만, 여전히 한국어 자료를 찾기 어려운 경우가 있다.

자연어 처리가 어렵다는 점은 역설적으로 이 분야의 접근 방식을 바꾸게 했다. 과거에는 언어의 규칙을 하나하나 코딩하려 했지만, 이는 실현 가능성이 낮다는 것을 깨달았다. 그 결과, 현재의 자연어 처리는 복잡한 규칙을 무시하고 단순하면서도 효과적인 방법을 찾는 데 초점을 맞추고 있다.