Webvectors عبارة عن مجموعة أدوات لخدمة النماذج الدلالية المتجهة (خاصة تضمينات الكلمات القائمة على التنبؤ، كما هو الحال في word2vec أو ELMo ) عبر الويب، مما يجعل من السهل إظهار قدراتها لعامة الناس. فهو يتطلب Python >= 3.6، ويستخدم Flask و Gensim و simple_elmo تحت الغطاء.
عروض العمل:
يمكن دمج الخدمة إما في خادم الويب Apache كتطبيق WSGI أو تشغيلها كخادم مستقل باستخدام Gunicorn (نوصي بالخيار الأخير).
أضف السطر التالي إلى ملف تكوين Apache:
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
، حيث WEBNAME هو الاسم المستعار لخدمتك بالنسبة إلى جذر الخادم (متجهات الويب لـ http://example.com/webvectors
)، و PATH هو مسار نظام الملفات الخاص بك إلى دليل WebVectors .
في جميع ملفات *.wsgi
و *.py
الموجودة في دليل WebVectors ، استبدل webvectors.cfg
في السلسلة config.read('webvectors.cfg')
بالمسار المطلق إلى ملف webvectors.cfg
.
قم بإعداد الخدمة الخاصة بك باستخدام ملف التكوين webvectors.cfg
. أهم الإعدادات هي:
العلامات
يمكن للنماذج استخدام علامات عشوائية مخصصة للكلمات (على سبيل المثال، علامات جزء من الكلام، كما في boot_NOUN ). إذا تم تدريب نماذجك على الكلمات ذات العلامات، فيجب عليك تشغيل هذا في webvectors.cfg
(متغير use_tags
). بعد ذلك، سيسمح WebVectors للمستخدمين بتصفية استعلاماتهم حسب العلامات. يجب عليك أيضًا تحديد قائمة العلامات المسموح بها ( tags_list
متغير في webvectors.cfg
) وقائمة العلامات التي سيتم عرضها للمستخدم (ملف tags.tsv
).
نماذج الشيطان
يستخدم WebVectors برنامجًا خفيًا يعمل في الخلفية ويعالج فعليًا جميع المهام المتعلقة بالتضمين. ويمكن أيضًا تشغيله على جهاز مختلف، إذا كنت تريد ذلك. وبالتالي، في webvectors.cfg
يجب عليك تحديد host
port
الذي سيستمع إليه هذا البرنامج الخفي. بعد ذلك، ابدأ تشغيل البرنامج الخفي الفعلي word2vec_server.py
. سيتم تحميل النماذج وفتح مقبس الاستماع. يجب أن يكون هذا البرنامج الخفي نشطًا بشكل دائم، لذا قد ترغب في تشغيله باستخدام الشاشة أو شيء من هذا القبيل.
نماذج
يتم تعريف قائمة النماذج التي تريد استخدامها في الملف models.tsv
. ويتكون من حقول مفصولة بعلامات جدولة:
سيتم استخدام معرف النموذج كاسم لمربعات الاختيار في صفحات الويب، ومن المهم أيضًا استخدام نفس المعرف في ملف strings.csv
عند الإشارة إلى أسماء النماذج. يتم استخدام لغة النموذج كوسيطة تم تمريرها إلى وظيفة lemmatizer، وهي عبارة عن سلسلة بسيطة تحمل اسم اللغة (على سبيل المثال "الإنجليزية"، "الروسية"، "الفرنسية").
يمكن أن تكون النماذج حاليًا بأربعة تنسيقات:
سوف يقوم WebVectors تلقائيًا باكتشاف تنسيق النماذج وتحميلها جميعًا إلى الذاكرة. سيتمكن المستخدمون من الاختيار من بين النماذج المحملة.
التعريب
يستخدم WebVectors ملف strings.csv
كمصدر للسلاسل المترجمة. وهو ملف مفصول بفواصل ويحتوي على 3 حقول:
بشكل افتراضي، اللغة 1 هي اللغة الإنجليزية واللغة 2 هي الروسية. يمكن تغيير هذا في webvectors.cfg
.
قوالب
يتم تعريف صفحات الويب الفعلية المعروضة للمستخدم في الملفات templates/*.html
. ضبطها كما يحلو لك. يتم تعريف القائمة الرئيسية في base.html
.
ملفات ستاتيس
إذا لم يعثر تطبيقك على الملفات الثابتة (البرامج النصية bootstrap وjs)، فقم بتحرير المتغير static_url_path
في run_syn.py
. يجب عليك وضع المسار المطلق لمجلد data
هناك.
تلميحات الاستعلام
إذا كنت تريد أن تعمل تلميحات الاستعلام، فلا تنس تجميع قائمة التلميحات الخاصة بك (تنسيق JSON). يوجد مثال على هذه القائمة في data/example_vocab.json
. يجب ذكر عنوان URL الحقيقي لهذه القائمة في data/hint.js
.
تشغيل ناقلات الويب
بمجرد قيامك بتعديل جميع الإعدادات وفقًا لسير العمل الخاص بك، والتأكد من أن القوالب مناسبة لك، وتشغيل البرنامج الخفي للنماذج، فأنت جاهز لبدء الخدمة فعليًا. إذا كنت تستخدم تكامل Apache ، فما عليك سوى إعادة تشغيل/إعادة تحميل Apache . إذا كنت تفضل الخيار المستقل، فقم بتنفيذ الأمر التالي في الدليل الجذر للمشروع:
gunicorn run_syn:app_syn -b address:port
حيث العنوان هو العنوان الذي يجب أن تكون الخدمة نشطة عليه (يمكن أن يكون مضيفًا محليًا)، والمنفذ هو منفذ الاستماع (على سبيل المثال، 9999).
دعم عمليات التضمين السياقية يمكنك تشغيل دعم نماذج التضمين السياقية (حاليًا يتم دعم ELMo). من أجل القيام بذلك:
قم بتثبيت حزمة simple_elmo
قم بتنزيل نموذج ELMo من اختيارك (على سبيل المثال، هنا).
قم بإنشاء إسقاط على أساس النوع بتنسيق word2vec
لمجموعة محدودة من الكلمات (على سبيل المثال 10000)، في ضوء نموذج ELMo ومجموعة مرجعية. لهذا، استخدم البرنامج النصي extract_elmo.py
الذي نقدمه:
python3 extract_elmo.py --input CORPUS --elmo PATH_TO_ELMO --outfile TYPE_EMBEDDING_FILE --vocab WORD_SET_FILE
سيتم تشغيل نموذج ELMo على المجموعة المقدمة وإنشاء تضمينات ثابتة من النوع المتوسط لكل كلمة في مجموعة الكلمات. سيتم استخدامها كبدائل معجمية.
قم بإعداد قاموس ترددي لاستخدامه مع المرئيات السياقية، كملف نص عادي مفصول بعلامات جدولة، حيث يحتوي العمود الأول على كلمات ويحتوي العمود الثاني على تردداتها في القاموس المرجعي الذي تختاره. يجب أن يحتوي السطر الأول من هذا الملف على عدد صحيح واحد يطابق حجم المجموعة في رموز الكلمات.
في قسم [Token]
من ملف التكوين webvectors.cfg
، قم بتبديل use_contextualized
إلى True وحدد المسارات إلى token_model
(ELMo المدرب مسبقًا)، type_model
(العرض القائم على النوع الذي قمت بإنشائه باستخدام البرنامج النصي الخاص بنا) و freq_file
الذي هو الخاص بك قاموس التردد
في الحقل ref_static_model
، حدد أيًا من نماذج تضمين الكلمات الثابتة (اسمها فقط)، والتي تريد استخدامها كهدف للارتباطات التشعبية من الكلمات الموجودة في صفحات التصور السياقي.
ستكون الصفحة التي تحتوي على بدائل ELMo المعجمية متاحة على http://YOUR_ROOT_URL/contextual/
في حالة وجود أي مشاكل، لا تتردد في الاتصال بنا:
http://www.aclweb.org/anthology/E17-3025
http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
http://flask.pocoo.org/
http://radimrehurek.com/gensim/
http://gunicorn.org/