إياد أحمد نشر 13 ديسمبر 2021 أرسل تقرير نشر 13 ديسمبر 2021 هل هناك دالة لحساب التشابه بين جملتين من خلال مقياس cosine similarity باستخدام NLTK؟ 1 اقتباس
0 Ali Haidar Ahmad نشر 13 ديسمبر 2021 أرسل تقرير نشر 13 ديسمبر 2021 لايوجد دالة في nltk تمكنك من حساب CS بين جملتين، لكن بإمكانك تحقيق ذلك من خلالها. كما نعلم فإن تشابه جيب التمام هو مقياس للتشابه بين متجهين غير صفريين لفضاء الجداء الداخلي الذي يقيس جيب التمام للزاوية بينهما. ويعبر عنه بالمعادلة التالية التي سنقوم بتحقيقها: Similarity = (A.B) / (||A||.||B||) حيث أن كل من A و B هما أشعة. الكود: # استيراد الوحدات اللازمة from nltk.tokenize import word_tokenize # tokens لتقسيم النص إلأى وحدات from nltk.corpus import stopwords # لحذف كلمات التوقف من الجمل # نقوم بتحديد الجملتين s1 ="I love programming in Python" s2 ="I love programming in java" # نقوم الآن باستخراج الوحدات من النصوص s1_tokens = word_tokenize(s1) s2_tokens = word_tokenize(s2) # نقوم بحذف كلمات التوقف من النصوص sw = stopwords.words('english') l1 =[];l2 =[] s1_tokens = {w for w in s1_tokens if not w in sw} s2_tokens = {w for w in s2_tokens if not w in sw} # تشكل مجموعة تحتوي على كلمات رئيسية لكلا السلسلتين vector = s1_tokens.union(s2_tokens) for w in vector: if w in s1_tokens: l1.append(1) # إنشاء شعاع else: l1.append(0) if w in s2_tokens: l2.append(1) else: l2.append(0) c = 0 # الآن يمكننا تطبيق معادلة التشابه for i in range(len(vector)): c+= l1[i]*l2[i] # طباعة الناتج print("similarity: ", c / float((sum(l1)*sum(l2))**0.5)) النتيجة: similarity: 0.75 أي أن نسبة التشابه بين الجملتين تصل إلى 75% وفق هذا المقياس، وهي نتيجة منطقية. اقتباس
السؤال
إياد أحمد
هل هناك دالة لحساب التشابه بين جملتين من خلال مقياس cosine similarity باستخدام NLTK؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.