본문 바로가기
Al Basic/NLP

[NLP] Text Representation

by whybe 2023. 9. 25.
고려대학교 산업경영공학부 DSBA 강필성 교수님의 '[Korea University] Unstructured Data Analysis(Text Analytics)'

Count-based Representations

 문서 내 사용되는 단어의 수나 문서의 길이가 문서마다 다르기 때문에 텍스트 데이터를 알고리즘에 적용하기 위해서는 각 단어를 고정된 길이의 벡터로 표현하는 것이 중요하다. 이때 각 단어가 등장한 횟수를 기반으로 표현하는 것을 Count-based Representation 라고 한다. 전체 문서에서 등장한(= corpus 내에 있는) 단어의 수가 $d$이고 각 문서를 $x$ 라고 할 때, $x \in R^{d}$ 라고 할 수 있다.

1) Bag of Words(BoW)

https://jiho-ml.com/weekly-nlp-2/

  • 단어들의 빈도로부터 내용은 추론될 수 있다는 전제를 갖는다.
  • 단어의 순서를 고려하지 않고 문서 내에 등장한 모든 단어를 나열한 뒤 해당 단어가 등장한 횟수를 표기하는 방법
    • "John is quicker than Mary"와 "Mary is quicker than John"은 BoW의 관점에서 동일하게 표현된다. → BoW을 기반으로 원래의 문장을 복원하기는 어렵다.

2) Word Weighting

https://github.com/pilsung-kang/Text-Analytics/blob/master/04%20Text%20Representation%20I%20-%20Classic%20Methods/04_Text%20Representation%20I_Classic%20Methods.pdf

  • 특정 단어가 해당 문서 내에서 얼마나 중요한지를 표현하는 방법
  • TF-IDF(Term Frequency-Inverse Document Frequency, 단어 빈도-역 문서 빈도)
    • $tf_{t, d}$  : 특정한 문서 $d$에서 단어 $t$가 등장하는 횟수
    • $df_{t}$ : 특정 단어 $t$가 등장한 문서의 수 → 적게 등장한 단어에 대해 더 높은 가중치를 부여한다.
    • $idf_{t}$ : $\log_{10}(N/df_{t})$ ($N$ : 전체 문서의 수)
    • $TF-IDF(t) = tf(w) \times \log (\frac{N}{df(w)})$
  • TF-IDF 는 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단한다.

3) BoW와 TF-IDF 의 단점

  • BoWTF-IDFtopic classification이나 document retrieval 같이 문장의 순서가 중요하지 않은 task에서 강점을 보이지만, machine translation과 같이 순서가 중요한 task에서는 순서에 대한 정보를 생략하기 때문에 성능이 떨어진다.
  • corpus의 크기가 커질수록 단어를 표현하는 벡터의 크기가 커지며, 벡터의 대부분은 0으로 채워지게 된다. (Sparseness)

고려대학교 산업경영공학부 DSBA 강필성 교수님의 '[Korea University] Unstructured Data Analysis(Text Analytics)'

Distributed Representations

 

https://jiho-ml.com/weekly-nlp-4/

 Count-based Representations(BoW, TF-IDF 등)은 단어가 sparse한 형태로 표현하기 때문에 매우 비효율적이며, One-hot vector로 단어를 표현할 경우에는 단어 간의 유사도를 측정할 수 없다. 이러한 sparse한 형태와 달리 실수값으로 이뤄진 벡터의 표현을 dense representation 라고 하며, dense한 형태로 벡터를 표현하는 방법을 Word Embedding 이라고 한다.

1) Word2Vec

https://github.com/pilsung-kang/Text-Analytics/blob/master/05%20Text%20Representation%20II%20-%20Distributed%20Representation/05_Text%20Representation%20II%20-%20Distributed%20Representation_Word2Vec.pdf

Word2Vec은 크게 CBOW(Continuous bag-of-words)Skip-gram 방식을 나뉜다.

  • CBOW : $t$번째 단어인 $w(t)$를 예측하기 위해 주변 단어를 input으로 사용한다.
  • Skip-gram : $t$번째 단어인 $w(t)$를 이용하여 주변 단어들을 예측한다.

Skip-gram

Skip-gram은 다음과 같은 Objective function을 사용한다.

$$J(\theta) = \frac{1}{T} \Sigma_{t=1}^{T} \Sigma_{-m \leq j \leq m , j \neq 0} \log (w_{t+j}|w_{t})$$ 

중심 단어($w_{t}$)가 주어졌을 때 주변 단어($w_{t+j}$)들의 log probability가 최대가 되도록 하는 $\theta$를 찾는 것이 Skip-gram의 목적이다.

이때, $p(w_{t+j}|w_{t})$는 다음과 같은 표현으로 대신하여 계산할 수 있다.

$$ P(o|c) = \frac{\exp(u_{o}^Tv_{c})}{\Sigma_{w=1}^W \exp(u_{w}^T v_{c})} $$

  • $o$ - 주변 단어, $u$ - 주변 단어에 대한 벡터
  • $c$ - 중심 단어 , $v$ - 중심 단어에 대한 벡터
  • $v$는 $W_{V \times N}$의 행이며, $u$는 $W'_{N \times V}$의 열이다. (계산의 편의상, $W'= W^T$로 두기도 한다.)

위의 식을 바탕으로 Gradient를 계산하면

 

Objective function을 최대로 하는 $\theta$를 찾는 것이 목적이었기 때문에 Gradient Ascent를 적용한다.

CBOW와 Skip-gram의 목적함수는 코퍼스에 존재하는 단어의 수(V)가 많아짐에 따라 계산 복잡도가 커진다는 단점이 있다. 이러한 문제를 해결하기 위한 방법 중 하나로 Negative Sampling이 있다.

$$J(\theta) = \frac{1}{T} \Sigma_{t=1}^T \Sigma_{-m \leq j \leq m} \log (w_{t+j}|w_{t}) = \frac{1}{T} \Sigma_{t=1}^T J_{t}(\theta)$$

$$J_{t}(\theta) = \log \sigma (u_{t}^T v_{c}) + \Sigma_{i=1}^k E_{i P(w)} [\log \sigma (-u_{i}^T v_{c})]$$

$$P(w_{i}) = \frac{f(w_{i})^{3/4}}{\Sigma_{j=1}^n (f(w_{i})^{3/4} )} $$

  • Negative Sampling은 weight를 업데이트하는 과정에서 모든 단어에 대해서 업데이트 하는 것이 아닌 일부 단어만을 업데이트하는 것을 의미한다.

2) GloVe

co-occruence matrix(stackexchange.com)

GloVe에서 사용하는 용어에 대한 설명은 다음과 같다.

  • $X \in R^{V \times V}$ : co-occurrence matrix
  • $X_{ij}$ : 단어 $i$와 단어 $j$가 동시에 발생하는 횟수
  • $X_{i} = \Sigma_{k}^V X_{ik}$ : corpus 내에서 단어 $i$가 등장한 전체 횟수
  • $P_{ij} = P(j|i) = \frac{X_{ij}}{X_{i}}$ : 단어 $i$가 등장했을 때 단어 $j$가 함께 등장할 확률
  • $w \in R^d$ : a word embedding of dimension $d$
  • $ \hat{w} \in R^d$ : a context word embedding of dimesion $d$

두 단어($w_{i}, w_{j}$)와 context word($\hat{w}_{k}$)가 주어졌을 때 그것들 사이의 관계를 표현하는 방법은 다음과 같다.

$$ F(w_{i}, w_{j}, \hat{w}_{k}) = \frac{P_{ik}}{P_{jk}} = \frac{P(k|i)}{P(k|j)} $$

 

(수정중)

3) FastText

Word2Vec이나 GloVe의 경우에는 형태소 변화가 다양한 언어에 대해서는 적용하기 어렵다는 단점을 지닌다. FastTest는 단어나 토큰 수준에서 임베딩을 진행하는 것이 아니라 chracter 수준에서 n-gram을 이용하여 임베딩을 진행한다.

'Al Basic > NLP' 카테고리의 다른 글

[NLP] Topic Modeling  (1) 2023.10.04
[NLP] Dimensionality Reduction  (0) 2023.10.03
[NLP] Text Preprocessing  (0) 2023.09.20
[NLP] Introduction to Text Analytics  (0) 2023.09.13
[NLP] Attention in Seq2Seq Learning  (0) 2023.06.12