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)
자카드 유사도는 두 집합 간의 공통 원소의 개수를 이용하여 유사도를 계산하는 방법입니다. gensim
의 jaccard_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)
유클리디언 유사도는 두 벡터 간의 유클리디언 거리를 이용하여 유사도를 계산하는 방법입니다. gensim
의 euclidean_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)
피어슨 상관계수는 벡터 간의 선형 상관 관계를 계산하여 유사도를 측정하는 방법입니다. gensim
의 pearson_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!