Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Kesamaan Kosinus Dua Rentetan Teks dalam Python Tulen?

Bagaimana untuk Mengira Kesamaan Kosinus Dua Rentetan Teks dalam Python Tulen?

Susan Sarandon
Susan Sarandonasal
2024-10-30 08:05:02828semak imbas

How to Calculate Cosine Similarity of Two Text Strings in Pure Python?

Cara Mengira Kesamaan Kosinus Dua Rentetan Teks tanpa Perpustakaan Luar

Dalam analisis teks, kesamaan kosinus ialah ukuran persamaan antara dua teks berdasarkan kosa kata yang dikongsi mereka. Walaupun perpustakaan luaran boleh digunakan untuk mengira ukuran ini, ia juga mungkin untuk melaksanakan fungsi Python tulen yang ringkas:

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

Fungsi ini mengambil dua vektor vec1 dan vec2 sebagai input dan mengira persamaan kosinusnya. Begini cara menggunakannya untuk membandingkan dua rentetan teks text1 dan text2:

<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

Ini menunjukkan bahawa kedua-dua rentetan teks adalah sangat serupa.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Kesamaan Kosinus Dua Rentetan Teks dalam Python Tulen?. 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