빈도 기반 벡터화 기법 - BoW, DTM, TF-IDF
Dec 9, 2021
»
NLP
1. Bag of Words
-
단어들의 가방이라는 의미로 각 단어들과 빈도들을 대응시킨 형태로 파이썬의 dictionary 타입으로 표현하기 편합니다.
-
예시
문서1 = “내가 그린 그림은 기린 그림이다. “
{“내가” : 1, “그린”: 1, “그림”: 2, “은”: 1, “기린”: 1, “이다”: 1, “.”: 1}
-
BoW의 문제점
- 어순에 따라서 달라지는 의미를 반영하지 못한 형태입니다.
2. DTM(Document Term Matrix)
-
여러개 문서들을 BoW 형태로 만든뒤 하나의 행렬로 합친 형태입니다.
-
DTM의 행벡터는 문서들을 의미하고 열벡터는 단어들을 의미합니다.
-
예시
문서1 = [“기린”, “그림”, “이다”, “.”]
문서2 = [“기린”, “그림”, “이냐”, “?”]
문서3 = [“그림”, “이”, “아니”, “구나”, “.”]
- 각 문서의 벡터를 구하였기에 문서간의 벡터 유사도를 통하여 문서간의 유사성을 계산할 수 있습니다.
- 벡터의 유사도를 계산하는 방법으로 일반적으로는 코사인 유사도를 사용합니다.
- 코사인 유사도의 값은 -1과 1사이의 값을 가지며 1에 가까울수록 두 문서의 유사도가 높다고 판할 수 있습니다.
- 코사인 유사도 = $similarity = cos\theta = \frac{A \cdot B}{\vert \vert A \vert \vert \vert \vert B \vert \vert}$
-
DTM의 문제점
- 단어의 갯수가 늘어나고 문서의 갯수가 늘어날수록 0을 가진 값들이 늘어나게 되며 이로하여 아무런 의미없는 값들이 저장공간에 포함되기 때문에 저장공간의 낭비가 심해집니다.
- 빈도론적 관점에서 만들어진 행렬이기 때문에 단어 벡터들은 단어의 의미가 담겨있지 않습니다.
3. TF-IDF
-
TF-IDF는 Term Frequency - Inverse Document Frequency의 줄임말입니다.
-
단어의 빈도인 TF와 문서 빈도의 역수인 IDF를 활용합니다.
- TF : 특정 문서에만 자주 등장하는 단어의 중요도는 높다고 판단
- IDF : 모든 문서에서 자주 등장하는 단어의 중요도는 낮다고 판단
수식은 TF-IDF의 가중치를 구하기 위한 수식은 다음과 같습니다.
$w_{x,y} = tf_{x,y} \times log \frac{N}{df_x}$
- $w_{x,y}$는 문서 $y$ 에 있는 단어 $x$ 에 대한 TF-IDF 가중치를 의미합니다.
- $tf_{x,y}$는 문서 $y$ 에 있는 단어 $x$ 의 개수를 의미합니다. (TF)
- 특정 문서의 안에서만 자주 언급되는 단어는 중요한 가치가 있다고 봅니다.
- 일부 전문 서적의 문서 같은 경우 자주 나오는 전문용어가 그 문서의 주제라고 볼 수 있으며 가치가 높다고 평가할 수 있습니다.
- $df_x$는 단어 $x$를 포함하고 있는 문서의 개수를의미합니다. (IDF)
- 여러곳의 문서에서 자주 언급되는 단어의 가치는 낮다고 봅니다.
- 영어의 경우 관사 a, an, the는 어느 문서에도 속할 수 있지만 해당 단어가 가진 가치는 낮습니다.
- $N$은 총 문서의 개수를 의미합니다. (IDF)
-
TF-IDF를 사용하기 위해서 우선 DTM을 만든뒤 TF-IDF 가중치를 DTM에 적용시켜줍니다.
-
TF-IDF의 문제점
- TF-IDF 벡터로 단어의 의미를 표현하지 못하였습니다.
- 서로 다른 단어이인데 의미는 동의어 포착이 어렵습니다.