إياد أحمد نشر 10 ديسمبر 2021 أرسل تقرير نشر 10 ديسمبر 2021 (معدل) كيف يمكننا معرفة مرادفات و مضادات كلمة، أعرف أنه يمكننا القيام بذلك من خلال NLTK و WORDNET لكن لم أستطع القيام بذلك؟ تم التعديل في 10 ديسمبر 2021 بواسطة إياد أحمد 1 اقتباس
1 Ali Haidar Ahmad نشر 10 ديسمبر 2021 أرسل تقرير نشر 10 ديسمبر 2021 كما ذكرت يمكن استخدام WORDNET في NLTK فبشكل سطحي يمكننا القول أنه قاموس المرادفات، من حيث أنه يجمع الكلمات معاً بناءً على معانيها. وبشكل أكثر دقة يمكنك القول أنها قاعدة بيانات معجمية كبيرة للغة الإنجليزية. الأسماء والأفعال والصفات والظروف مجمعة في مجموعات من المرادفات المعرفية (synsets) ، كل منها يعبر عن مفهوم مميز. عند استخدام الدالة من wordnet وتمرير كلمة لها فإنها ستعطيك مجموعة الكلمات المترادفة synonymous التي تعبر عن نفس المفهوم للكلمة الممررة لها. # wordnet نقوم أولاً باستيراد from nltk.corpus import wordnet # الآن إيجاد الكلمات المترادفة syns = wordnet.synsets("good") # يمكننا طباعة إحدى هذه الكلمات بالشكل التالي print(syns[0].name()) # good.n.01 # ولطباعة الكلمة فقط print(syns[0].lemmas()[0].name()) # good # على الكلمة لتوليد جمل تحتوي هذه الكلمة examples يمكنك أيضاً استخدام الدالة print(syns[0].examples()) # ['for your own good', "what's the good of worrying?"] الآن لتمييز المرادفات والمتضادات لكلمة ستكون lemmas هي المرادفات، وبعد ذلك يمكنك استخدام الدالة .antonyms() للعثور على المتضادات لل lemmas بالشكل التالي: import nltk from nltk.corpus import wordnet synonyms = [] # قائمة سنضع فيها المرادفات antonyms = [] # قائمة سنضع فيها المتضادات # نقوم بالمرور على جميع مرادفات الكلمة for syn in wordnet.synsets("good"): # هي مرادفة lemma كل for l in syn.lemmas(): # نضيفها synonyms.append(l.name()) # نوجد المضاد لها ونخزنه if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) """ {'safe', 'effective', 'beneficial', 'dear', 'right', 'secure', 'unspoilt', 'in_effect', 'skilful', 'honorable', 'skillful', 'unspoiled', 'thoroughly', 'near', 'proficient', 'dependable', 'salutary', 'estimable', 'soundly', 'good', 'commodity', 'practiced', 'serious', 'goodness', 'honest', 'trade_good', 'full', 'upright', 'ripe', 'respectable', 'undecomposed', 'well', 'adept', 'in_force', 'expert', 'just', 'sound'} """ print(set(antonyms)) """ {'evil', 'evilness', 'badness', 'ill', 'bad'} """ اقتباس
0 Ahmed Sharshar نشر 10 ديسمبر 2021 أرسل تقرير نشر 10 ديسمبر 2021 (معدل) يمكنك كذلك استخدام lemma_names ، الكود التالي يوضح كيفية ايجاد المترادفات بسهولة: for ss in wn.synsets('small'): print(ss.name(), ss.lemma_names()) ويكون الخرج عبارة عن مجموعة من ال sets تمثل المترادفات المتقاربة كالتالي: small.n.01 ['small'] small.n.02 ['small'] small.a.01 ['small', 'little'] minor.s.10 ['minor', 'modest', 'small', 'small-scale', 'pocket-size', 'pocket-sized'] little.s.03 ['little', 'small'] small.s.04 ['small'] humble.s.01 ['humble', 'low', 'lowly', 'modest', 'small'] ... وتستطيع كذلك التأكد من مدى قرب كلمتين من بعضهما بنفس الدالة ببساطة كالتالي: #استدعاء المكتبات import nltk from nltk.corpus import wordnet first_word = wordnet.synset("Travel.v.01") second_word = wordnet.synset("Walk.v.01") print('Similarity: ' + str(first_word.wup_similarity(second_word))) first_word = wordnet.synset("Good.n.01") second_word = wordnet.synset("zebra.n.01") print('Similarity: ' + str(first_word.wup_similarity(second_word))) ويكون الخرج كالتالي: Similarity: 0.6666666666666666 Similarity: 0.09090909090909091 لاحظ أن الأرقام السابقة تكون نسب مئوية (اذا قمت بضربها *100) لمدي تقارب كلمتين من بعضهما، وقد تحتاج لتلك الخطوة للتأكد من جودة المترادفات التي حصلت عليها سابقا. تم التعديل في 10 ديسمبر 2021 بواسطة Ahmed Sharshar اقتباس
السؤال
إياد أحمد
كيف يمكننا معرفة مرادفات و مضادات كلمة، أعرف أنه يمكننا القيام بذلك من خلال NLTK و WORDNET لكن لم أستطع القيام بذلك؟
تم التعديل في بواسطة إياد أحمد2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.