Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Kesamaan Kosinus Antara Rentetan Ayat dalam Python Tanpa Perpustakaan Luaran?

Bagaimana untuk Mengira Kesamaan Kosinus Antara Rentetan Ayat dalam Python Tanpa Perpustakaan Luaran?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 14:30:02947semak imbas

How to Calculate Cosine Similarity Between Sentence Strings in Python Without External Libraries?

Mengira Kesamaan Kosinus bagi Rentetan Ayat tanpa Perpustakaan Luaran

Untuk mengira persamaan kosinus antara dua rentetan teks tanpa modul luaran, pelaksanaan Python yang mudah boleh diambil bekerja. Formula persamaan kosinus asas digunakan dalam proses ini:

cos(θ) = (A · B) / (||A|| · ||B||)

Di mana:

  • A dan B ialah dua vektor yang mewakili ayat.
  • A · B ialah hasil darab titik bagi vektor A dan B.
  • ||A|| dan ||B|| ialah magnitud vektor A dan B masing-masing.

Pelaksanaan

Kod Python berikut menyediakan pelaksanaan praktikal formula ini:

<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>

Untuk menggunakan kod ini, tukar rentetan ayat kepada vektor menggunakan fungsi text_to_vector dan kemudian hitung persamaan kosinus menggunakan fungsi get_cosine:

<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>

Ini akan mengeluarkan persamaan kosinus antara dua rentetan ayat. Ambil perhatian bahawa pemberatan tf-idf tidak disertakan dalam pelaksanaan ini, tetapi boleh ditambah jika korpus yang sesuai tersedia.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Kesamaan Kosinus Antara Rentetan Ayat dalam Python Tanpa Perpustakaan Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn