سؤال عن الخوارزميات

السلام عليكم ورحمة الله وبركاته ،،

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

تقبلوا تحياتي واسف على الاطالة


حقيقة لم اجرب مسبقاً ولكن تخيلت الفكرة بتبسيط

ان يكون لكل حرف Queue او array بالحروف المحتمل أن يقع بها الخطأ مثلاً:

ي -> ى -> ئ

ا -> أ -> إ -> ء -> ئ

و -> ؤ -> ء -> أ

ئ -> ؤ

الى آخره

  • قد يضاف الحرف المكافئ بلوحة المفاتيح او الرمز اذا كان الكيبورد محولاً إلى اللغة الانجليزية مثلاً:

ي -> ى -> ئ -> d

وقد لايرى الحرف الانجليزي الا اذا كانت الكلمة كامله انجليزية لذا يكون في اخر الصف.

لكل حرف Queue أو array خاص به يحمل القيم التي يقع فيها الخطأ دائماً (والخطأ يكون في احتمالي المدخل أم النتيجة المخزنة).

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

فلنفترض ان المدخل كلمة مَسْئُول

١- تجرد من الحركات والتشكيل => مسئول

٢- تقسم الكلمة كل حرف على حدا في مصفوفة => [م،س،ئ،و،ل]

٣- تعرف مصفوفة أو queue خالية جديدة من نوع string (نص) للاحتمالات. (لنسميها مصفوفة الاحتمالات)

٤- يدخل (القيمة المدخلة) الى مصفوفة الاحتمالات => [مسئول]

٥- يقارن حرف الميم بما يشبهها من queue (م) => لايوجد غيرها

٦- يقارن س => لايوجد غيرها

٧- يقارن ئ => يجد [ؤ، أ]

٨- يضيف للمصفوفة احتمالي [مسؤول، مسأول] => [مسئول، مسؤول، مسأول]

٩- يقارن و => يجد [ؤ]

١٠- يضيف للمصفوفة احتمالية [مسئؤل] => [مسئول، مسؤول، مسأول، مسئؤل]

  • قد تضيف تنقيح للاحتماليات قبل اضافتها مثلا (منع التقاء همزتين) <- لا ادري إن كانت هذه القاعدة في اللغة أم لا.

١١- يقارن ل => لايجد احتمالية اخرى.

١٢- يبحث عن نتائج اول قيمة في مصفوفة الاحتمالات في المحتوى (مع تجريد المحتوى من الحركات). وهي قيمة مسئول ويخزن نتائج البحث وعددها لنفترض نتائج البحث هنا ٢٠ نتيجة.

١٣- يبحث عن نتائج البحث لثاني قيمة في مصفوفة الاحتمالات ونفترض عدد النتائج ٤٠ نتيجة.

١٤- ثالث قيمة في المصفوفة ولنفترض ١٠ نتائج.

١٥- رابع قيمة في المصفوفة ولنفترض ٥ نتائج.

١٦- يعرض نتائج الاحتمال الأول، الثاني، الثالث ثم الرابع وبما أن (الاحتمال الثاني هو ذو الأكثر نتائج) تضهر جملة هل تقصد مسؤول؟

هذا مجرد تفكير (سهل تطبيقة) ولكن لم احسب complexity لهذه الخوارزمية وأتوقع بحسبة سريعة O(n lg n). ولم اجربها سلبياتها كما أرى، قد تكون بيطيئة اذا كان المحتوى كثير ومعالج الخادم ليس ذو ميزات عالية. وكذلك لم افكر لو كان المدخل (أكثر من كلمة) قد تزيد مصفوفة الاحتمالات. وأعتقد ان هذه الخوارزمية لو تم تطبيقها فعلياً سوف يجد المطور حلول تجعلها أسرع لأن الافكار حولها كثيرة.