본문 바로가기

개념

[파이썬] 코사인 유사도 (Cosine Similarity) 예제 코드

코사인 유사도는 두 벡터 사이의 유사성을 측정하는 데에 사용되는 일반적인 방법 중 하나입니다. 파이썬에서는 다음과 같이 코사인 유사도를 계산할 수 있습니다.

1. 예제 코드

먼저, 두 벡터를 정의해야 합니다. 파이썬에서는 보통 리스트나 NumPy 배열을 사용하여 벡터를 표현합니다. 예를 들어, 다음과 같이 두 개의 벡터를 정의할 수 있습니다.

vector1 = [1, 2, 3, 4, 5]
vector2 = [2, 3, 4, 5, 6]


이제 두 벡터의 코사인 유사도를 계산하려면 다음과 같은 공식을 사용합니다.

cosine_similarity = dot_product / (magnitude1 * magnitude2)


여기서 dot_product는 두 벡터의 내적(dot product)을 나타내고, magnitude1과 magnitude2는 각 벡터의 크기(norm)를 나타냅니다. 파이썬에서는 NumPy 라이브러리를 사용하여 내적과 크기를 계산할 수 있습니다.

import numpy as np

# 벡터를 NumPy 배열로 변환
vector1 = np.array(vector1)
vector2 = np.array(vector2)

# 내적 계산
dot_product = np.dot(vector1, vector2)

# 각 벡터의 크기 계산
magnitude1 = np.linalg.norm(vector1)
magnitude2 = np.linalg.norm(vector2)

# 코사인 유사도 계산
cosine_similarity = dot_product / (magnitude1 * magnitude2)


위의 코드에서 np.dot() 함수는 두 배열의 내적을 계산하며, np.linalg.norm() 함수는 배열의 크기(norm)를 계산합니다. 마지막으로 내적과 크기를 사용하여 코사인 유사도를 계산합니다.

2. 활용 분야

코사인 유사도는 다양한 분야에서 활용됩니다. 여기서는 몇 가지 예를 들어보겠습니다.


1) 자연어 처리(Natural Language Processing, NLP)

문서나 문장의 유사성을 측정하는 데에 사용됩니다. 예를 들어, 검색 엔진에서 특정 키워드와 관련된 문서를 찾거나, 문장 분류나 군집화(clustering)에서 유사한 문장들을 그룹화하는 데에 코사인 유사도가 사용됩니다.

2) 추천 시스템(Recommendation Systems)

사용자의 선호도를 기반으로 상품이나 서비스를 추천하는 시스템에서 코사인 유사도는 사용자들의 취향을 비교하는 데에 사용됩니다.

3) 이미지 처리(Image Processing)

이미지나 비디오에서 특정 패턴이나 객체를 찾는 데에 사용됩니다. 예를 들어, 얼굴 인식이나 물체 인식에서 코사인 유사도가 사용됩니다.

4) 음성 처리(Speech Processing)

음성 인식에서 발음이나 억양이 유사한 단어나 문장을 비교하는 데에 코사인 유사도가 사용됩니다.
이 외에도, 유전학, 검색 엔진 최적화, 문서 분류, 클러스터링, 유사도 검색 등 다양한 분야에서 코사인 유사도가 활용됩니다.