>백엔드 개발 >파이썬 튜토리얼 >순수 Python에서 두 텍스트 문자열의 코사인 유사성을 계산하는 방법은 무엇입니까?

순수 Python에서 두 텍스트 문자열의 코사인 유사성을 계산하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 08:05:02892검색

How to Calculate Cosine Similarity of Two Text Strings in Pure Python?

외부 라이브러리 없이 두 텍스트 문자열의 코사인 유사성을 계산하는 방법

텍스트 분석에서 코사인 유사성은 두 텍스트 문자열 간의 유사성을 측정하는 것입니다. 공유된 어휘를 기반으로 한 텍스트입니다. 외부 라이브러리를 사용하여 이 측정값을 계산할 수 있지만 간단한 순수 Python 함수를 구현하는 것도 가능합니다.

<code class="python">import math
import re
from collections import Counter

WORD = re.compile(r"\w+")

def get_cosine(vec1, vec2):
    intersection = set(vec1.keys()) & set(vec2.keys())
    numerator = sum([vec1[x] * vec2[x] for x in intersection])

    sum1 = sum([vec1[x] ** 2 for x in list(vec1.keys())])
    sum2 = sum([vec2[x] ** 2 for x in list(vec2.keys())])
    denominator = math.sqrt(sum1) * math.sqrt(sum2)

    if not denominator:
        return 0.0
    else:
        return float(numerator) / denominator

def text_to_vector(text):
    words = WORD.findall(text)
    return Counter(words)</code>

이 함수는 두 벡터 vec1 및 vec2를 입력으로 사용하여 코사인 유사성을 계산합니다. 이를 사용하여 두 개의 텍스트 문자열 text1과 text2를 비교하는 방법은 다음과 같습니다.

<code class="python">text1 = "This is a foo bar sentence ."
text2 = "This sentence is similar to a foo bar sentence ."

vector1 = text_to_vector(text1)
vector2 = text_to_vector(text2)

cosine = get_cosine(vector1, vector2)

print("Cosine:", cosine)</code>

출력:

Cosine: 0.861640436855

이는 두 텍스트 문자열이 매우 유사하다는 것을 나타냅니다.

위 내용은 순수 Python에서 두 텍스트 문자열의 코사인 유사성을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.