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

DDD
Lepaskan: 2024-10-30 07:48:28
asal
584 orang telah melayarinya

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

Mengira Kesamaan Kosinus Antara Rentetan Ayat

Memandangkan dua rentetan yang mewakili ayat, terdapat keperluan untuk mengira persamaan kosinus mereka tanpa menggunakan perpustakaan luaran. Mari kita terokai pelaksanaan Python untuk mencapainya.

Persamaan kosinus mengukur sudut antara dua vektor, biasanya mewakili dokumen atau ayat dalam ruang vektor. Nilai kesamaan kosinus yang tinggi menunjukkan bahawa ayat adalah serupa, manakala nilai yang rendah menunjukkan ia berbeza.

Langkah 1: Tokenisasi dan Vektorisasi

Untuk mengira kesamaan kosinus, kami mesti menukar ayat kepada vektor. Kami menggunakan tokenizer berasaskan perkataan mudah yang membahagikan ayat menjadi perkataan dan mengira kejadiannya:

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

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

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

Langkah 2: Mengira Kesamaan Kosinus

Formula kesamaan kosinus ialah:

cosine = (Numerator) / (Denominator)
Salin selepas log masuk

di mana:

  • Numerator ialah hasil darab titik bagi dua vektor.
  • Penyebut ialah hasil darab magnitud dua vektor.
<code class="python">import math

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

Langkah 3: Contoh Penggunaan

Menggunakan fungsi di atas, kita boleh mengira persamaan kosinus antara dua ayat:

<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

Output akan menunjukkan nilai kesamaan kosinus yang tinggi, menunjukkan bahawa ayat adalah serupa.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Kesamaan Kosinus Antara 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan