إياد أحمد نشر 12 ديسمبر 2021 أرسل تقرير نشر 12 ديسمبر 2021 هل هناك دالة في nltk لقياس التشابه بين كلمتين؟ 1 اقتباس
0 Ali Haidar Ahmad نشر 12 ديسمبر 2021 أرسل تقرير نشر 12 ديسمبر 2021 يمكنك استخدام wup_similarity لقياس التشابه بين الكلمات، حيث يحسب الترابط من خلال النظر في أعماق مجموعتي synsets للكلمتين (يحسب مدى تشابه معاني الكلمات وموقعها في شجرة ال hypernym) إضافة إلى ال LCS بين الكلمتين (السلف المشترك الأكثر شيوعاً لمفهومين موجودان في أنطولوجية محددة أو بمعنى آخر القواسم المشتركة بين زوج من المفاهيم. على سبيل المثال ال LCS لكل من القط والكلب في wordnet هو حيوان ثديي). الwup_similarity تعتمد على المعادلة التالية: WuPalmer=2*depth(lcs(s1,s2))/(depth(s1)+depth(s2)) والنتيجة تكون بين 0 و 1 ولايمكن أن تكون 0 لأن عمق LCS لا يساوي صفر (عمق جذر التصنيف واحد). مثال: # wordnet استيراد from nltk.corpus import wordnet # لكل من الكلمتين synsets استخراج ال syn1 = wordnet.synsets('cat')[0] syn2 = wordnet.synsets('dog')[0] print ("cat name : ", syn1.name()) print ("dog name : ", syn2.name()) # حساب التشابه syn1.wup_similarity(syn2) """ cat name : cat.n.01 dog name : dog.n.01 0.8571428571428571 """ لاحظ أن نسبة التشابه بين الكلمتين 85% وذلك لوجود العديد من الأشياء المشتركة بينهما. أما لو جربنا على سبيل المثال كلمتي hello و selling سنجد أنها 26% فقط وهذا لأنهما بعيدتين مفاهيمياً: # wordnet استيراد from nltk.corpus import wordnet syn1 = wordnet.synsets('hello')[0] syn2 = wordnet.synsets('selling')[0] print ("hello name : ", syn1.name()) print ("selling name : ", syn2.name()) syn1.wup_similarity(syn2) """ hello name : hello.n.01 selling name : selling.n.01 0.26666666666666666 """ اقتباس
السؤال
إياد أحمد
هل هناك دالة في nltk لقياس التشابه بين كلمتين؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.