عنصر تخصيص Dirichlet الكامن
توضح هذه المقالة كيفية استخدام مكون تخصيص Dirichlet الكامن في مصمم Azure التعلم الآلي، لتجميع نص غير مصنف في فئات.
غالبا ما يستخدم تخصيص Dirichlet الكامن (LDA) في معالجة اللغات الطبيعية للعثور على نصوص متشابهة. مصطلح شائع آخر هو نمذجة الموضوع.
يأخذ هذا المكون عمودا من النص ويقوم بإنشاء هذه المخرجات:
النص المصدر، مع درجة لكل فئة
مصفوفة المعالم التي تحتوي على المصطلحات والمعاملات المستخرجة لكل فئة
تحويل، يمكنك حفظه وإعادة تطبيقه على نص جديد يستخدم كإدخال
يستخدم هذا المكون مكتبة scikit-learn. لمزيد من المعلومات حول scikit-learn، راجع مستودع GitHub، الذي يتضمن برامج تعليمية وشرحا للخوارزمية.
المزيد حول تخصيص لانت ديريشليت
LDA عموما ليست طريقة للتصنيف. لكنه يستخدم نهجا توليديا ، لذلك لا تحتاج إلى تقديم تسميات فئة معروفة ثم استنتاج الأنماط. بدلا من ذلك ، تولد الخوارزمية نموذجا احتماليا يستخدم لتحديد مجموعات من المواضيع. يمكنك استخدام النموذج الاحتمالي لتصنيف حالات التدريب الحالية أو الحالات الجديدة التي تقدمها للنموذج كمدخلات.
قد تفضل النموذج التوليدي لأنه يتجنب وضع افتراضات قوية حول العلاقة بين النص والفئات. يستخدم فقط توزيع الكلمات لنمذجة الموضوعات رياضيا.
تمت مناقشة النظرية في هذه الورقة ، وهي متاحة كتنزيل PDF: تخصيص Dirichlet الكامن: Blei و Ng و Jordan.
ويستند التنفيذ في هذا المكون إلى مكتبة scikit-learn ل LDA.
لمزيد من المعلومات، راجع قسم الملاحظات الفنية .
كيفية تكوين تخصيص Dirichlet الكامن
يتطلب هذا المكون مجموعة بيانات تحتوي على عمود نص، إما خام أو تمت معالجته مسبقا.
أضف مكون تخصيص Dirichlet الكامن إلى خط الأنابيب الخاص بك.
في قائمة الأصول ضمن تحليلات النص، اسحب مكون تخصيص Dirichlet الكامن وأفلته على اللوحة.
كإدخال للمكون، قم بتوفير مجموعة بيانات تحتوي على عمود نص واحد أو أكثر.
بالنسبة إلى الأعمدة الهدف، اختر عمودا واحدا أو أكثر يحتوي على نص لتحليله.
يمكنك اختيار أعمدة متعددة، ولكن يجب أن تكون من نوع بيانات السلسلة .
نظرا لأن LDA ينشئ مصفوفة معالم كبيرة من النص، فستقوم عادة بتحليل عمود نص واحد.
بالنسبة إلى عدد الموضوعات المراد نمذجتها، أدخل عددا صحيحا بين 1 و1000 يشير إلى عدد الفئات أو الموضوعات التي تريد اشتقاقها من نص الإدخال.
بشكل افتراضي، يتم إنشاء 5 مواضيع.
بالنسبة إلى N-grams، حدد الحد الأقصى لطول N-gram الذي تم إنشاؤه أثناء التجزئة.
الافتراضي هو 2 ، مما يعني أنه يتم إنشاء كل من bigram و unigram.
حدد الخيار تطبيع لتحويل قيم المخرجات إلى احتمالات.
بدلا من تمثيل القيم المحولة كأعداد صحيحة، سيتم تحويل القيم الموجودة في مجموعة بيانات المخرجات والمعالم على النحو التالي:
سيتم تمثيل القيم في مجموعة البيانات كاحتمال حيث
P(topic|document).سيتم تمثيل القيم في مصفوفة موضوع المعالم كاحتمال حيث
P(word|topic).
ملاحظة
في Azure التعلم الآلي مصمم، لم تعد مكتبة scikit-learn تدعم مخرجات doc_topic_distr غير العادية من الإصدار 0.19. في هذا المكون، لا يمكن تطبيق المعلمة تطبيع إلا على مخرجات مصفوفة الموضوع المميزة . يتم دائما تطبيع إخراج مجموعة البيانات المحولة.
حدد الخيار إظهار كافة الخيارات، ثم قم بتعيينه إلى TRUE إذا كنت تريد تعيين المعلمات المتقدمة التالية.
هذه المعلمات خاصة بتنفيذ scikit-learn ل LDA. هناك بعض البرامج التعليمية الجيدة حول LDA في scikit-Learn ، بالإضافة إلى مستند scikit-learn الرسمي.
رو المعلمة. توفير احتمال مسبق لقلة توزيعات الموضوعات. تتوافق هذه المعلمة مع معلمة sklearn
topic_word_prior. استخدم القيمة 1 إذا كنت تتوقع أن يكون توزيع الكلمات مسطحا ؛ أي أن جميع الكلمات يفترض أنها متساوية الاحتمال. إذا كنت تعتقد أن معظم الكلمات تظهر بشكل ضئيل، فيمكنك تعيينها إلى قيمة أقل.معلمة ألفا. حدد احتمالا مسبقا لتنافر أوزان الموضوعات لكل وثيقة. تتوافق هذه المعلمة مع معلمة sklearn
doc_topic_prior.العدد التقديري للوثائق. أدخل رقما يمثل أفضل تقدير لعدد المستندات (الصفوف) التي ستتم معالجتها. تتيح هذه المعلمة للمكون تخصيص جدول تجزئة بحجم كاف. وهو يتوافق مع المعلمة
total_samplesفي scikit-learn.حجم الدفعة. أدخل رقما يشير إلى عدد الصفوف التي يجب تضمينها في كل دفعة من النص المرسل إلى نموذج LDA. تتوافق هذه المعلمة مع المعلمة
batch_sizeفي scikit-learn.القيمة الأولية للتكرار المستخدم في جدول تحديث التعلم. حدد قيمة البداية التي تقلل من معدل التعلم للتكرارات المبكرة في التعلم عبر الإنترنت. تتوافق هذه المعلمة مع المعلمة
learning_offsetفي scikit-learn.يتم تطبيق الطاقة على التكرار أثناء التحديثات. حدد مستوى الطاقة المطبقة على عدد التكرارات للتحكم في معدل التعلم أثناء التحديثات عبر الإنترنت. تتوافق هذه المعلمة مع المعلمة
learning_decayفي scikit-learn.عدد مرات المرور فوق البيانات. حدد الحد الأقصى لعدد المرات التي ستدور فيها الخوارزمية فوق البيانات. تتوافق هذه المعلمة مع المعلمة
max_iterفي scikit-learn.
حدد الخيار إنشاء قاموس ngrams أو إنشاء قاموس ngrams قبل LDA، إذا كنت تريد إنشاء قائمة n-gram في تمرير أولي قبل تصنيف النص.
إذا قمت بإنشاء القاموس الأولي مسبقا، فيمكنك لاحقا استخدام القاموس عند مراجعة النموذج. إن القدرة على تعيين النتائج إلى نص بدلا من المؤشرات العددية أسهل بشكل عام للتفسير. ومع ذلك ، سيستغرق حفظ القاموس وقتا أطول ويستخدم مساحة تخزين إضافية.
بالنسبة إلى الحد الأقصى لحجم قاموس ngram، أدخل إجمالي عدد الصفوف التي يمكن إنشاؤها في قاموس n-gram.
هذا الخيار مفيد للتحكم في حجم القاموس. ولكن إذا تجاوز عدد ngrams في الإدخال هذا الحجم ، فقد تحدث تصادمات.
إرسال المسار. يستخدم مكون LDA نظرية بايز لتحديد الموضوعات التي قد ترتبط بالكلمات الفردية. لا ترتبط الكلمات حصريا بأي مواضيع أو مجموعات. بدلا من ذلك ، كل n-gram لديه احتمال مكتسب للارتباط بأي من الفئات المكتشفة.
النتائج
وللمكون ناتجان:
مجموعة البيانات المحولة: يحتوي هذا الإخراج على نص الإدخال وعدد محدد من الفئات المكتشفة والدرجات لكل مثال نصي لكل فئة.
مصفوفة موضوع الميزة: يحتوي العمود الموجود في أقصى اليسار على ميزة النص المستخرج. يحتوي عمود لكل فئة على درجة تلك الميزة في تلك الفئة.
تحويل LDA
يقوم هذا المكون أيضا بإخراج تحويل LDA الذي يطبق LDA على مجموعة البيانات.
يمكنك حفظ هذا التحويل وإعادة استخدامه لمجموعات البيانات الأخرى. قد تكون هذه التقنية مفيدة إذا كنت قد تدربت على مجموعة كبيرة وترغب في إعادة استخدام المعاملات أو الفئات.
لإعادة استخدام هذا التحويل، حدد أيقونة تسجيل مجموعة البيانات في اللوحة اليمنى من مكون تخصيص Dirichlet الكامن للاحتفاظ بالمكون ضمن فئة مجموعات البيانات في قائمة المكونات. ثم يمكنك توصيل هذا المكون بمكون تطبيق التحويل لإعادة استخدام هذا التحويل .
تحسين نموذج LDA أو نتائجه
عادة، لا يمكنك إنشاء نموذج LDA واحد يلبي جميع الاحتياجات. حتى النموذج المصمم لمهمة واحدة قد يتطلب العديد من التكرارات لتحسين الدقة. نوصي بتجربة كل هذه الطرق لتحسين نموذجك:
- تغيير معلمات النموذج
- استخدام التصور لفهم النتائج
- الحصول على تعليقات خبراء الموضوع لتحديد ما إذا كانت الموضوعات التي تم إنشاؤها مفيدة
ويمكن أن تكون التدابير النوعية مفيدة أيضا لتقييم النتائج. لتقييم نتائج نمذجة الموضوع، ضع في اعتبارك ما يلي:
- دقة. هل العناصر المتشابهة متشابهة حقا؟
- تنوع. هل يمكن للنموذج التمييز بين العناصر المتشابهة عند الحاجة إلى مشكلة العمل؟
- قابلية التوسع. هل يعمل على مجموعة واسعة من فئات النص أم فقط على نطاق مستهدف ضيق؟
يمكنك غالبا تحسين دقة النماذج المستندة إلى LDA باستخدام معالجة اللغة الطبيعية لتنظيف النص وتلخيصه وتبسيطه أو تصنيفه. على سبيل المثال، يمكن للتقنيات التالية، وكلها مدعومة في Azure التعلم الآلي، تحسين دقة التصنيف:
إيقاف إزالة الكلمات
تطبيع الحالة
الليماتة أو الجذعية
التعرف على رموز الأحرف
لمزيد من المعلومات، راجع نص المعالجة المسبقة.
في المصمم ، يمكنك أيضا استخدام مكتبات R أو Python لمعالجة النصوص: تنفيذ R Script ، تنفيذ Python Script.
ملاحظات فنية
يحتوي هذا القسم على تفاصيل التنفيذ والنصائح والإجابات على الأسئلة المتداولة.
تفاصيل التنفيذ
بشكل افتراضي، يتم تطبيع توزيعات مخرجات مجموعة بيانات محولة ومصفوفة موضوع المعالم كاحتمالات:
يتم تطبيع مجموعة البيانات المحولة كاحتمال شرطي للمواضيع المعطاة لمستند. في هذه الحالة، مجموع كل صف يساوي 1.
يتم تطبيع مصفوفة موضوع الميزة كاحتمال شرطي للكلمات المعطاة لموضوع. في هذه الحالة، مجموع كل عمود يساوي 1.
تلميح
في بعض الأحيان قد يعرض المكون موضوعا فارغا. في معظم الأحيان ، يكون السبب هو التهيئة العشوائية الزائفة للخوارزمية. إذا حدث ذلك، يمكنك محاولة تغيير المعلمات ذات الصلة. على سبيل المثال، قم بتغيير الحد الأقصى لحجم قاموس N-gram أو عدد البتات التي سيتم استخدامها لتجزئة الميزات.
LDA ونمذجة الموضوع
غالبا ما يستخدم تخصيص Dirichlet الكامن لنمذجة الموضوعات القائمة على المحتوى ، مما يعني بشكل أساسي تعلم الفئات من النص غير المصنف. في نمذجة الموضوع المستند إلى المحتوى، يكون الموضوع توزيعا على الكلمات.
على سبيل المثال، افترض أنك قدمت مجموعة من مراجعات العملاء تتضمن العديد من المنتجات. يحتوي نص المراجعات التي تم إرسالها من قبل العملاء بمرور الوقت على العديد من المصطلحات ، والتي يستخدم بعضها في مواضيع متعددة.
قد يمثل الموضوع الذي تحدده عملية LDA مراجعات لمنتج فردي، أو قد يمثل مجموعة من مراجعات المنتجات. بالنسبة ل LDA ، فإن الموضوع نفسه هو مجرد توزيع احتمالي بمرور الوقت لمجموعة من الكلمات.
نادرا ما تكون الشروط حصرية لأي منتج واحد. يمكن أن تشير إلى منتجات أخرى ، أو تكون مصطلحات عامة تنطبق على كل شيء ("رائع" ، "فظيع"). قد تكون المصطلحات الأخرى كلمات ضوضاء. ومع ذلك ، فإن طريقة LDA لا تحاول التقاط جميع الكلمات في الكون أو فهم كيفية ارتباط الكلمات ، بصرف النظر عن احتمالات حدوثها المشترك. يمكنه فقط تجميع الكلمات المستخدمة في المجال الهدف.
بعد حساب فهارس المصطلحات، يقارن مقياس التشابه القائم على المسافة صفوفا فردية من النص لتحديد ما إذا كان هناك جزءان من النص متشابهان أم لا. على سبيل المثال، قد تجد أن المنتج يحتوي على أسماء متعددة مرتبطة ارتباطا وثيقا. أو قد تجد أن المصطلحات السلبية بشدة ترتبط عادة بمنتج معين. يمكنك استخدام مقياس التشابه لتحديد المصطلحات ذات الصلة وإنشاء توصيات.
معلمات المكونات
| الاسم | النوع | النطاق | اختياري | افتراضي | الوصف |
|---|---|---|---|---|---|
| عمود (أعمدة) الهدف | تحديد العمود | مطلوب | سلسلةميزة | اسم العمود المستهدف أو الفهرس. | |
| عدد المواضيع التي يجب نمذجتها | عدد صحيح | [1;1000] | مطلوب | 5 | نمذجة توزيع المستند مقابل مواضيع N. |
| N-غرام | عدد صحيح | [1;10] | مطلوب | 2 | ترتيب N-grams التي تم إنشاؤها أثناء التجزئة. |
| تطبيع | منطقي | صح أم خطأ | مطلوب | صواب | تطبيع المخرجات إلى الاحتمالات. ستكون مجموعة البيانات المحولة P (موضوع |مستند) وستكون مصفوفة موضوع الميزة P (word|topic). |
| إظهار جميع الخيارات | منطقي | صح أم خطأ | مطلوب | خطأ | يقدم معلمات إضافية خاصة ب scikit-learn عبر الإنترنت LDA. |
| رو المعلمة | قيمة Float | [0.00001;1.0] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 0.01 | التوزيع المسبق لكلمة الموضوع. |
| معلمة ألفا | قيمة Float | [0.00001;1.0] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 0.01 | التوزيع المسبق لموضوع الوثيقة. |
| العدد التقديري للوثائق | عدد صحيح | [1;int. ماكس فاليو] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 1000 | العدد التقديري للوثائق. يتوافق مع المعلمة total_samples . |
| حجم الدفعة | عدد صحيح | [1;1024] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 32 | حجم الدفعة. |
| القيمة الأولية للتكرار المستخدم في جدول تحديث معدل التعلم | عدد صحيح | [0;int. ماكس فاليو] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 0 | القيمة الأولية التي تقلل من معدل التعلم للتكرارات المبكرة. يتوافق مع المعلمة learning_offset . |
| الطاقة المطبقة على التكرار أثناء التحديثات | قيمة Float | [0.0;1.0] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 0.5 | يتم تطبيق القوة على عدد التكرار من أجل التحكم في معدل التعلم. يتوافق مع المعلمة learning_decay . |
| عدد التكرارات التدريبية | عدد صحيح | [1;1024] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | 25 | عدد مرات تكرار التدريب. |
| بناء قاموس ngrams | منطقي | صح أم خطأ | يطبق عند عدم تحديد خانة الاختيار إظهار كافة الخيارات | صواب | يبني قاموسا من ngrams قبل حساب LDA. مفيد لفحص النموذج وتفسيره. |
| الحد الأقصى لحجم قاموس ngram | عدد صحيح | [1;int. ماكس فاليو] | ينطبق عندما يكون الخيار إنشاء قاموس ngramsصحيحا | 20000 | الحد الأقصى لحجم قاموس ngram. إذا تجاوز عدد الرموز المميزة في الإدخال هذا الحجم، فقد تحدث تصادمات. |
| عدد البتات لاستخدامها في تجزئة الميزات. | عدد صحيح | [1;31] | يطبق عند عدم تحديد خانة الاختيار إظهار كافة الخيارات وإنشاء قاموس ngramsخاطئ | 12 | عدد البتات لاستخدامها في تجزئة الميزات. |
| بناء قاموس ngrams قبل LDA | منطقي | صح أم خطأ | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات | صواب | يبني قاموسا من ngrams قبل LDA. مفيد لفحص النموذج وتفسيره. |
| الحد الأقصى لعدد ngrams في القاموس | عدد صحيح | [1;int. ماكس فاليو] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات والخيار إنشاء قاموس ngrams هو True | 20000 | الحد الأقصى لحجم القاموس. إذا تجاوز عدد الرموز المميزة في الإدخال هذا الحجم، فقد تحدث تصادمات. |
| عدد بتات التجزئة | عدد صحيح | [1;31] | ينطبق عند تحديد خانة الاختيار إظهار كافة الخيارات والخيار إنشاء قاموس ngrams هو False | 12 | عدد البتات التي يجب استخدامها أثناء تجزئة الميزات. |
الخطوات التالية
راجع مجموعة المكونات المتوفرة ل Azure التعلم الآلي.
للحصول على قائمة بالأخطاء الخاصة بالمكونات، راجع الاستثناءات ورموز الأخطاء الخاصة بالمصمم.