الأخبار التكنولوجية والاستعراضات والنصائح!

كيفية استخدام BERT لإنشاء أوصاف تعريفية على نطاق واسع

ستساعدك المقالة التالية: كيفية استخدام BERT لإنشاء أوصاف تعريفية على نطاق واسع

في الأشهر القليلة الماضية، أعلنت جوجل عن نظامين قيد الإنتاج في بحث جوجل وهما أيضًا مفتوحان المصدر. يمكن لأي شخص أن يرى كيف يعملون.

إن أجزاء Google مفتوحة المصدر في بحث Google ليست شيئًا كنت تعتبره ممكنًا حتى قبل عام.

كما هو متوقع، ليس هناك نقص في الأدلة النهائية لتحسين موقعك لـ BERT. لا يمكنك.

يساعد BERT Google على فهم القصد من بعض الاستعلامات بشكل أفضل ولا علاقة له بمحتوى الصفحة حسب إعلانها.

إذا كنت قد قرأت مقالات التعلم العميق الخاصة بي، فلا يجب أن يكون لديك فهم عملي لكيفية عمل BERT فحسب، بل يجب أيضًا أن يكون لديك فهم عملي لأغراض تحسين محركات البحث – على وجه التحديد، لأتمتة تصنيف النوايا.

دعونا نوسع هذا ونغطي حالة استخدام أخرى: تلخيص النص الحديث.

يمكننا استخدام تلخيص النص الآلي لإنشاء أوصاف التعريف التي يمكننا نشرها على الصفحات التي لا تحتوي على واحدة.

من أجل توضيح هذه التقنية القوية، سأقوم تلقائيًا بتنزيل مقالتي الأخيرة وتلخيصها وكالعادة، سأشارك مقتطفات من كود بايثون التي يمكنك متابعتها والتكيف مع موقعك أو موقع عملائك.

وهنا خطة عملنا:

  • مناقشة تلخيص النص الآلي.
  • تعرف على كيفية العثور على أحدث كود (SOTA) الذي يمكننا استخدامه للتلخيص.
  • قم بتنزيل كود تلخيص النص وإعداد البيئة.
  • قم بتنزيل مقالتي الأخيرة واستخرج المحتوى الرئيسي فقط على الصفحة.
  • استخدم تلخيص النص التجريدي لإنشاء ملخص النص.
  • راجع المفاهيم الكامنة وراء PreSumm.
  • ناقش بعض القيود.
  • أخيرًا، سأشارك الموارد لمعرفة المزيد والمشاريع المجتمعية.

تلخيص النص لإنتاج أوصاف التعريف

عندما يكون لدينا صفحات غنية بالمحتوى، يمكننا الاستفادة من تلخيص النص الآلي لإنتاج أوصاف تعريفية على نطاق واسع.

هناك طريقتان أساسيتان لتلخيص النص وفقًا للإخراج:

  • الاستخراجية: قمنا بتقسيم النص إلى جمل وترتيبها بناءً على مدى فعاليتها كملخص للمقالة بأكملها. سيحتوي الملخص دائمًا على الجمل الموجودة في النص.
  • مجردة: نقوم بإنشاء جمل جديدة محتملة تجسد جوهر النص.

ومن الناحية العملية، من الجيد عمومًا تجربة كلا الطريقتين واختيار الطريقة التي تحقق أفضل النتائج لموقعك.

كيفية العثور على أحدث كود (SOTA) لتلخيص النص

المكان المفضل لدي للعثور على الكودات والأوراق المتطورة هو أوراق مع رمز.

إذا قمت بتصفح قسم أحدث ما توصلت إليه التكنولوجيا، يمكنك العثور على أفضل الأبحاث أداءً للعديد من الفئات.

إذا قمنا بتضييق نطاق بحثنا إلى تلخيص النص، يمكننا أن نجد هذه الورقة: تلخيص النص باستخدام برامج التشفير المدربة مسبقًا، الذي يستفيد من BERT.

ومن هناك، يمكننا بسهولة العثور على روابط إلى ورقة ابحاث، والأهم من ذلك شفرة الذي ينفذ البحث.

إنها لفكرة جيدة أيضًا التحقق من التصنيف العالمي في كثير من الأحيان في حالة ظهور ورقة بحثية متفوقة.

قم بتنزيل PreSum وقم بإعداد البيئة

قم بإنشاء دفتر ملاحظات في Google Colab لمتابعة الخطوات التالية.

الكود الأصلي الموجود في مستودع الباحث لا يجعل من السهل استخدام الكود لإنشاء الملخصات.

يمكنك أن تشعر بالألم بمجرد قراءة هذا قضية جيثب. 😅

نحن نذهب لاستخدام أ نسخة متشعبة من الريبو وبعض الخطوات المبسطة التي قمت بتكييفها منها هذا دفتر الملاحظات.

دعونا أولا استنساخ المستودع.

!git Clone https://github.com/mingchen62/PreSumm.git

ثم قم بتثبيت التبعيات.

!pip install torch==1.1.0 pytorch_transformers TensorboardX بيروج متعدد العمليات

بعد ذلك، نحتاج إلى تنزيل النماذج المدربة مسبقًا.

بعد ذلك، نحتاج إلى فك ضغطها ونقلها إلى الأدلة المنظمة.

بعد هذه الخطوة، يجب أن يكون لدينا برنامج التلخيص جاهز.

لنقم بتنزيل المقالة التي نريد تلخيصها بعد ذلك.

إنشاء ملف نصي لتلخيص

كما ذكرت، سوف نلخص مشاركتي الأخيرة. فلنقم بتنزيله وتنظيف ملف HTML بحيث يتبقى لدينا محتوى المقالة فقط.

أولاً، لنقم بإنشاء الأدلة التي نحتاجها لحفظ ملف الإدخال الخاص بنا وكذلك النتائج من الملخصات.

!mkdir /content/PreSumm/bert_data_test/ !mkdir /content/PreSumm/bert_data/cnndm %cd /content/PreSumm/bert_data/cnndm

لنقم الآن بتنزيل المقالة واستخراج المحتوى الرئيسي. سوف نستخدم أ محدد CSS لكشط جسم المنشور فقط.

يكون إخراج النص في سطر واحد، وسنقوم بتقسيمه باستخدام الكود التالي.

text = text.splitlines(True) #keep newlines

لقد قمت بإزالة السطر الأول الذي يتضمن رمز الإعلان المدعوم والأسطر القليلة الأخيرة التي تتضمن بعض البيانات التعريفية للمقالة.

النص = النص[1:-5] #إزالة رمز الراعي وإنهاء البيانات التعريفية

وأخيرًا، يمكنني كتابة محتوى المقالة في ملف نصي باستخدام هذا الكود.

مع فتح (“python-data-stories.txt”، “a”) كـ f: f.writelines(text)

بعد ذلك، نحن على استعداد للانتقال إلى خطوة التلخيص.

توليد ملخص النص

سنقوم بإنشاء ملخص تجريدي، ولكن قبل أن نتمكن من إنشائه، نحتاج إلى تعديل الملف تلخيص.py.

ومن أجل إبقاء الأمور بسيطة، قمت بإنشاء ملف التصحيح مع التغييرات التي يمكنك تنزيلها باستخدام الكود التالي.

!wget https://Gist.githubusercontent.com/hamletbatista/f2741a3a74e4c5cc46ce9547b489ec36/raw/ccab9cc3376901b2f6b0ba0c4bbd03fa48c1b159/summarizer.patch

يمكنك مراجعة التغييرات التي سيتم إجراؤها هنا. ستتم إزالة الخطوط الحمراء وإضافة الخطوط الخضراء.

لقد استعرت هذه التغييرات من الدفتر المرتبط أعلاه، وهي تمكننا من تمرير الملفات لتلخيص النتائج والاطلاع عليها.

يمكنك تطبيق التغييرات باستخدام هذا.

!تصحيح <الملخص.تصحيح

لدينا خطوة تحضيرية أخيرة. يقوم الكود التالي بتنزيل بعض الرموز المميزة التي يحتاجها الملخص.

استيراد nltk nltk.download(‘punkt’)

أخيرًا، لنقم بإنشاء ملخصنا باستخدام الكود التالي.

#CNN_DM مجردة %cd /content/PreSumm/src !python Summaryr.py -task abs -mode test -test_from /content/PreSumm/models/CNN_DailyMail_Abstractive/model_step_148000.pt -batch_size 32 -test_batch_size 500 -bert_data_path ../bert_data/cnndm -log_file ../logs/val_abs_bert_cnndm -report_rouge False -sep_optim true -use_interval true -visible_gpus -1 -max_pos 512 -max_src_nsents 100 -max_length 200 -alpha 0.95 -min_length 50 -result_path ../results/abs_bert_cnndm_sample

إليك ما يبدو عليه الإخراج الجزئي.

الآن، دعونا نراجع نتائجنا.

!ls -l /content/PreSumm/results

يجب أن يظهر هذا.

وهنا ملخص المرشح.

!head /content/PreSumm/results/abs_bert_cnndm_sample.148000.candidate

بعض الرموز مثل [UNK] و <ف> تتطلب تفسيرا. [UNK] يمثل كلمة من مفردات BERT. يمكنك تجاهل هذه. <ف> هو فاصل الجملة.

كيف يعمل PreSumm

تعتمد معظم تقنيات تلخيص النص الاستخراجي التقليدية على نسخ أجزاء من النص التي تم تحديدها لتكون جيدة لتضمينها في الملخص.

على الرغم من أن هذا النهج فعال في العديد من حالات الاستخدام، إلا أنه مقيد إلى حد ما لأنه قد لا توجد جمل مفيدة لتلخيص النص.

في مقالاتي السابقة للتعلم العميق، قمت بمقارنة أسلوب مطابقة النص التقليدي/الساذج مع البحث عن الأعمال باسمها في الشارع.

نعم، إنه يعمل، ولكنه مقيد إلى حد ما عند مقارنته بما يسمح لك نظام تحديد المواقع العالمي (GPS) بالقيام به.

لقد شرحت أن قوة استخدام التضمينات تعتمد على حقيقة أنها تعمل مثل الإحداثيات في الفضاء. عند استخدام الإحداثيات، كما تفعل في نظام تحديد المواقع العالمي (GPS)، لا يهم كيفية تسمية الشيء (أو اللغة التي تستخدمها لتسميته)، فهو لا يزال هو نفس المكان.

يتمتع BERT بميزة إضافية وهي أن الكلمة نفسها يمكن أن يكون لها إحداثيات مختلفة تمامًا اعتمادًا على السياق. على سبيل المثال، كلمة “واشنطن” في ولاية واشنطن وجسر جورج واشنطن تعني أشياء مختلفة تمامًا وسيتم ترميزها بشكل مختلف.

لكن الميزة الأقوى لـ BERT والأنظمة المشابهة هي أن مهام البرمجة اللغوية العصبية لا يتم تعلمها من الصفر، بل تبدأ من نموذج لغة تم تدريبه مسبقًا.

بمعنى آخر، يفهم النموذج على الأقل الفروق الدقيقة في اللغة مثل كيفية تنظيم الموضوعات والأحوال وحروف الجر وما إلى ذلك قبل أن يتم ضبطه في مهمة محددة مثل الإجابة على الأسئلة.

يسرد الباحثون في PreSumm ثلاث مساهمات رئيسية من عملهم في التلخيص:

  • لقد قاموا بتكييف بنية BERT العصبية لتعلم تمثيل الجملة الكاملة بسهولة. فكر في تضمين الكلمات في الجمل حتى تتمكن من التعرف بسهولة على الجمل المشابهة.
  • إنها تظهر فوائد واضحة للاستفادة من نماذج اللغة المدربة مسبقًا لمهام التلخيص. انظر تعليقاتي حول سبب فائدة ذلك
  • يمكن استخدام نماذجهم كعناصر بناء لنماذج تلخيص أفضل.

قيود ما قبل الجمع

تسلط هذه التغريدة الضوء على أحد القيود الواضحة لنظام PreSumm والأنظمة المماثلة التي تعتمد على نماذج مدربة مسبقًا. يتأثر أسلوب كتابتهم بشكل كبير بالبيانات المستخدمة لتدريبهم.

يتم تدريب PreSumm على مقالات CNN وDailyMail. الملخصات ليست جيدة بشكل خاص عند استخدامها لإنشاء ملخصات لفصول كتب الروايات الخيالية.

PreSumm: تلخيص النص باستخدام برامج التشفير المدربة مسبقًا

“نتائج حديثة في جميع المجالات في كل من الإعدادات الاستخراجية والتجريدية”

عضلات المعدة: https://t.co/oNV5YmLC6n
(العظام المجردة) كولاب: https://t.co/5K7UXUH7SL

يمكنك حقًا معرفة أن الملخصين مدربون على مجموعات بيانات الأخبار… pic.twitter.com/hsLVs3du2f

– جوناثان فلاي 👾 (@ jonathanfly) 2 سبتمبر 2019

في الوقت الحالي، يبدو أن الحل يكمن في إعادة تدريب النموذج باستخدام مجموعات البيانات في مجالك.

موارد لمعرفة المزيد والمشاريع المجتمعية

هذا ال التمهيدي العظيم على تلخيص النص الكلاسيكي.

لقد قمت بتغطية تلخيص النص قبل شهرين خلال DeepCrawl ندوة عبر الإنترنت. في ذلك الوقت، أصدر باحثو PreSumm نسخة سابقة من عملهم تركز فقط على تلخيص النص الاستخراجي. أطلقوا عليه بيرتسوم.

كان لدي معظم الأفكار نفسها، ولكن من المثير للاهتمام أن أرى مدى سرعة تحسين عملهم لتغطية كلا النهجين التجريدي والاستخراجي. بالإضافة إلى تحقيق أداء متطور في كلتا الفئتين.

تقدم مذهل.

عند الحديث عن التقدم، يواصل مجتمع Python SEO إبهاري بالمشاريع الجديدة الرائعة التي يعمل عليها الجميع ويطلقونها كل شهر.

فيما يلي بعض الأمثلة البارزة. لا تتردد في استنساخ مستودعاتهم، ومعرفة ما يمكنك تحسينه أو التكيف مع احتياجاتك، وإرسال التحسينات الخاصة بك مرة أخرى!

فقاعات: https://t.co/q1T7s0TW94
قم باستخراج بيانات Search Console وعرضها باستخدام Bokeh (حسب عناوين url، حسب القسم مع regex وحسب الموضوع مع مجموعة TF-IDF). وأخيرًا، يعرض جدولًا بالفرص التي يمكنك تنزيلها (عناوين URL ذات المواضع المرتفعة ونسبة النقر إلى الظهور المنخفضة) pic.twitter.com/CImGVkayVI

— ناتزير تورادو (@natzir9) 29 أكتوبر 2019

إستي؟ https://t.co/1q7UaEstbi

— ناتزير تورادو (@natzir9) 29 أكتوبر 2019

بناء زاحف صغير + مراقبة تغييرات المحتوى. استغرق الأمر وقتًا أطول من المتوقع، ونأمل أن نتمكن من المشاركة قريبًا!😅 pic.twitter.com/7hYewZsEBR

– تشارلي وارجنير 🇪🇺 (@DataChaz) 29 أكتوبر 2019

المزيد من الموارد: