자연어 처리 측면에서 문서 간 텍스트 유사성을 측정하려면 코사인 유사성 계산이 필수적입니다. tf-idf-cosine과 같은 외부 라이브러리를 사용하면 이 작업을 용이하게 할 수 있지만 이러한 종속성에 의존하지 않고 수동으로 코사인 유사성을 계산하는 것도 가능합니다.
코사인 유사성 개요
코사인 유사성은 텍스트를 나타내는 두 벡터 사이의 각도를 수량화합니다. 코사인 유사성이 높을수록 각도가 작아지고 텍스트 간의 유사성이 커짐을 의미합니다. 이는 정규화된 벡터를 크기로 나눈 내적을 사용하여 계산됩니다.
수동으로 코사인 유사성 구현
코사인 유사성을 수동으로 계산하려면 다음 단계를 정의합니다.
코드 구현
아래는 수동 코사인 유사성 계산의 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 vec1]) sum2 = sum([vec2[x] ** 2 for x in vec2]) denominator = math.sqrt(sum1) * math.sqrt(sum2) if not denominator: return 0.0 else: return numerator / denominator def text_to_vector(text): words = WORD.findall(text) return Counter(words) 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>
Result
이 코드는 다음과 같이 실행됩니다.
Cosine: 0.861640436855
이 값은 다음을 나타냅니다. 두 문장 사이의 높은 코사인 유사성을 통해 텍스트상 유사함을 확인합니다.
추가 고려 사항
이 수동 접근 방식은 기본적인 구현을 제공하지만 다음을 통해 향상될 수 있습니다. :
위 내용은 외부 라이브러리 없이 두 문장 간의 코사인 유사성을 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!