أي منظمة مالية هي كائن حي والعمليات فيه غير كاملة. تؤدي عيوب العملية إلى عدم رضا العملاء ، والتي يمكن أن تتحول إلى شكاوى. في هذه المقالة ، سنتحدث عن مساهمتنا في عملية الأتمتة من خلال تنفيذ مشروع تعلُّم الآلة الصغير.يمكنك محاولة حل أي مهمة صعبة باستخدام طرق بسيطة ، ولا يعد التعلم الآلي استثناءً.التعليقات هي أهم المعلومات ، لذا يجب أن تدرس قدر الإمكان كل جزء منها. عند تحليل الشكاوى المقدمة من العملاء ، نرى بموضوعية أي مشاكل في العمليات التجارية تنشأ. نظرًا لأن العمليات غالبًا ما تكون مترابطة ، يمكن تجميعها واعتبارها كمجموعة. وفقًا لذلك ، نصل إلى مهمة التعلم الآلي المعياري (ML) - "التصنيف متعدد الفئات". نتيجة لهذا التحليل ، تم حل المهمة - جمع التحليلات المدمجة للمؤسسة.مهمة التصنيف هي مهمة يوجد فيها العديد من الكائنات مقسمة إلى فئات بطريقة معينة. في حالة التصنيف متعدد الفئات ، يجب أن يكون عدد الفصول أكثر من 2 ويمكن أن يصل إلى عدة آلاف.يتم تخزين البيانات المتعلقة بالشكاوى والإجابات عليها على الخادم ، ويتم تنفيذ عملية التفريغ والمعالجة المسبقة كمعيار من خلال طلب إلى قاعدة البيانات ، عند الإخراج نحصل على إطار بيانات مع البيانات التي سنعمل معها. الشكوى والرد عليها وثائق طويلة للغاية. على سبيل المثال ، يمكن أن يصل الرد على الشكوى إلى مئات أو حتى آلاف الكلمات. معالجة هذا النص مباشرة مكلفة للغاية (من الناحية الحسابية) ، وهذا هو السبب في أن المعالجة المسبقة للنص ضرورية.def review_to_wordlist(review):
review_text = re.sub('[^--]',' ', review)
words = review_text.strip().lower().split()
words = [w for w in words if not w in stop_words]
words = [morph.parse(w)[0].normal_form for w in words]
new_stop_words = find_names(words)
words = [w for w in words if not w in new_stop_words]
return words
تعتمد الدقة وفقًا للنموذج بشكل كبير على تفرد النص ، لذلك من الضروري إزالة الكلمات من النص التي لا تحمل معنى كبيرًا - "إيقاف الكلمات". عادة ما يتضمن تكوين الكلمات حروف الجر والعطف وأجزاء أخرى غير مهمة من الكلام. قمنا أيضًا بتكملة قاموس كلمات التوقف بالأسماء الأولى والأوسط.def find_names(words, prob_thresh = 0.4):
words = [w for w in words if 'str' in str(type(w))]
add_stop_words = [w for w in words for p in morph.parse(w) if 'Name' in p.tag and
p.score >= prob_thresh]
stop_words.update(add_stop_words)
return stop_words
قبل تنفيذ المشروع ، تم إجراء التصنيف يدويًا ، وبالتالي ، لدينا بيانات تم ترميزها بواسطة خبراء. وهذه مهمة تدريس ML كلاسيكية مع مدرس. يتم تقليل النص الذي تمت معالجته مسبقًا إلى عرض يمكن للنموذج معالجته. للقيام بذلك ، نقوم بترجمة الردود على الشكاوى إلى متجهات الميزات (المتغير المستقل المستخدم في الرمز هو الميزات ، المتغير التابع هو التسميات).tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='utf8',
ngram_range=(1, 2), stop_words=stop_words)
features = tfidf.fit_transform(df_temp['Consumer_complaint_narrative'])
labels = df_temp['Num_bp']
تم تحديد تصنيف متجه الدعم الخطي للتصنيف. تم ذلك للأسباب التالية:- كفاءة عالية عند العمل بقياسات ذات أبعاد كبيرة ؛
- عمل مستقر في حالة زيادة البعد على عدد العينات.
تم إعداد هذا المشروع للتنفيذ في حفلة موسيقية. كل يوم ، سيقوم النموذج بتصنيف البيانات التي تم إدخالها خلال يوم العمل. في المرحلة الأولية ، يفترض التحقق اليدوي الإضافي لعمل النموذج من قبل خبير. مرة في الشهر ، سيتم إعادة تدريب النموذج. سمح لنا تنفيذ هذا المشروع بخطوة أقرب للمستقبل!