유사도

semi·2020년 7월 5일
0

NLP

목록 보기
1/5

1) TF-IDF

TF-IDF는 출현빈도를 사용하여 어떤 단어 w가 문서 d 내에서 얼마나 중요한지를 나타내는 수치이다. 이 수치가 높을수록 w는 d를 대표하는 성질을 띤다.

- TF (term frequency)

TF는 단어가 문서 내에 출현한 횟수이다.

- IDF (inverse document frequency)

IDF는 그 단어가 출현한 문서의 수의 역수이다.

- TF-IDF = TF/DF

TF-IDF는 term frequency를 document frequency로 나눔으로써 구할 수 있다. 예를 들어, a나 the 같은 경우는 문서 내에서 빈번하게 등장하지만 모든 문서에 등장하기 때문에 어떤 문서를 대표하는 단어라고 보기는 힘들다. 그러나 모든 문서에 자주 등장하지는 않지만 한 문서에 빈번히 등장하는 단어는 그 문서를 대표하는 단어라고 볼 수 있다.

2) norm을 이용한 거리

- L1 거리

L1거리는 두 벡터의 각 차원별 값 차이의 절대값을 모두 더한 값이다.

L1_distance = ((x1 - x2).abs()).sum()

- L2 거리

L2거리는 차원별 값 차이의 제곱의 합에 루트를 씌운 것이다.

L2_distance = ((x1 - x2)**2).sum()**.5

3) 코사인 유사도

코사인 유사도 함수는 두 벡터 사이의 방향과 크기를 모두 고려하는 방법이다.

Cosine_similarity = (x1 * x2).sum() / (x1**2).sum()**.5 * (x2**2).sum()**.5)

4) 자카드 유사도

자카드 유사도는 두 집합 간의 유사도를 구하는 방법이다. 두 집합의 교집합의 길이를 두 집합의 합집합의 길이로 나눔으로써 구할 수 있다.

Jaccard_similarity = len(set(doc1) & set(doc2)) / len(set(doc1) | set(doc2))

0개의 댓글