SonJJU

NLP #1

NLP를 하려면 일단 인간의 언어가 가지는 특징을 알아야 한다. 더 깊게는 언어 자체에 대한 이해도 필요하지만 그것까지 다루기에는 무리다. 먼저는 자연어의 특징부터 시작하자.

언어는 의미를 전달하기 위해 만들어진 시스템이다. 하지만 어떤 물질적인 것으로 만들어 진 것은 아니다. 그렇기 때문에 시각 정보나 기존의 기계 학습과는 완전히 다른 정보를 가진다. 자연어는 기본적으로 이산적/상징적/분류적인 시스템을 가지고 있다.

대부분의 언어는 단지 언어 외의 어떤 것들의 대한 상징이다. 예를 들어, 단어 ‘로켓’은 로켓이란 것에 대한 개념을 의미한다. 또 언어의 특성상 ㅋㅋㅋ, ㄴㄴ와 같이 표현적인 것을 위해 단어나 글자가 사용되기도 한다. 게다가 언어의 상징적인 것들은 제스쳐, 목소리, 쓰기 같은 연속적인 방식을 통해 전달되기도 한다. 언어 철학이나 언어학에서는 자연어를 개념화 했고 단어를 그것들의 개념, 의미로 부터 구별했다.

NLP에는 다양한 분야가 있고 그것들의 난이도 또한 다르다. 이 모든 NLP의 목적은 컴퓨터가 자연어를 이해하게 만드는 것이다.

쉬움

1. 맞춤법 확인

2. 키워드 검색

3. 동의어 찾기

중간

1. 웹, 문서로 부터 정보 가져오기

어려움

1. 기계 번역

2. 의미 분석

3. 동일 지시어 구분

4. 질문 답변

NLP의 가장 첫 단계는 언어를 데이터화 하는 것이다. 이전의 NLP는 글자 각각을 상징으로 보았다. 하지만 자연어의 특성상 단어들간의 비슷함과 다름의 정도를 구분해야한다. 그래서 이러한 특성을 가진 word vector 란 것이 나왔다.

영어에는 대략 1300만개의 낱말이 있다. 하지만 이것들이 모두 서로에 대해 독립적인 건 아니다. 호텔과 모텔, 주택과 아파트 같이 말이다. 그래서 낱말, 낱말들 간의 관계를 잘 표현하는 ‘word’ 공간이 필요하다. 이것이 word vector를 사용하는 가장 중요한 이유이고 직관적으로는 N 차원의 우리의 단어를 담을 수 있는 공간이 있다는 것이다. N은 1300만 보다는 훨씬 작을 것이다. 각각의 차원은 우리가 사용하는 언어의 특징을 의미한다. 예를 들어, 어떤 차원은 시제의 의미를 담을 것이고 다른 것은 성별의 의미를 담을 것이다.

이러한 word vector중 가장 간단한 모델은 one-hot vector이다. 이것은 모든 단어를 $\mathbb{R}^{|V|}$ 벡터에서 0과 1로 표현한다. 여기서 $|V|$는 언어가 가진 단어의 갯수이다. 하지만 이 모델은 비슷한 것들의 관계를 표현하지는 못한다. $(w^{hotel})^Tw^{motel}=0$처럼 말이다. 또 이런 방식이면 메모리를 어마어마하게 차지하게 될 것이다.

이것을 보완한 것이 SVD Based 방법들이다. 이건 먼저 모든 단어의 갯수를 세서 X라는 행렬로 만든다. 다음 Singular Value Decomposition을 하여 UST`를 얻는다. 여기서 얻은 U를 word space로 사용한다. 가장 처음 X를 어떻게 만드느냐에 따라 모델이 달라지기에 SVD Based Methods 이라고 한다. SVD Based Methods 부터는 다음 포스팅에 한다.

저작자 표시 비영리 변경 금지
신고

'Data Science > NLP' 카테고리의 다른 글

NLP- word vector  (0) 2017.09.26
DISQUS 로드 중…
댓글 로드 중…

블로그 정보

SonJJU - 손주형

Data Scientist, SonJJU

최근에 게시된 글

티스토리 툴바