자연어 처리는 한 마디로 말하면 인간의 말을 컴퓨터가 알아듣게 변환하는 것을 말한다.
그러기 위해서는 텍스트를 숫자의 조합으로 변환시켜야 한다. 컴퓨터라는 것은 숫자를 제일 잘 알아 들으니까.
여기에는 여러 가지 고려 사항이 있다.
우선 가장 먼저 할 것이 오타와 띄어쓰기 처리.
대부분의 글은 사람이 쓰는 것이라 많은 오타가 있을 수 밖에 없다.
예를 들어 구글 검색에서 브리트니 스피어스(Britney Spears)를 검색하면서 생긴 오타를 한 번 보자.
이 많은 오타가 각각 다른 단어로 인식된다면 결과치의 정확성이 떨어질 뿐 아니라 너무 많은 단어들로 인해 컴퓨팅 파워의 낭비도 심해진다.
그래서 제일 먼저 할 것이 오타하고 띄어쓰기를 교정해서 표준적인 단어와 문법으로 만들어 두는 것이다.
이를 잡음소거 혹은 Noise Canceling 이라고 한다.
노이즈 캔슬링을 한 후에는 필요한 단위로 문장을 끊어 두어야 한다. 이는 띄어쓰기 단위로 할 수도 있고 단어별로, 형태소별로 여러 가지 끊는 방법이 있는데 이는 다음 글에서 보다 자세하게 이야기할 생각이다.
그리고 할 일은 각 각 끊어놓은 요소가 어떤 역할을 하는 지 분석해서 필요 없는 부분은 삭제한다.
다음은 나는 당신을 사랑해요
라는 문장을 각각 다른 방법으로 구분해 놓은 예 이다.
- 나는 당신을 사랑해요 (띄어쓰기로 구분할 경우)
- 나 는 당신 을 사랑 해요 (단어로 구분할 경우)
- 나 는 당신 을 사랑 하 ㅣ요 (형태소로 구분할 경우)
이렇게 끊은 후에는 보통 필요한 요소만 남기고 다 지워 버린다.
위 문장은 대략 다음과 같은 요소만 남기면 될 것이다.
나 당신 사랑
이것이 유일하고 최선의 방법은 아니다. 어떻게 구분하고 어떤 요소를 지울 것인지는 목적과 상황에 따라서 달라진다. 감성분석을 할 것인지, 쿼리문 분석을 할 것인지에 따라서 방법이 달라지기도 하고, 시스템 처리 속도 때문에 보다 심플한 방법을 어쩔 수 없이 선택하는 경우도 있다. 아주 약간의 정확도 향상을 위해서 몇 배 더 복잡한 계산을 할 필요가 없는 경우도 많다.
이렇게 필요한 요소들만 남기고 나면 이 요소들을 가지고 사전을 구성해서 벡터로 변환 시키면 된다.
요약하면
- 맞춤법 및 띄어쓰기 교정
- 문장 구분
- 구분된 요소 분석
- 필요없는 부분 삭제
- 숫자로 변환
이런 과정을 거치면 우리는 문장을 숫자로 정확하게 말하면 벡터나 행렬로 변환시킬 수 있다.
벡터나 행렬로 변환되면 수학적 모델을 적용하기 쉬워지고, 이를 바탕으로 머신러닝을 할 수 있는 것이다.