NLP + Pytorch/1강 - intro to Deep Learning & NLP

1-2강 - NLP와 한국어 NLP가 어려운 이유

intelligentcm 2020. 3. 2. 17:06

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> 문'제'점, 결'제', '제'공