Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Mary-Kate Olsenasal
2024-11-01 08:20:30839semak imbas

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>

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>

Output:

Cosine: 0.861640436855

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!

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