Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya boleh mengira persamaan kosinus antara dua ayat tanpa menggunakan perpustakaan luaran?

Bagaimanakah saya boleh mengira persamaan kosinus antara dua ayat tanpa menggunakan perpustakaan luaran?

Mary-Kate Olsen
Lepaskan: 2024-11-01 08:20:30
asal
999 orang telah melayarinya

How can I calculate cosine similarity between two sentences without using external libraries?

Mengira Kesamaan Kosinus untuk Rentetan Ayat

Kesamaan kosinus ialah ukuran korelasi antara dua vektor. Dalam konteks pemprosesan teks, ia boleh digunakan untuk menentukan persamaan antara dua ayat. Untuk mengira persamaan kosinus bagi dua rentetan tanpa pustaka luaran, ikuti langkah berikut:

  1. Tokenize rentetan: Pecah setiap rentetan kepada perkataan individu, dikenali sebagai token.
  2. Buat vektor perkataan: Untuk setiap rentetan, cipta kamus (vektor) dengan kuncinya ialah perkataan unik dan nilainya ialah frekuensi perkataan tersebut.
  3. Kira hasil titik : Kira hasil darab titik bagi dua vektor dengan menjumlahkan hasil darab unsur yang sepadan.
  4. Kira magnitud: Cari magnitud setiap vektor dengan menduakan dan menjumlahkan semua unsurnya, kemudian mengambil punca kuasa dua.
  5. Normalkan: Bahagikan hasil darab titik dengan hasil darab magnitud untuk mendapatkan persamaan kosinus ternormal.

Pelaksanaan Python yang mudah:

<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

Contoh penggunaan:

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

Cosine: 0.861640436855
Salin selepas log masuk

Perhatikan bahawa pelaksanaan ini tidak termasuk pemberat TF-IDF, yang boleh meningkatkan ketepatan persamaan kosinus untuk set data yang lebih besar.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengira persamaan kosinus antara dua ayat tanpa menggunakan 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