1-2강 - NLP와 한국어 NLP가 어려운 이유
1. NLP가 어려운 이유
0) discrete한 단어들로 이루어져 있다.
1) 모호성
1> 번역 시 존재하는 동음이의어 표현에 대한 대처가 어렵습니다.
- 한영 번역
('나는 차였어' 라는 유명한 말을 사용한 예시입니다. ㅎㅎ)
예시 | 차를 마시러 공원에 가던 차 안에서 나는 그녀에게 차였어 |
1 | I was kicking her in the car that went to the park for tea |
2 | I got dumped by her on the way to the park for tea |
3 | I was in the car going to the park for tea and I was in her car |
4 | I was a car to her, in the car I had a car and went to the park |
2> 문맥의 부족으로 인한 모호성 (부정사의 영향권에 의한 중의성)
예시 | 나는 철수를 안 때렸다. |
의미 1 | 철수는 맞았지만, 때린 사람이 나는 아니다. |
의미 2 | 나는 누군가를 때렸지만, 그게 철수는 아니다. |
의미 3 | 나는 누군가를 때린 적도 없고, 철수도 맞은 적은 없다. |
언어는 최소한의 표현으로 최대한의 정보를 표현하려 합니다.
사람은 이 정도의 표현도 문맥을 통해 문장을 정확히 이해할 수 있지만
컴퓨터는 그렇지 못합니다.
3> 동사의 상적 속성에 따른 중의성
예시 | 선생님은 울면서 돌아오는 우리를 위로했다. |
의미 1 | (선생님은 울면서) 돌아오는 우리를 위로했다. |
의미 2 | 선생님은 (울면서 돌아오는 우리를) 위로했다. |
2) 다양한 표현
문장의 표현 형식은 다양하며 비슷한 의미의 단어들이 존재한다.
그에 따라 사람들이 이해하는 단어의 의미는 각각 미묘하게 다를 수 있다.
3) discrete data
과거에는 discrete한 상태로 접근해서 큰 문제가 되지 않았지만
현재 딥러닝에서는 continuous한 값으로 바꿔야 합니다.
이는 현재 word embedding을 통해 값을 변환합니다.
애초에 discrete한 data를 continuous한 data로 변환하는 것이기에 제약이 존재합니다.
1> 차원의 저주
- 문제: discrete한 symbol로 다뤄서 어휘의 개수만큼의 차원이 필요합니다.
- 해결: word embedding을 통해 dimension reduction을 하여 이 문제를 해결합니다.
2> noise
- 문제 1: discrete한 symbol인 단어는 문장 내에 존재하는 noise를 잘못 제거했다가 문장의 의미가 크게 바뀔 수 있습니다.
- 문제 2: 띄어쓰기나 어순의 차이로 인한 normalization의 이슈도 큰 어려움입니다.
2. 한국어 NLP가 어려운 이유
1) 교착어
0> 배경지식
종류 | 예시 | |
교착어 | 한국어, 일본어, 몽골어 | 어간에 접사가 붙어 단어를 이루고 의미와 문법적 기능이 정해짐 |
굴절어 | 라틴어, 독일어, 러시아어 | 단어의 형태가 변함으로써 문법적 기능이 정해짐 |
고립어 | 영어, 중국어 | 어순에 따라 단어의 문법적 기능이 정해짐 |
1> 원형이 같아도 접사에 따라 의미가 많이 달라집니다.
피동 | 높임 | 과거 | 추측 | 전달 | 결과 | ||
잡 | +다 | 잡다 | |||||
잡 | +히 | +다 | 잡히다 | ||||
잡 | +히 | +시 | +다 | 잡히시다 | |||
잡 | +히 | +시 | +었 | +다 | 잡히셨다 | ||
잡 | +았(었) | +다 | 잡았다 | ||||
잡 | 겠 | +다 | 잡겠다 | ||||
잡 | +더라 | 잡더라 | |||||
잡 | +히 | +었 | +다 | 잡혔다 |
=> 추가적인 분절을 통해 같은 어근에서 생겨난 단어를 처리합니다.
2> (접사에 따라 단어의 역할이 정의되기 때문에) 상대적으로 어순은 중요하지 않습니다.
2) 띄어쓰기
한국은 띄어쓰기가 근대에 도입되었습니다.
1> 띄어쓰기에 대한 표준이 계속 바뀌고 쓰는 사람마다 다릅니다.
2> 띄어쓰기가 아예 없어도 해석이 가능합니다.
=> 결국 추가적인 분절이 필요합니다.
3) 평서문과 의문문
1> 한국어에도 의문문을 나타낼 수 있는 접사가 있습니다.
2> 하지만 의문문과 평서문이 같은 형태의 문장구조를 가지는 경우도 있습니다.
ex> 점심 먹었어. vs 점심 먹었어?
4) 주어 생략
영어는 기본적으로 명사가 중요합니다.
1> 한국은 동사를 중요시하고 주어가 자주 생략됩니다.
=> (컴퓨터에게 상대적으로 부족한)문맥이 필요합니다.
5) 한자 기반의 언어
1> 각 글자의 조합으로 합쳐진 의미를 가지는 단어가 존재
2> 표어 문자인 한자를 표음 문자인 한글로 표현하면서 '정보의 손실'이 생기고
3> 그로 인해 모호성의 문제가 생겼습니다. (인간은 문맥으로 극복이 가능하지만 컴퓨터에게는 어려운 일입니다.)
4> 단어를 단어 내부의 한자 각각의 임베딩 벡터들의 합(평균)으로 표현하면 애매한 표현이 될 수 있다.
ex> 문'제'점, 결'제', '제'공