문서의 유사도를 구하기 위한 방법으로는 코사인 유사도 외에도 여러가지 방법들이 있다. 여기서는 문서의 유사도를 구할 수 있는 다른 방법들을 학습한다. 유클리드 거리(Euclidean distance) 유클리드 거리는 문서의 유사도를 구할 때 자카드 유사도나 코사인 유사도만큼 유용한 방법은 아니다. 하지만 여러 가지 방법을 이해하고, 시도해보는 것 자체만으로 다른 개념들을 이해할 때 도움이 되므로 의미가 있다. 다차원 공간에서 두 개의 점 p와 q가 각각 p = (p1, p2, p3, ..., pn)과 q = (q1, q2, q3, ..., qn)의 좌표를 가질 때 두 점 사이의 거리를 계산하는 유클리드 거리 공식은 다음과 같다. 다차원 공간이라고 가정하면, 처음 보는 입장에서는 식이 너무 복잡해보인다. ..
Oneulog
BoW에 기반한 단어 표현 방법인 DTM, TF-IDF, 또는 뒤에서 배우게 될 Word2Vec 등과 같이 단어를 수치화할 수 있는 방법을 이해했다면 이러한 표현 방법에 대해서 코사인 유사도를 이용해 문서의 유사도를 구하는 게 가능하다. 코사인 유사도(Cosine Similarity) 코사인 유사도는 두 벡터 간의 코사인 각도를 이용해 구할 수 있는 두 벡터의 유사도를 의미한다. 두 벡터의 방향이 완전히 동일한 경우에는 1의 값을 가지며, 90도의 각을 이루면 0, 180도로 반대의 방향을 가지면 -1의 값을 가지게 된다. 즉, 결국 코사인 유사도는 -1 이상 1 이하의 값을 가지며 값이 1에 가까울수록 유사도가 높다고 판단할 수 있다. 이를 직관적으로 이해하면 두 벡터가 가리키는 방향이 얼마나 유사한가..
TF-IDF TF-IDF는 단어의 빈도와 역 문서 빈도를 사용해 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법이다. 우선 DTM을 만든 후, TF-IDF 가중치를 부여한다. TF-IDF는 주로 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업 등에 쓰일 수 있다. TF-IDF는 TF와 IDF를 곱한 값을 의미하는데 이를 식으로 표현해보자. 문서를 d, 단어를 t, 문서의 총 개수를 n으로 표현할 때 TF, DF, IDF는 각각 다음과 같이 정의할 수 있다. (1) tf(d, t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수 생소한 글자 때문에 어려워보일 수 있지만, TF는 앞에서 배운 DTM에서 각 단어들이..
문서 단어 행렬(DTM)의 표기법 문서 단어 행렬(DTM)이란 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것을 말한다. 쉽게 생각하면 각 문서에 대한 BoW를 하나의 행렬로 만든 것으로 생각할 수 있으며, BoW와 다른 표현 방법이 아니라 BoW 표현읋 다수의 문서에 대해서 행렬로 표현하고 부르는 용어이다. 예를 들어 이렇게 4개의 문서가 있다고 하자. 문서1 : 먹고 싶은 사과 문서2 : 먹고 싶은 바나나 문서3 : 길고 노란 바나나 바나나 문서4 : 저는 과일이 좋아요 띄어쓰기 단위 토큰화를 수행한다고 가정하고, 문서 단어 행렬로 표현하면 다음과 같다. 각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기한다. 문서 단어 행렬은 문서들을 서로 비교할 수 있도록 수치화할 수 있다는 점에..
Bag of Words란 Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. Bag of Words를 직역하면 단어들의 가방이라는 의미이다. 단어들이 들어있는 가방을 상상해보자. 갖고 있는 어떤 텍스트 문서에 있는 단어들을 가방에다가 전부 넣는다. 그 후에 이 가방을 흔들어 단어들을 섞는다. 만약, 해당 문서 내에서 특정 단어가 N번 등장했다면, 이 가방에는 그 특정 단어가 N개 있게 된다. 또한 가방을 흔들어가 단어를 섞었기 떄문에 더 이상 단어의 순서는 중요하지 않다. BoW를 만드는 과정을 이렇게 두 가지 과정으로 생각해보자. 1. 각 단어에 고요한 정수 인덱스를 부여한다. # 단어 집합 생성 2. 각 인덱스의 위치에..
단어의 표현 방법 단어의 표현 방법은 크게 국소 표현과 분산 표현으로 나뉜다. 국소 표현 방법은 해당 단어 그 자체만 보고, 특정값을 매핑하여 단어를 표현하는 방법이며, 분산 표현 방법은 그 단어를 표현하고자 주변을 참고하여 단어를 표현하는 방법이다. 예를 들어 puppy(강아지), cute(귀여운), lovely(사랑스러운)라는 단어가 있을 때 각 단어에 1번, 2번, 3번 등과 같은 숫자를 매핑하여 부여한다면 이는 국소 표현 방법에 해당된다. 반면, 분산 표현 방법의 예를 하나 들어보면 해당 단어를 표현하기 위해 주변 단어를 참고한다. puppy라는 단어는 cute, lovely한 느낌이다로 단어를 정의한다. 이렇게 되면 이 두 방법의 차이는 국소 표현 방법은 단어의 의미, 뉘앙스를 표현할 수 없지만..
자연어 처리에서 텍스트를 표현하는 방법으로는 여러 가지 방법이 있다. 그 중 DTM(Document Term Matrix)과 TF-IDF(Term Frequency-Inverse Document Frequency)는 정보 검색과 텍스트 마이닝 분야에서 주로 사용되는 카운트 기반의 텍스트 표현 방법이다. 텍스트를 위와 같은 방식으로 수치화를 하고 나면, 통계적인 접근 방법을 통해 여러 문서로 이루어진 텍스트 데이터가 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내거나, 문서의 핵심어 추출, 검색 엔진에서 검색 결과의 순위 결정, 문서들 간의 유사도를 구하는 등의 용도로 사용할 수 있다.
두 개의 모델 A, B가 있을 때 이 모델의 성능은 어떻게 비교할 수 있을까? 두 개의 모델을 오타 교정, 기계 번역 등의 평가에 투입해볼 수 있다. 그리고 두 모델이 해당 업무의 성능을 누가 더 잘했는지를 비교하면 된다. 그런데 두 모델의 성능을 비교하고자, 일일히 모델들에 대해서 실제 작업을 시켜보고 정확도를 비교하는 작업은 공수가 너무 많이 드는 작업이다. 만약 비교해야 하는 모델이 두 개가 아니라 그 이상의 수라면 시간은 비교해야 하는 모델의 수만큼 배로 늘어날 수도 있다. 이러한 평가보다는 어쩌면 조금은 부정확할 수는 있어도 테스트 데이터에 대해서 빠르게 식으로 계산되는 더 간단한 평가 방법이 있다. 바로 모델 내에서 자신의 성능을 수치화하여 결과를 내놓는 펄플랙시티(perplexity)이다. ..