컴퓨터가 자연어 데이터를 처리하도록 하는건 쉽지 않은데요. 자연어가 가진 몇 가지 특성 때문에 그렇습니다. 본격적인 학습 전에 자연어 처리에 어떤 어려움이 있는지 간단하게 살펴보겠습니다.
같은 자연어가 두 개 이상의 의미를 가지는 경우
아래와 같이 형태가 같더라도 여러 의미를 가지는 단어가 있습니다.
● She had the lead in a new film.
● She found lead.
위 문장에서 공통으로 사용된 단어 lead는 '이끈다'와 '납'이라는 두 가지 의미를 가지는데요. 어떤 문장에서 어떤 의미로 사용되었는지가 표면적으로 나타나지 않기 때문에 문장의 정확한 의미를 모호하게 만듭니다. 만약에 lead를 이끈다라는 의미로만 알고 있다면 납이라는 뜻으로 사용된 문장의 의미는 제대로 해석하기 어렵겠죠?
또, 같은 문장이 여러 의미를 가지는 경우도 있습니다.
● 너는 웃으며 걸어가는 나에게 인사했다.
위 문장은 아래와 같이 두 가지 의미로 해석됩니다.
● 너는 웃으며 / 걸어가는 나에게 / 인사했다.
● 너는 / 웃으며 걸어가는 나에게 / 인사했다.
이렇게 중의적인 문장의 의미를 파악하는건 사람에게도 쉽지 않은데요. 마찬가지로 컴퓨터도 중의적인 문장에 굉장히 취약합니다.
다른 자연어가 같은 의미를 가지는 경우
자연어의 표기가 전혀 다르지만 같은 의미를 가지는 경우가 있습니다. 비슷한 의미의 단어가 많고, 문장의 표현 형식이 다양한 언어일수록 이런 경우가 많이 발생합니다.
예를 들어, 아래 두 문장은 표현 방식이 다르지만 의미는 같습니다.
● 비행기가 1시에 떠날 예정입니다.
● 비행기 출발 시간은 1시입니다.
이렇게 동일한 의미를 다양한 방식으로 표현하는 걸 패러프레이징(Paraphrasing)이라고 합니다. 그리고 패러프레이징 된 두 문장의 의미가 같다는 것을 컴퓨터에게 이해시키는 건 굉장히 어렵습니다.
단어 간의 관계성
파랑과 빨강 중 분홍과 더 유사한 단어는 무엇일까요? 단어의 의미를 알고 있는 사람이라면 '빨강'이라고 쉽게 답할 수 있을 텐데요. 하지만 컴퓨터로는 이 작업을 처리하는게 어렵습니다.
단어 간에는 의미를 기준으로 유사하거나, 다르거나, 포함되는 등 특정한 관계가 형성됩니다. 그리고, 그런 단어 사이의 관계를 잘 파악해야만 자연어의 의미를 제대로 해석할 수 있습니다.
하지만 컴퓨터는 자연어의 의미를 직관적으로 받아드릴 수 없습니다. 때문에 단어 간의 관계 정보를 컴퓨터가 파악하도록 하려면 복잡한 과정이 필요합니다.
한국어 자연어 처리가 더 어려운 이유
특히 한국어는 다른 언어보다 자연어 처리가 더 어려운데요. 위에서 설명한 이유 외에도 한국어가 가지는 고유한 특성들 때문에 그렇습니다.
접사와 조사 처리
한국어는 교착어입니다. 교착어란 어근에 붙는 접사에 따라 의미가 변하는 언어를 뜻하는데요. 예를 들어, '잡히시었겠더라'라는 예문은 어근에 붙는 접사에 따라 다양한 의미가 추가된 경우에 해당합니다.
● 잡-: 어근
● 히-: 피동을 의미하는 접사
● 시-: 주체 높임을 의미하는 접사
● 었-: 과거 시제를 의미하는 접사
● 겠-: 추측을 의미하는 접사
● 더라: 전달을 의미하는 접사
또 어떤 조사가 붙냐에 따라서도 의미가 달라집니다. 예를 들어 '너가' '너를' '너의' 등은 '너' 뒤에 어떤 조사가 붙느냐에 따라 다른 의미를 갖게 됩니다.
보통 자연어 처리를 하려면 어떠한 단어의 어근을 찾아서 사용하는게 일반적입니다. 하지만 한국어는 어근에 붙는 접사와 조사의 종류가 다양하며 의미 차이에 큰 영향을 주기 때문에 컴퓨터로 깔끔하게 처리하기가 어렵습니다.
유연한 어순
한국어의 어순은 굉장히 유연합니다. 예를 들어 아래 세 문장은 모두 동일한 의미를 가지는데요.
● 나는 공부하러 간다.
● 공부하러 나는 간다.
● 나는 간다, 공부하러.
심지어 주어를 생략하고 '공부하러 간다'라고만 해도 의미는 같습니다. 이렇게 유연한 어순 때문에 컴퓨터가 다음에 출현할 단어를 예측하는게 어렵습니다.
잘 지켜지지 않는 띄어쓰기
한국어는 띄어쓰기를 철저하게 지키지 않아도 문장의 의미를 이해할 수 있습니다. 아래 문장도 띄어쓰기는 안돼있지만 무슨 의미인지는 알 수 있죠?
● 나는티스토리블로그를쓴다.
하지만, 경우에 따라서는 띄어쓰기가 구분되지 않아 의미가 모호해지는 경우가 있습니다.
● 아버지가방에들어가신다
위 문장은 '아버지가 방에 들어가신다'라는 의미일 텐데요. 만약 띄어쓰기가 잘못되면 '아버지 가방에 들어가신다'라는 이상한 문장이 되버립니다.
그래서 한국어 자연어 데이터를 처리할 때에는 정확한 띄어쓰기가 되도록 먼저 처리해야 합니다. 그런데 컴퓨터가 문장의 띄어쓰기를 잘 처리하도록 하는건 어려운 일입니다.
한국어가 영어보다 다루기도 어렵고, 관련 자료나 도구도 주로 영어로 발전했습니다. 그래서 처음 자연어 처리를 배울 때에는 영어 텍스트를 다루는게 조금 더 수월합니다.
이번 포스팅에서도 기본적으로 영어 텍스트를 어떻게 처리하는지 살펴보면서 자연어 처리의 전반적인 흐름을 살펴보겠습니다. 한국어 자연어 처리에 대해서는 마지막 챕터에서 정말 간단하게만 소개하겠습니다. 필요한 분들은 마지막 챕터를 통해 한국어 자연어 처리도 연습해 보시기 바랍니다.
출처 코드잇
'Data Analysis > Natural Language Processing(NLP)' 카테고리의 다른 글
정제(Cleaning) (2) | 2023.06.06 |
---|---|
단어 토큰화 실습 (0) | 2023.06.06 |
단어 토큰화(Word Tokenization) (0) | 2023.06.06 |
자연어 전처리란? (0) | 2023.06.06 |
자연어 처리란? (0) | 2023.06.05 |