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

Susan Sarandon
Lepaskan: 2024-10-30 08:05:02
asal
840 orang telah melayarinya

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

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

Output:

Cosine: 0.861640436855
Salin selepas log masuk

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!

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!