Lemminflectوحدة بيثون لليمينيس الإنجليزية والانعكاس.
يستخدم Lemminflect نهج القاموس لإعداد الكلمات الإنجليزية وإلحاقها في النماذج المحددة من قبل المستخدم التبعيات العالمية أو علامة Penn TreeBank. تعمل المكتبة مع كلمات خارجية (OOV) من خلال تطبيق تقنيات الشبكة العصبية لتصنيف نماذج الكلمات واختيار قواعد التحول المناسبة.
يعمل النظام كوحدة مستقلة أو امتداد لنظام Spacy NLP.
يتم اشتقاق قواعد القاموس والمورفولوجيا من المعجم المتخصص في المعاهد الوطنية للصحة التي تحتوي على معلومات واسعة النطاق عن نماذج الكلمات الإنجليزية.
يتوفر نظام الانعطاف الأكثر تبسيطًا فقط كما pyinflect. تم إنشاء Lemminflect لمعالجة بعض من أوجه القصور في هذا المشروع وإضافة ميزات ، مثل ...
للاطلاع على أحدث الوثائق ، انظر ReadTheDocs .
تم اختبار دقة Lemminflect والعديد من الأدوات المساعدة NLP الشهيرة الأخرى باستخدام قاعدة بيانات الانعطاف التي تم إنشاؤها تلقائيًا (AGID) كخط أساسي. هذه ليست مجموعة بيانات قياسية "ذهبية" ، ولكنها تحتوي على قائمة واسعة من الليمون وتضخيمها المقابلة ويبدو أنها عامة "جيدة" للاختبار. تم تعديل كل انعطاف بواسطة برنامج الاختبار ثم مقارنة بالقيمة الأصلية في المجموعة. وشمل الاختبار 119،194 كلمات مختلفة.
| Package | Verb | Noun | ADJ/ADV | Overall | Speed |
|-----------------------------------------------------------------------------|
| LemmInflect 0.2.3 | 96.1% | 95.4% | 93.9% | 95.6% | 42.0 uS |
| Stanza 1.5.0 + CoreNLP 4.5.4 | 94.0% | 96.4% | 93.1% | 95.5% | 30.0 us |
| spaCy 3.5.0 | 79.5% | 88.9% | 60.5% | 84.7% | 393.0 uS |
| NLTK 3.8.1 | 53.3% | 52.2% | 53.3% | 52.6% | 12.0 uS |
|-----------------------------------------------------------------------------|
السرعة في ثانية صغيرة لكل ليما وتم إجراءها على وحدة المعالجة المركزية I9-7940X. ملاحظة ، نظرًا لأن Stanza تقوم بإجراء مكالمات إلى برنامج Java Corenlp ، تم تجميع جميع حالات الاختبار التي تبلغ 120 ألفًا في مكالمة واحدة. بالنسبة إلى Spacy ، تم تعطيل جميع مكونات خطوط الأنابيب باستثناء المعركة. من المحتمل أن يكون الوقت المرتفع لكل ليما انعكاسًا للنفقات العامة للهندسة المعمارية لخط الأنابيب.
الشرط الخارجي الوحيد لتشغيل Lemminflect هو numpy الذي يستخدم في رياضيات المصفوفة التي تدفع الشباك العصبية. هذه الشبكات صغيرة نسبيًا ولا تتطلب تشغيل وحدة المعالجة المركزية المهمة.
لتثبيت تفعل ..
pip3 install lemminflect
تم بناء المشروع واختباره تحت Python 3 و Ubuntu ولكن يجب تشغيله على أي نظام Linux و Windows و Mac ، إلخ. لم يتم اختباره تحت بيثون 2 ولكنه قد يعمل في تلك البيئة بأقل تغييرات أو معدومة.
تتضمن قاعدة التعليمات البرمجية وظائف المكتبة والبرامج النصية لإنشاء ملفات البيانات المختلفة والشبكات العصبية. وهذا يشمل أشياء مثل ...
لا مطلوب أي من هذه لتشغيل وقت التشغيل. ومع ذلك ، إذا كنت تريد تعديل النظام ، راجع الوثائق لمزيد من المعلومات.
لتخليص كلمة استخدم الطريقة getLemma() . يأخذ هذا كلمة وعلامة تبعية عالمية وإرجاع Lemmas كقائمة من الهجاء المحتملة. يتم استخدام نظام القاموس أولاً ، وإذا لم يتم العثور على Lemma ، فسيتم استخدام نظام القواعد.
> from lemminflect import getLemma
getLemma('watches', upos='VERB')
('watch',)
لتنفيذ الكلمات ، استخدم طريقة getInflection . هذا يأخذ Lemma وعلامة Penn TreeBank ويعيد تناقض من الانعطاف المحدد (S) المرتبط بهذه العلامة. سيلياري إلى أعلى ، يتم استخدام القاموس أولاً ثم يتم تطبيق قواعد الانعكاس إذا لزم الأمر ..
> from lemminflect import getInflection
> getInflection('watch', tag='VBD')
('watched',)
> getInflection('xxwatch', tag='VBD')
('xxwatched',)
توفر المكتبة وظائف ذات مستوى أدنى للوصول إلى القاموس وقواعد OOV مباشرة. للحصول على وصف مفصل ، راجع الضعف أو الالتهاب.
لاستخدامها كملحق ، تحتاج إلى Spacy الإصدار 2.0 أو الأحدث. الإصدارات 1.9 وما قبل لا تدعم طرق التمديد المستخدمة هنا.
لإعداد التمديد ، استيراد lemminflect أولاً. سيؤدي ذلك إلى إنشاء طرق جديدة lemma inflect لكل Token Spacy. تعمل الأساليب بشكل مشابه للطرق الموضحة أعلاه ، باستثناء أن يتم إرجاع السلسلة ، والتي تحتوي على الإملاء الأكثر شيوعًا ، بدلاً من النقل.
> import spacy
> import lemminflect
> nlp = spacy.load('en_core_web_sm')
> doc = nlp('I am testing this example.')
> doc[2]._.lemma()
test
> doc[4]._.inflect('NNS')
examples
إذا وجدت خطأ ، فيرجى الإبلاغ عن قائمة مشكلات GitHub. ومع ذلك ، يجب أن تدرك أنه عندما يتعلق الأمر بإعادة الانعكاس الصحيح ، يوجد عدد من أنواع المشكلات المختلفة التي يمكن أن تنشأ. بعض هذه لا يمكن إصلاحها بسهولة. تشمل المشكلات المتعلقة بالأشكال المتأثرة ...
إحدى المشكلات الشائعة هي أن بعض أشكال الفعل "BE" لم يتم تحديدها بالكامل بواسطة علامة TreekBank. على سبيل المثال BE/VBD ، إما إلى "كانت" أو "كانت" و Be/VBP Implects إما إلى "AM" ، أو "هي". من أجل إزالة الغموض هذه الأشكال ، يجب فحص كلمات أخرى في الجملة. في هذا الوقت ، لا يتضمن Lemminflect هذه الوظيفة.