>  기사  >  백엔드 개발  >  서로 다른 텍스트 문서 간의 유사성을 어떻게 계산할 수 있습니까?

서로 다른 텍스트 문서 간의 유사성을 어떻게 계산할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-23 06:48:29466검색

How Can I Calculate the Similarity Between Different Text Documents?

텍스트 문서 간의 유사성을 확인하는 방법

문제: 두 텍스트 문서 간의 유사성을 계산하여 의미적 정렬을 평가하려고 합니다.

해결책: 문서 유사성을 측정하는 데 널리 사용되는 접근 방식은 문서 유사성을 TF-IDF(용어 빈도-역 문서 빈도) 벡터로 변환하는 것입니다. TF-IDF는 문서 내 빈도와 코퍼스 전체의 희귀성을 기준으로 용어에 가중치를 할당합니다. 그런 다음 이러한 벡터 간의 코사인 유사성을 계산하여 유사성을 정량화합니다.

구현: Python의 Gensim과 scikit-learn은 TF-IDF 변환을 위한 강력한 구현을 제공합니다. scikit-learn 사용:

<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer

documents = [open(f).read() for f in text_files]
tfidf = TfidfVectorizer().fit_transform(documents)

# Cosine similarity is calculated automatically
pairwise_similarity = tfidf * tfidf.T</code>

결과 pairwise_similarity는 각 셀이 해당 문서 쌍 간의 코사인 유사성을 나타내는 희소 행렬입니다.

결과 해석: 희소 행렬은 코퍼스의 문서 수와 동일한 차원을 갖습니다. 주어진 입력 문서와 유사성이 가장 높은 문서를 추출하려면 NumPy의 np.fill_diagonal()을 활용하여 자기 유사성을 가리고 np.nanargmax()를 사용하여 자기 유사성이 아닌 최대값을 찾습니다.

<code class="python">result_idx = np.nanargmax(arr[input_idx])
most_similar_doc = corpus[result_idx]</code>

argmax는 사소한 최대값 1(각 문서 자체와의 유사성)을 피하기 위해 마스크된 배열에서 수행됩니다.

위 내용은 서로 다른 텍스트 문서 간의 유사성을 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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