أفضل تحليل المشاعر مع بيرت

تخيل أن لديك روبوت يجيب على عملائك ، وتريد أن تجعل الأمر يبدو طبيعيًا إلى حد ما ، وأكثر إنسانية.

الصورة عن طريق الهجين على Unsplash

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

بيرت لمحة عامة

BERT (تمثيلات التشفير ثنائية الاتجاه للمحولات) هي "طريقة جديدة للتمثيل اللغوي قبل التدريب" التي طورتها Google وأصدرت في أواخر عام 2018 (يمكنك قراءة المزيد عنها هنا). نظرًا لأنه مُدرَّب مسبقًا على مجموعات بيانات عامة (من ويكيبيديا و BooksCorpus) ، يمكن استخدامه لحل مهام البرمجة اللغوية العصبية المختلفة. يتضمن ذلك تصنيف مستوى الجملة (كما نفعل هنا) ، والإجابة على الأسئلة أو تصنيف مستوى الرمز المميز (على سبيل المثال ، جزء من وضع علامات على الكلام) ، و BERT قادر على تحقيق أداء حديث في العديد من هذه المهام.

هندسة بيرت مقارنة بنموذجين آخرين على أحدث طراز (المصدر: Devlin et al.)

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

صقل مع بيرت

قدم BERT مؤخرًا دفترًا تعليميًا في Python لتوضيح كيفية إجراء اكتشاف المشاعر في مراجعات الأفلام. دفتر الملاحظات التعليمي مصنوع جيدًا وواضح ، لذا لن أتطرق إليه بالتفصيل - فيما يلي بعض الأفكار. أولاً ، يستخدم دفتر الملاحظات مجموعة بيانات IMDb ، والتي يمكن تنزيلها مباشرةً من Keras. تحتوي مجموعة البيانات هذه على 50000 مراجعة فيلم مقسمة إلى جزأين متساويين ، واحد للتدريب والآخر للاختبار. كل مجموعة بيانات متوازنة ، مع 12500 مراجعة إيجابية و 12500 سلبية.

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

لضبط ، يتم تطبيق طبقة جديدة و softmax أعلى النموذج المدربين مسبقًا ولكن يمكنك تخصيصه. يستخدم هيكل مقدرات Tensorflow لتدريب النتائج وتوقعها ، وهي تتطلب بعض الوظائف مثل run_config أو model_fn ، إما تم ترميزها في دفتر الملاحظات أو تم استيرادها من ملف run_classifier.py الموجود في GitHub ، لذلك لا داعي للقلق بشأن هذه النتائج .

تقييم النموذج

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

على الرغم من أن الانحدار اللوجستي يعمل بشكل جيد على نحو مدهش ، متفوقًا على النموذج العصبي ، فإن BERT يحقق نتائج أفضل. علاوة على ذلك ، تتحسن نتائج BERT بشكل كبير عندما يتم تدريب النموذج على مجموعة بيانات أكبر. ما يمكن أن يكون العيب هو أن الأمر يستغرق وقتاً طويلاً للتدريب ، حتى مع GPU. اكتمال الانحدار اللوجستي التدريب في غضون ثوان ، عندما يحتاج BERT حوالي 20 دقيقة للقيام بذلك (مع GPU و 25000 مراجعات التدريب).

نتائج النماذج المختلفة

خدمة مع عامل الميناء و Tensorflow

بمجرد قيامك بحفظ النموذج الخاص بك كـ save_model.pb (تم الحصول عليه على سبيل المثال باستخدام طريقة export_savedmodel) ، يمكنك إعداد خادم يقوم بتشغيل النموذج ويقوم بعمل تنبؤات. أولاً ، نقوم بإنشاء حاوية Docker من خدمة tensorflow (سيكون عليك تثبيت Docker أولاً) ونضيف نموذجنا إليها. يجب أن يكون Model_en مجلدًا يحتوي على مجلد باسم 1 (ضروري لـ tensorflow) والذي يحتوي بنفسه على النموذج الذي قمت بتصديره. ويتحقق ذلك بسطر الأوامر أدناه.

بعد ذلك نكتب عميلًا بسيطًا ، سيأخذ جملة كمدخلات ، ونحولها إلى ميزات إدخال BERT (مثلما هو الحال في دفتر تعليمي) ، وسنتصل بحاوية Docker قيد التشغيل والتي ستعمل على التنبؤ. يمكنك تحويل العميل إلى واجهة برمجة تطبيقات بسيطة باستخدام Flask. يظهر رمز الثعبان أدناه تلك الخطوات المختلفة.

يمكنك بعد ذلك التنبؤات عن طريق إرسال طلبات السلسلة ، باستخدام Postman على سبيل المثال.

فويلا! أنت الآن جاهز لإجراء بعض تحليلات المشاعر الدقيقة مع BERT ، واستخدامها في تطبيق حقيقي.