استخدام OpenAI API للكشف عن الرسائل النصية القصيرة غير المرغوب فيها | بواسطة أماندا إغليسياس مورينو
فتح تصنيف فعال للنص باستخدام نماذج مدربة مسبقًا: دراسة حالة باستخدام OpenAI’s GPT-3.5-turbo

تقليديًا، سيبدأ أي مشروع لتصنيف نص معالجة اللغة الطبيعية بجمع الحالات، وتحديد التسميات الخاصة بها، وتدريب نموذج التصنيف، مثل نموذج الانحدار اللوجستي، لتصنيف الحالات. حاليا، يمكن استخدام النماذج المتوفرة في OpenAI مباشرة لمهام التصنيف يتطلب ذلك عادةً جمع كمية كبيرة من البيانات المصنفة لتدريب النموذج. يمكن استخدام هذه النماذج المدربة مسبقًا لمهام معالجة النصوص المتعددة، بما في ذلك التصنيف والتلخيص والتدقيق الإملائي وتحديد الكلمات الرئيسية.
لا نطلب أي بيانات مصنفة أو الحاجة إلى تدريب نموذج. بسيطة، أليس كذلك؟
يوفر ChatGPT واجهة رسومية للنماذج التي تنفذها OpenAI. ومع ذلك، ماذا لو أردنا تشغيل هذه النماذج مباشرة في بايثون؟ حسنًا، البديل المتاح هو OpenAI API، والذي يسمح لنا بالوصول إلى نماذجهم من بيئة برمجة. في هذه المقالة، سنصف بمثال موجز كيف يمكننا الوصول إلى واجهة برمجة التطبيقات (API) لاكتشاف ما إذا كانت الرسالة النصية القصيرة عبارة عن رسالة غير مرغوب فيها أم لا. ولتحقيق ذلك، سوف نستخدم أحد نماذج Open AI، وبالتحديد نموذج GPT-3.5-turbo.
الخطوة الأولى للوصول إلى تتضمن OpenAI API إنشاء حساب على OpenAI للحصول على مفتاح API المطلوبة للوصول إلى النماذج. عند إنشاء الحساب، سيكون لدينا رصيد بقيمة 5 دولارات تحت تصرفنا، والذي، كما سنلاحظ لاحقًا، سيسمح لنا بإجراء العديد من الاختبارات.
في هذا المثال، سنستخدم الإصدار المجاني من OpenAI، والذي يأتي مع قيود على الطلبات في الدقيقة واليوم. يعد الالتزام بهذه الحدود أمرًا بالغ الأهمية لتجنب أخطاء حدود السعر. يتم تعيين قيم هاتين المعلمتين على 3 طلبات في الدقيقة و200 في اليوم. وفي حين أن هذا يفرض قيودًا بطبيعة الحال، خاصة بالنسبة للمشاريع واسعة النطاق، إلا أنه يكفي لأغراض مثال هذه المقالة.
بمجرد أن أنشأنا الحساب، يمكننا الوصول إلى نماذج OpenAI المتوفرة للإصدار المجاني من Python باستخدام مكتبة OpenAI. أولا نقوم بإنشاء دالة تسمى chat_with_gpt
للوصول إلى طراز GPT-3.5-turbo. سيكون الإدخال لهذه الوظيفة هو prompt
والتي سنقوم بتصميمها لاحقاً.
الخطوة التالية هي إنشاء الموجه الذي سنقدمه لنموذج GPT-3.5-turbo. في هذه الحالة بالذات، نحن مهتمون بأمرين. أولاً، قيمة بين 0 و1 تشير إلى احتمالية أن تكون الرسائل النصية القصيرة عبارة عن رسائل غير مرغوب فيها أم لا، وثانيًا، شرح لسبب النموذج وراء هذا القرار. بالإضافة إلى ذلك، نرغب في الحصول على النتيجة بتنسيق JSON حتى نتمكن لاحقًا من تحويلها إلى إطار بيانات. يوجد أدناه النموذج الذي سنستخدمه لهذه التوقعات.
نحتاج الآن إلى بعض الرسائل لاختبار مدى نجاح نموذج OpenAI في التنبؤ بما إذا كانت الرسالة غير مرغوب فيها أم لا. ولهذا الغرض، سنستخدم مجموعة بيانات SMS Spam Collection المتوفرة في مستودع التعلم الآلي التابع لشركة UCI.
نقرأ البيانات ونحولها إلى DataFrame. كما لوحظ، تتكون مجموعة البيانات من عمودين: أحدهما يحتوي على الرسائل والثاني يحتوي على التسميات المقابلة. ham
يشير إلى أن الرسالة ليست بريدًا عشوائيًا، بينما spam
يشير إلى أنه كذلك.
الآن، سنستخدم النموذج لاكتشاف ما إذا كانت الرسائل غير مرغوب فيها أم لا وتقييم مدى قدرة نموذج OpenAI المدرب مسبقًا على التنبؤ بهذه المشكلة. كما ذكرنا في بداية المقالة، هناك قيود كبيرة فيما يتعلق بعدد الطلبات في الدقيقة واليوم التي يمكننا إجراؤها باستخدام الإصدار المجاني. تحتوي مجموعة البيانات على 5574 مثيلًا، ولكن لاختبار النموذج، سنستخدم أول 50 مثيلًا فقط. إذا كان لديك نسخة مدفوعة من OpenAI، فيمكنك زيادة عدد الرسائل التي تم اختبارها لأن القيود الزمنية أقل بكثير.
قبل إجراء التنبؤات مع النموذج، لقد تحققنا من أن مجموعة البيانات الخاصة بنا المكونة من 50 مثيلًا تحتوي على كلتا الرسالتين تلك هي الرسائل غير المرغوب فيها والرسائل التي ليست كذلك. في المجمل، هناك 40 رسالة غير مزعجة و10 رسائل غير مرغوب فيها.
وأخيرا، نشرع في إجراء التنبؤ. كما هو مبين أدناه، لقد قمنا بتتبع الاعتمادات والرموز المتاحة في جميع الأوقات. بالإضافة إلى ذلك، قمنا بتنفيذ وظيفة السكون في الكود لمدة 60 ثانية لضمان الامتثال للقيود المتعلقة بعدد الطلبات.
تم تخزين الرسالة التي يقدمها النموذج مع التنبؤ في متغير يسمى prediction
. هذه الرسالة عبارة عن ملف JSON بالبنية التالية: { “spam”: “0.1”, “reasoning”: “The message seems to be a typical promotional message about a buffet offer and does not contain any typical spam keywords or characteristics. The probability of this message being spam is low.” }
.
تسفر التوقعات عن قيمة تتراوح بين 0 و1. تشير القيمة 0 إلى أن الرسالة ليست بريدًا عشوائيًا، بينما تشير القيمة 1 إلى أنها كذلك. لتعيين التصنيفات، سنستخدم حدًا قدره 0.5، مما يعني أن النتيجة الأعلى من 0.5 حسب النموذج ستصنف الرسالة على أنها بريد عشوائي.
الآن، كل ما تبقى هو مقارنة التسميات الفعلية مع التسميات المتوقعة وتقييم مدى جودة أداء نموذج GPT-3.5-turbo للتنبؤات.
أعلاه هي مصفوفة الارتباك للنموذج.
- بالنسبة للرسائل التي ليست بريدًا عشوائيًا (هام)، توقع النموذج بشكل صحيح أن 37 منها ليست بريدًا عشوائيًا (سلبيات حقيقية)، لكنه أخطأ في تصنيف 3 منها على أنها بريد عشوائي (إيجابيات كاذبة).
- بالنسبة للرسائل التي تعتبر بريدًا عشوائيًا، توقع النموذج بشكل صحيح أن 10 منها كرسائل غير مرغوب فيها (إيجابيات حقيقية)، مع عدم وجود سلبيات كاذبة ملحوظة في هذه الحالة.
يُظهر النموذج حساسية جيدة في اكتشاف رسائل البريد العشوائي، مع وجود عدد قليل من النتائج الإيجابية الخاطئة التي تشير إلى المجالات المحتملة للتحسين في دقته. وكما هو موضح، حقق النموذج معدل دقة 94%، وصنف بشكل صحيح 47 حالة من أصل 50.
نظرًا لأننا طلبنا من النموذج تزويدنا بالمعلومات المتعلقة بأسباب تصنيف الرسالة كرسالة غير مرغوب فيها أم لا، فيمكننا فحص سبب تصنيفها بشكل خاطئ لثلاث رسائل لا تنتمي إلى فئة البريد العشوائي. وفيما يلي التوضيحات التي يقدمها النموذج:
- تحتوي الرسالة على أخطاء لغوية ونحوية غير عادية ترتبط عادةً بالرسائل غير المرغوب فيها. ويذكر أيضًا موضوعات حساسة مثل الإيدز، وهو تكتيك شائع يستخدم في رسائل البريد العشوائي لإثارة المشاعر وتحفيز الاستجابة. ولذلك، هناك احتمال كبير أن تكون هذه الرسالة بريدًا عشوائيًا.
- تحتوي الرسالة على محتوى إيحائي وغير مناسب، وهي سمة شائعة لرسائل البريد العشوائي. بالإضافة إلى ذلك، قد يشير استخدام القواعد النحوية واللغة غير الصحيحة إلى أن هذه الرسالة غير مرغوب فيها. ولذلك، فإن احتمال أن تكون هذه الرسالة بريدًا عشوائيًا مرتفعًا.
- تحتوي الرسالة على محتوى إيحائي يتعلق بالصفات الشخصية، وهي سمة شائعة في رسائل البريد العشوائي. بالإضافة إلى ذلك، فإن استخدام لغة صريحة يزيد من احتمال اعتبار هذه الرسالة بريدًا عشوائيًا.
تميل الرسائل التي تحتوي على محتوى غير لائق أو أخطاء إملائية عديدة إلى تصنيفها على أنها رسائل غير مرغوب فيها.
تقليديا، بدأت المشاريع التي تتطلب تصنيف النص بقواعد بيانات مصنفة ونموذج يحتاج إلى التدريب. إن ظهور النماذج اللغوية المدربة مسبقًا (LLMs) يوفر الآن إمكانية تصنيف العديد من النصوص دون الحاجة إلى تدريب النموذج مسبقًا، حيث تم بالفعل تدريب هذه النماذج على العديد من حالات الاستخدام. لقد شرحنا في هذه المقالة كيفية استخدام OpenAI API للوصول إلى نموذج GPT-3.5-turbo وتحديد ما إذا كانت مجموعة من الرسائل هي رسائل غير مرغوب فيها أم لا. تمكن النموذج من تصنيف 94% من الحالات بشكل صحيح، مما يدل على مستوى عال من الدقة. في المستقبل، قد يكون من المفيد تقييم نماذج OpenAI الأخرى واستكشاف المطالبات المختلفة التي قد تؤدي إلى أداء أفضل. بالمناسبة، تكلفة تنفيذ المشروع كانت 0.007 دولار فقط.
اكتشاف المزيد من موقع علم
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.