LSA 주제 모형이 고차원 TF-IDF 벡터 모형과 어느 정도나 일치하는지를 유사도 점수를 이용해서 비교
LSA를 거친 모형(다차원을 축소)이 고차원 벡터들과 비슷한 성능을 낼 수 있다면 좋은 모형이라고 할 수 있다. 두 주제벡터 사이 거리와 각도에 따라 주제의 의미가 얼마나 비슷한지 알려준다. 좋은 주제 모형이라면 비슷한 주제의 문서들에 대한 벡터 공간 안에서 서로 가까이 있어야한다.
LSA는 벡터들 사이의 큰 거리를 유지하지만, 가까운 거리를 항상 유지하지는 않는다. 그말은 LSA는 문서들 사이의 관계에 대한 성분이 소실 될 수있다. LSA의 SVD 알고리즘은 새 주제 벡터 공간에서 모든 문서의 분산을 최대화하는 것에 초점을 두었기 때문이다.
특징 벡터 사이의 거리는 NLP 파이프라인의 성과에 큰 영향을 준다. 고차원 공간 사이에 거리를 측정하는 방법은 다양하다. 따라서 NLP 성질에 따라 고를 수 있어야 한다.
- 유클리드 거리 또는 평균 제곱근 오차 (root mean square error, RMSE: 2-norm(L2))
- 제곱 유클리드 거리 또는 제곱합 거리 (sum of squares distance, SSD: $L_{2}^{2}$)
- 코사인 거리 또는 각 거리 (angular distance) 또는 투영 거리: 정규화된 내적
- 민코프스키 거리 (Minkowski distance): p-norm($L_p$)
- 분수 거리 (fractional distance) 또는 분수 노름: 0 < p < 1인 p-노름($L_p$)
- 시가지 거리, 맨해튼 거리, 택시 거리, 절대 거리 합 (sum of absolute distance, SAD): 1-norm(L_1)
- 자카르 거리 (Jaccard distance), 역 집합 유사도(inverse set similarity)
- 마할라노비스 거리 (Mahalanobis distance)
- 레벤시테인 거리 또는 편집 거리 (edit distance)
거리를 측정하는 방법이 중요하기 때문에 많고 적재적소에 맞는 operation을 사영해야한다. 이러한 여러 쌍별 거리(pairwise distance)들은 scikit-learn에도 잘 구현되어 있다.
(sklearn.metrics.pairwis)
Python Examples of sklearn.metrics.pairwise.euclidean_distances
Python sklearn.metrics.pairwise.euclidean_distances() Examples The following are 30 code examples for showing how to use sklearn.metrics.pairwise.euclidean_distances(). These examples are extracted from open source projects. You can vote up the ones you li
www.programcreek.com
거리를 유사도 점수로 부터 계산할 때도 있고 유사도 점수로 부터 거리를 계산할 떄도 많다. 일반적으로 거리는 유사도 점수에 반비례한다. 유사도 점수는 최소0, 최대1 보통 0~1 사이의 범위일 때가 많다.
similarity = 1 / (1 + distance)
distance = (1 / similarity) - 1
유사도 점수뿐만 아니라 거리도 0~1사이 값을 가질 때 뺄셈을 이용해서 변환하는 것이 일반 적이다.
similarity = 1 - distance
distance = 1 - similarity
코사인 거리는 범위가 이와 다르다. 두 벡터의 각 거리(angular distance)는 두 벡터의 최대 각도(180도, 라디안$\pi$)를 분모로 하는 분수로 표하는 것이 관례이다. 그런 경우 코사인 유사도와 코사인 거리는 서로 역수이다.
import math
angular_distance = math.acos(cosine_similarity) / math.pi
distance = 1 / similarity - 1
similarity = 1 - distance
'Natural Language Processing' 카테고리의 다른 글
의미 기반 검색(semantic search) (0) | 2021.02.23 |
---|---|
선형 판별 분석 ( LDA ) (0) | 2021.02.23 |
[Transformer] Multi-Head Attention (1) (0) | 2021.02.20 |
잠재 디클레 할당 (LDiA, Latent Dirichlet Allocation) (0) | 2021.02.17 |
[Kaggle] 네이버 영화 리뷰 분류(2) (0) | 2021.02.17 |