자연어 처리란?
언어는 크게 인공어와 자연어로 나눌 수 있다.
인공어는 정보 전달을 위해 인위적으로 만들어진 언어로, 대표적으로 사람과 컴퓨터의 소통을 위해 만들어진 프로그래밍 언어가 있다. 반대로 사람들의 일상 생활에서 자연 발생된 언어를 자연어라고 한다.
자연어에는 다양한 정보들이 담겨져 있으나 컴퓨터는 인공어로만 소통하므로 자연어를 다루려면 별도의 처리 과정이 필요하다.
그 과정을 자연어 처리(NLP: Natural Language Processing)이라고 한다.
자연어 처리 하위 분야에는 자연어 이해(NLU: Natural Language Understanding)와 자연어 생성(NLG: Natural Language Generation)이 있다.
자연어 처리 방법
규칙 기반 접근법(Rule Based Approach)
정해진 규칙을 통해 자연어를 처리하는 것으로, 예를 들어 100일, 100미터, 100원은 앞에 숫자가 오고 뒤에 문자가 온다는 규칙성이 있다. 이 규칙성을 토대로 숫자 뒤에 '일'이 나오면 날짜, '미터'가 나오면 거리, '원'이 나오면 돈과 관련된 의미를 가진다는걸 알 수 있다. 규칙 기반 접근법은 일정한 패턴을 가지는 자연어에 대해 안정적으로 좋은 성능을 낼 수 있으므로 실제 상용 서비스에서도 많이 활용되고 있다.
통계 기반 접근법(Statistical Based Approach)
일정한 규칙이 없는 경우에 사용할 수 있는데, 예를 들어 문서에서 가장 중요한 키워드가 무엇인지 찾고 싶은 상황일 때 특정 단어의 출현 빈도를 통해 자연어의 중요도를 파악하는 것이 대표적인 방법이다.
머신러닝, 딥러닝을 활용한 자연어 처리 기법도 통계 기반 접근법인데 일관된 패턴을 파악하기 어려운 자연어에서도 유의미한 정보를 찾을 수 있기 때문에 많은 관심을 받고 있다.
자연어 처리가 어려운 이유
같은 자연어가 두 개 이상의 의미를 가지는 경우
- 너는 웃으며 걸어가는 나에게 인사했다.
- 너는 웃으며 걸어가는 나에게 인사했다.
다른 자연어가 같은 의미를 가지는 경우
- 비행기가 1시에 떠날 예정입니다.
- 비행기 출발 시간은 1시입니다.
단어 간의 관계성
- 분홍과 더 유사한 단어는? 파랑 vs 빨강
한국어 자연어 처리의 어려움
1. 접사와 조사 처리
- 한국어는 교착어이다. 교착어란 어근에 붙는 접사에 따라 의미가 변하는 언어인데, 예를 들어 '잡히시었겠더라'라는 예문은 어근에 붙는 접사에 따라 다양한 의미가 추가된 경우에 해당한다.
- 잡-: 어근
- 히-: 피동을 의미하는 접사
- 시-: 주체 높임을 의미하는 접사
- 었-: 과거 시제를 의미하는 접사
- 겠-: 추측을 의미하는 접사
- 더라: 전달을 의미하는 접사
- 또, 어떤 조사가 붙냐에 따라서도 의미가 달라진다. 예를 들어 '너가', '너를', '너의' 등은 '너' 뒤에 어떤 조사가 붙느냐에 따라 다른 의미를 가진다.
2. 유연한 어순
- 나는 공부하러 간다.
- 공부하러 나는 간다.
- 나는 간다, 공부하러.
3. 잘 지켜지지 않는 띄어쓰기
- 아버지가방에들어가신다.