선릉역 1번 출구

자연어 처리-1 본문

Computer/AI

자연어 처리-1

choideu 2021. 7. 10. 01:10

자연어 처리는 크게 어떤 문제를 해결하려고 하느냐에 따라 분류된다.

어떤 문제가 있는지 그리고 각 문제에 대한 내용을 먼저 살펴보려고한다.

 

그 전에 단어표현이라는 것에 대해서 알아보자. 단어표현이란 모든 자연어 처리 문제의 기본 바탕이 되는 개념으로 자연어를 어떻게 표현할지 정하는 것이 각 문제를 해결하기 위한 출발점이 된다. (모든 데이터 과학 분야에서 데이터를 이해하는 것이 가장 중요하다)

 

자연어 처리에서 가장 중요한 포인트가 되는 것은 '컴퓨터에게 자연어를 어떻게 인식시킬 수 있을까?'이다.

컴퓨터가 텍스트를 인식하는 기본적인 방법은 여타 값들과 동등하게 이진화된 값으로 받아들인다. text는 유니코드를 사용해서 인식할 수 있게 된다. 하지만 자연어 처리에서 이 방법을 사용하는데는 무리가 있다. 문자를 이진화한 값은 언어적인 특성이 전혀 없이 컴퓨터가 문자를 인식하기 위해 만들어졌기 때문이다.

그래서 우리는 단어 표현(word representation)분야에서 해결점을 찾는다. 단어 표현이란 텍스트를 자연어 처리를 위한 모델에 적용할 수 있게 언어적인 특성을 반영해 단어를 수치화하는 방법을 찾는 것인데 단어 임베딩 또는 단어 벡터로 표현하기도 한다.

 

단어를 표현하는 가장 기본적인 방법: 원-핫 인코딩(one-hot encoding) 방식이다.

각 단어의 인덱스를 정한 후 각 단어의 벡터에서 그 단어에 해당하는 인덱스의 값을 1로 표현하는 방식으로 매우 간단하고 이해하기도 쉽다. 그러나 2가지 문제점이 있다. 첫번째는 실제 자연어 처리 문제를 해결할 때는 단어가 매우 많기 때문에 단어 벡터의 크기가 커져 공간을 많이 사용한다는 것이고 두번째는 벡터값 자체에 단어의 의미나 특성이 전혀 표현되지 않는다는 것이다.

-> 분포 가설(Distributed hypothesis): 같은 문맥의 단어, 즉 비슷한 위치에 나오는 단어는 비슷한 의미를 가진다

1. 카운트 기반(count-base) 방법: 특정 문맥 안에서 단어들이 동시에 등장하는 횟수를 직접 세는 방법

(특이값 분해/잠재의미분석/hyperspace Analogue to Language/Hellinger PCA) -> 모두 동시 출현 행렬을 만들고 그 행렬들을 변형하는 방식

2. 예측(predictive) 방법: 신경망 등을 통해 문맥 안의 단어들을 예측하는 방법

(word2vec/NNLM/RNNLM)

word2vec->CBOW/Skip-Gram으로 나뉜다.(서로 반대되는 개념이라고 생각)

CBOW: 어떤 단어를 문맥 안의 주변 단어들을 통해 예측하는 방법

Skip-Gram: 어떤 단어를 가지고 특정 문맥안의 주변단어들을 예측하는 방법

 

결론 word2vec에서는 skip-gram의 성능이 좋아 보톤 skip-gram을 사용한다.(절대적인 것은 아니기 때문에 상황에 맞춰서 고려) 그리고 카운트 기반 방법보다는 예측 기반 방법을 사용하고 두 가지 방법을 모두 포함하는 'Glove'라는 단어 표현 방법 또한 자주 사용된다.

 

+더 자세하게 적혀있는 블로그를 찾았다

https://soyoung-new-challenge.tistory.com/32

'Computer > AI' 카테고리의 다른 글

4-2  (0) 2021.07.13
4-1  (0) 2021.07.13
3-3  (0) 2021.07.08
3-2  (0) 2021.07.08
3-1  (0) 2021.07.08
Comments