자연어 처리란 다루는 분야는 다양하지만, 그 본질적 문제는 컴퓨터가 우리의 말을 알아듣게 하는 것이다.
이는 영어로 NLP(Natural Language Processing)이라고도 불리며, 결국은 우리의 말을 컴퓨터에게 이해시키기 위한 분야이다.
우리가 일반적으로 아는 프로그래밍 언어는 문법을 통해 코드를 컴퓨터가 해석하도록 하는 것이다. 즉, 컴퓨터는 우리의 언어를 이해하는 것이 아니라 컴파일 등을 통해 번역한 언어를 알아듣는 것이다.
우리의 말은 ‘문자’로 구성되며, 말의 의미는 단어로 구성된다. 즉, 단어란 의미의 최소 단위라는 것이다. 따라서 우리의 목표는 단어를 컴퓨터에게 이해시키는 것이다.
‘단어의 의미’를 나타내는 방법으로는 사람이 직접 단어의 의미를 정의하는 방식을 생각할 수 있다. 그 예로는 단어 사전처럼 각 단어의 의미를 설명하는 것이다.
자연어 처리의 역사를 돌아보자면, 이전에는 단어 사전과 같이 사람이 이용하는 일반적인 사전이 아니라 시소러스 형태의 사전을 많이 사용하였다. 이 때, 시소러스란 유의어 사전으로 뜻이 같거나 비슷한 그룹으로 분류된 사전이다.
자연어 처리에서 가장 유명한 시소러수눈 WordNet이다. 이를 사용하면 유의어를 얻거나 ‘단어 네트워크’를 이용할 수 있다. 그리고 그 단어 네터위커를 통해 단어 단의 유사도를 구할 수 있다.
시소러스에는 수많은 단어에 대한 동의어와 계츨 구조 등의 관계가 정의되어 있다. 하지만 이러한 시소러스에는 문제점들이 있다.
따라서 이러한 문제를 해결하기 위해 통계기반 및 신경망을 통한 추론 기반 기법들이 생겨나었고, 앞으로 그를 알아보도록 하겠다.
통계 기반 기법을 알아보며 우리는 copus인 말뭉치를 이용할 것이다. 말뭉치란 대량의 텍스트 데이터이다. 그리고 그 안의 데이터들은 사람들이 쓴 글이e다. 따라서 말뭉치 안에는 자연어에 대한 사람의 ‘지식’이 담겨 있다고 볼 수 있다.