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

Linda Hamilton
Lepaskan: 2024-10-31 14:30:02
asal
961 orang telah melayarinya

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||)
Salin selepas log masuk

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>
Salin selepas log masuk

Untuk menggunakan kod ini, tukar rentetan ayat kepada vektor menggunakan fungsi text_to_vector dan kemudian hitung kesamaan 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!