[파이썬] `gensim`에서의 다양한 유사도 메트릭스

gensim은 Python에서 자연어 처리 및 토픽 모델링을 위한 강력한 라이브러리입니다. 이 라이브러리는 말뭉치(corpus)로부터 고차원의 단어 벡터 표현을 학습하고, 이를 통해 문서 간 유사도를 계산하는 기능을 제공합니다.

유사도 메트릭스는 문서 간 유사도를 측정하는 데 사용되는 표현 방법입니다. gensim은 다양한 유사도 메트릭스를 제공하여 다양한 응용 프로그램에 활용할 수 있습니다. 이제 몇 가지 자주 사용되는 유사도 메트릭스에 대해 알아보겠습니다.

코사인 유사도(Cosine Similarity)

코사인 유사도는 두 벡터 간의 각도를 기반으로 유사도를 계산하는 방법입니다. gensim에서는 cosine_similarity() 함수를 사용하여 코사인 유사도를 계산할 수 있습니다.

from gensim import models

# 학습된 모델 로드
model = models.Word2Vec.load('word2vec.model')

# 두 단어 벡터의 유사도 계산
similarity = model.wv.cosine_similarity('apple', 'orange')
print(f"Cosine Similarity between 'apple' and 'orange': {similarity}")

자카드 유사도(Jaccard Similarity)

자카드 유사도는 두 집합 간의 공통 원소의 개수를 이용하여 유사도를 계산하는 방법입니다. gensimjaccard_similarity() 함수를 사용하여 자카드 유사도를 계산할 수 있습니다.

from gensim import models

# 학습된 모델 로드
model = models.Word2Vec.load('word2vec.model')

# 두 단어 집합의 유사도 계산
similarity = model.wv.jaccard_similarity('apple', 'orange')
print(f"Jaccard Similarity between 'apple' and 'orange': {similarity}")

유클리디언 유사도(Euclidean Distance)

유클리디언 유사도는 두 벡터 간의 유클리디언 거리를 이용하여 유사도를 계산하는 방법입니다. gensimeuclidean_distances() 함수를 사용하여 유클리디언 유사도를 계산할 수 있습니다.

from gensim import models

# 학습된 모델 로드
model = models.Word2Vec.load('word2vec.model')

# 두 단어 벡터의 유사도 계산
similarity = model.wv.euclidean_distances('apple', 'orange')
print(f"Euclidean Similarity between 'apple' and 'orange': {similarity}")

피어슨 상관계수(Pearson Correlation Coefficient)

피어슨 상관계수는 벡터 간의 선형 상관 관계를 계산하여 유사도를 측정하는 방법입니다. gensimpearson_similarity() 함수를 사용하여 피어슨 상관계수를 계산할 수 있습니다.

from gensim import models

# 학습된 모델 로드
model = models.Word2Vec.load('word2vec.model')

# 두 단어 벡터의 유사도 계산
similarity = model.wv.pearson_similarity('apple', 'orange')
print(f"Pearson Similarity between 'apple' and 'orange': {similarity}")

gensim을 사용하면 다양한 유사도 메트릭스를 사용하여 문서, 단어, 문장, 문서 집합 등의 유사도를 측정할 수 있습니다. 이러한 기능을 활용하면 다양한 자연어 처리 태스크 및 정보 검색 애플리케이션을 개발할 수 있습니다.

위의 예시 코드는 gensim의 Word2Vec 모델을 기반으로 유사도를 계산하는 방법을 보여줍니다. 실제로 작업을 수행하기 전에는 데이터를 로드하고 적절한 모델을 사용해야 합니다. 이를 위해 gensim의 문서를 자세히 읽어보시고 필요한 정보를 확인하시기 바랍니다.

Happy coding!