ملحمة لغوية تفشل ، أو كيفية حشر القاموس بأكمله للغة الروسية في Power BI

الصورة

بطريقة ما ، حل مشكلة التحليل اللغوي في Power BI وفي نفس الوقت البحث عن أمثلة لمقالتي السابقة ، تذكرت المشكلة التي حاولت حلها في Excel منذ عدة سنوات: كان من الضروري تنفيذ قاموس اللغة الروسية في النظام التحليلي للتحليل اللغوي لعدد كبير من الاستفسارات بلغة طبيعية. وكان من المرغوب فيه استخدام الأدوات المكتبية القياسية. ستقوم الغالبية العظمى من الناس على الفور بهذه المهمة في Excel ، وقد ذهبت مرة واحدة بنفس الطريقة. لقد استخدمت الجسم المفتوح للغة الروسية ( http://opencorpora.org/ ) كمعجم.

لكن خيبة الأمل كانت تنتظرني - تألف القاموس من 300 ألف شكل كلمة ، وأكثر من 5 ملايين إدخال ، وبالنسبة لبرنامج Excel ، من حيث المبدأ ، مبلغ مستحيل. حتى إذا قمت بدفع مليون سطر "فقط" إلى داخله ، فإن الشخص المريض للغاية الذي لن يكون في عجلة من أمره سيكون قادرًا على القيام بأي تلاعب معهم أو حسابات لا قدر الله. لكن هذه المرة قررت تعيين أداة أكثر ملاءمة للمهمة - Power BI.

ما هو Power BI؟


أجد أن هذا المنتج لا يقدره المجتمع المهني إلى حد كبير. Power BI عبارة عن مجموعة من أدوات تحليل الأعمال التي تم إنشاؤها للمستخدمين الذين يمتلكون Excel بمستوى أعلى قليلاً من "كسر المبلغ في الأعمدة". إذا كان الشخص قادرًا على كتابة صيغ متوسطة التعقيد في Excel ، فسيتمكّن من Power BI في أمسيتين.

هذا ليس منتجًا واحدًا مع نوع من منطق البرمجة الداخلية ، ولكن نظامًا من ثلاثة مكونات:

الصورة

  • استعلام الطاقة هذا هو ETL ، حيث يكون من الضروري كتابة الاستعلامات باستخدام لغة البرمجة الخاصة به التي تعمل بكامل طاقتها - M. في الإنصاف ، من الجدير بالذكر أنه من غير المحتمل أن يضطر المستخدم العادي إلى البرمجة عليها: تتوفر معظم الوظائف مباشرة من خلال القائمة أو المعالج في واجهة المكون. تختلف لغة M تمامًا عن لغة استعلام DAX (PowerPivot). ومع ذلك ، جمعتهم مايكروسوفت معا. وهذا منطقي من وجهة نظر التطوير: تم تصميم ETL لاستقبال البيانات وتشبعها الأولي (ليس سريعًا) و DAX - للحسابات التي تساعدنا على تصور هذه البيانات (بسرعة). بمعنى ، DAX للواجهة الأمامية ، و Power Query للواجهة الخلفية ، لعملية استخراج وتنسيق البيانات.
  • PowerPivot . وحدة معالجة داخل الذاكرة تعتمد على محرك xVelocity. يستخدم لغة استعلام DAX ، تشبه إلى حد كبير لغة صيغة Excel.
  • مكون التصور . إنه مفيد جدًا للاستخدام في الأنظمة التي تحتاج فيها إلى تصور البيانات: على موقع الشركة الإلكتروني ، أو على بوابة الدعم الفني (على سبيل المثال ، سحابة الطلب) ، أو على مورد داخلي للشركة. هناك أدوات يمكنها القيام بذلك بدون Power BI ، ولكن الكثير منها لن يساعد عندما يكون عدد السجلات بالملايين ويجب تجميع البيانات بطريقة أو بأخرى. ومع أدوات أخرى من هذا النوع ، تتنافس Power BI بسبب بساطتها ومعالجة منخفضة التكلفة للذاكرة. من الواضح أنه إذا كنا نتحدث عن تيرابايت من البيانات ، فستكون هناك حاجة إلى نهج مختلف. وبالنسبة لمثل هذه الحالات ، لدى Microsoft بالفعل ما تقدمه ، ولكن هذا موضوع لمقال منفصل.

يزداد منحنى التعلم في المرحلة الأولى بشكل حاد للغاية: إذا كنت جيدًا في Excel ، فسيتم فتح 80٪ من ميزات Power BI لك بعد دراسة قصيرة. هذه أداة قوية جدًا وسهلة الاستخدام تمامًا ، ولكن - حتى نقطة معينة. لاستخدامه بكامل طاقته ، ستحتاج بالفعل إلى خبرة ومعرفة عميقة بلغات M و DAX.

ما هو برنامج Power BI Desktop؟


لمن يمكن أن يكون مفيدا؟ بادئ ذي بدء ، أي مستخدمي الأعمال الذين يضطرون إلى معالجة وتحليل كميات كبيرة جدًا من البيانات عندما لا يكون Excel قادرًا على التأقلم أو الانتفاخ إلى الحد الأقصى. أؤكد - تم تصميم Power BI Desktop لمجموعة واسعة من المستخدمين الذين يقومون بحل مجموعة متنوعة للغاية من المهام . على سبيل المثال ، في حالتي ، كان الأمر يتعلق بتطبيع 5 ملايين إدخال نصي لتحديد لاحقًا لتكرار الكلمات الرئيسية.

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

يتم النظر في حالة وخيار تنفيذ آخر في مقال حول "أداة التعرف" على Dmitry Tumaikin. تم تنفيذه على برنامج Excel الكلاسيكي ، ولكن باستخدام وحدات الماكرو ...

سيناريو شائع آخر لهذا التطبيق من Power BI هو حساب نسبة المؤشرات للفترة الحالية والسابقة. على سبيل المثال ، لدينا بيانات أرباح مجمعة مسبقًا ، ونحتاج إلى مقارنتها حسب الأيام بالربع السابق أو السنة السابقة أو الفترة المماثلة. وأريد / أحتاج إلى إدراج نتيجة المقارنة في العمود التالي في شكل قيم ، وليس صيغًا. يبدو أن أبسط مهمة لـ Excel هي كتابة صيغة مقارنة بسيطة وتمديدها على جميع الخلايا في العمود. ولكن ليس إذا كان لديك عدة ملايين من الصفوف في الجدول. في DAX نفسها ، تعد هذه المهمة أسهل مما هي عليه في Excel ، ولكن أيضًا بمساعدة الحسابات اللاحقة فقط.

يمكن إعطاء العديد من السيناريوهات العملية الأخرى لاستخدام Power BI ، ولكن أعتقد أنك فهمت الجوهر بالفعل. بالطبع ، كل هذه المهام ليست مشكلة للمبرمج الذي يمتلك ، على سبيل المثال ، Python أو R ، ولكن هؤلاء المتخصصين بداهة أصغر من حيث الحجم من خبراء Excel. يتمتع Excel بإمكانيات محدودة فقط ، ولكن ليس كذلك مع Power BI ، الذي يستخدم لغة صيغة DAX ، والتي تشبه إلى حد كبير لغة صيغة Excel ، وهي قادرة على معالجة ملايين وعشرات الملايين من السجلات أثناء التنقل. ثم تحتاج إلى زيادة ذاكرة الوصول العشوائي (على الأقل حتى 100 ، على الأقل حتى 300 جيجابايت).

نحن نساعد طلبات عملية الدعم الفني


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

القاموس المصدر هو ملف نصي بسيط له بنية منتظمة ويبدو كما يلي:

الصورة

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

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

نص مخفي
*) يشير هذا إلى إصدار Power BI Desktop وإصدار Power BI Services للاستخدام الشخصي بسعر مجاني.

لتحليل البيانات ، كنت بحاجة في Power Query ، في جدول 5 ملايين سجل ، أضف عمودًا جديدًا ، تم تحويله حسب موضع واحد. في البداية ، حاولت تطبيق النهج الكلاسيكي باستخدام Power Query ، الذي تم وصفه في بوابة مجتمع Power BI بواسطة Marcel Beug ، مؤلف الدليل المرجعي الأصلي لـ Power Query (المكتوب أيضًا في Power Query). تم اقتراح خوارزميتين مختلفتين في المقالة: إحداهما مستوحاة من أفكار مات إلينجتون ، المعلم الشهير ومدرب Power BI ، والنهج الثاني هو الفكرة الأصلية لمارسيل نفسه ، باستخدام وظيفة إضافية. على الرغم من حقيقة أنه من أجل زيادة الإنتاجية ، قمت بتخزين بيانات المصدر مؤقتًا بشكل كامل ، إلا أن كلا النهجين يتطلبان قدرًا هائلاً من الوقت - فقد مضى بالفعل في اليوم الثامن ، ولم تكتمل العملية. كان حجم الملف المصدر 270 ميجا بايت ، وكان الحجم الحالي للبيانات المعالجة يقترب من 17 تيرابايت. أنا متأكد من أن القليل من مستخدمي Power BI شاهدوا مثل هذه الأرقام في النافذة لتحميل البيانات من مصدر ملف.

الصورة

لماذا يكون الحجم منتفخًا جدًا ، ليس واضحًا ؛ حتى المنتج الديكارتي لجميع السجلات أقل بكثير من 16 تيرابايت. هنا ، من الواضح أن المحسن الداخلي لم يكن على قدم المساواة. وعلى سبيل المثال ، لا يسمح DAX-Studio بتتبع استعلامات Power Query ، فقط DAX. ربما يشارك شخص ما تجربته مع PQ Troubleshooting؟

دون انتظار اكتمال العملية الأولى ، قررت على جهاز آخر محاولة حل المشكلة باستخدام DAX من خلال استعلام مكتوب ذاتيًا. تم تنفيذ الطلب ... في حوالي 180 ثانية ، وزاد استهلاك الذاكرة قليلاً.

الصورة

رمز المصدر لطلب DAX:

KeyWord =
CALCULATE(
TOPN(1;
CALCULATETABLE(
VALUES(ShiftedList[Word])
;ALLEXCEPT(ShiftedList;ShiftedList[Word Nr])
)
)//TOPN
)//CALCULATE



أي أنه لكل صف في العمود [KeyWord] الجديد ، يتم البحث عن القيمة الأولى لعمود [Word] ، والتي تحتوي على جميع أشكال أشكال الكلمات التي لها نفس رقم نموذج الكلمة الأساسي (عمود [Word Nr]). طالما أن تنسيق الملف المصدر يبقى دون تغيير ، يجب أن يتم تنفيذ الطلب دون أخطاء في جميع الإصدارات اللاحقة من القاموس.

تم إنشاء رمز الاستعلام في Power Query ، الذي يشكل جدول المصدر بالتنسيق المطلوب ، "تلقائيًا" وإكماله في أقل من دقيقة:

الصورة

بعد تكوين عمود من الكلمات الأساسية في واجهة PowerPivot في ثلاث دقائق ، لا يستغرق البحث عن أي نماذج كلمات في واجهة Power BI أكثر من 4 ثوانٍ. علاوة على ذلك ، قد يستغرق البحث عن نفس البيانات في برنامج Notepad ++ x64 المفضل لديك 20 ثانية أو أكثر. لكن هذا ليس حجرًا في حديقة NPP - إنه أكثر صعوبة (وأطول) في البحث في مجموعة البيانات بالكامل مقارنة بالبيانات المرمزة بالفعل.

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

الصورة

ونتيجة لذلك ، أصبح حجم ملف PBIX المحفوظ أصغر بنسبة 60٪ (112 ميجابايت) من القاموس النصي الأصلي ، ولكن أكثر من 4 أضعاف حجم أرشيف ZIP مع نفس القاموس.

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

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

خصائص آلة الاختبار:
المعالج: Intel Core i7 4770 @ 3.4 GHz (4 core)
الرام: 16 جيجا
نظام التشغيل: Windows 7 Enterprise SP1 x64

يمكن تنزيل القاموس الجاهز بتنسيق Power BI من هنا .

وهنا يتوفر نسخة معدلة من القاموس على الإنترنت. يمكنك حل الكلمات المتقاطعة في وقت فراغك معها :)

الصورة

... بالمناسبة ، قبل عدة سنوات ، تم حل المهمة في Excel ، على الرغم من أنها ليست 100 ٪. فقط لتحليل النصوص ، لم يتم استخدام مجموعة كاملة من اللغة الروسية ، ولكن قاموس التردد. لتنظيف النص الأساسي ، أي من أفضل 100 قائمة تردد متاحة للعديد من الكيلوبايت مناسبة تمامًا.

يوري كولماكوف ، خبير ، قسم توحيد وتصور البيانات ، النظم البيئية النفاثة ( McCow )

Source: https://habr.com/ru/post/ar429140/


All Articles