الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف تصحح لنا محركات البحث أخطاءنا الإملائية؟

بدأه MohamedIBrahim في 18 يناير 2011 · 4 رد · 2,497 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل قصدت البحث عن ...

أثناء البحث على الانترنت قد نسرع بالكتابة فيسقط حرف من الكلمة ورغم ذلك تستطيع محركات البحث تصحيح الكلمات!!! فكيف ذلك؟!

بسم الله الرحمن الرحيم

-------------------------------------

كيف تصحح لنا محركات البحث أخطاءنا الإملائية؟!!

هل تقصد: ... Did you mean:

هل قصدت البحث عن :... Did you mean to search for:

تعد من أشهر الكلمات التي تظهر عند كتابة كلمات للبحث عنها ولكنها غير صحيحة إملائياً

فمحركات البحث على الانترنت مثل: "جوجل وأنكش و ياهوو " تستطيع تصحيح الأخطاء الاملائية!!!

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

تعتمد الفكرة على الأتي:

أ- اختيار الأقرب بين كلمتين مثلا" إذا كتبت خطأ ً: "الجيمقراطية" فهل سيصححها محرك البحث: "الديمقراطية" أم "البيروقراطية" مثلاً وكلاهما إملائياً صحيحة.

سيختار محرك البحث الكلمة الأقرب للكلمة المكتوبة خطأ (حسب خوارزم قياس المسافة Edit distance) مثلاً وسيأتي ذكره لاحقاً إن شاء الله.

ب- ثم الاختيار حسب الأكثرية (الأغلبية)

مثلاً الكلمة التي يكثر عدد مرات ظهورها على صفحات الانترنت.

أو اختيار الكلمة التي يكتبها أغلب المستخدمين لمحرك البحث.

فمثلاً إذا كتبت خطأ ً: "الأززهر" فهل سيصححها: "الأزهر" أم "الأزهار" وكلاهما صحيحة.

عموماً هناك نوعين من التصحيح الإملائى:

1. إما تصحيح الكلمة وحدها (مفردة) إذا كان بها أخطاء إملائية.

2. أو تصحيحها من خلال معنى الجملة (السياق).

نبدأ بالنوع الأول تصحيح الكلمة وحدها (بمعزل عن المعنى) إذا كان بها أخطاء إملائية:

فمثلاً إذا كتبت " الأسمك" بدلاً من " الأسماك"

هناك عدة طرق لاستنتاج الكلمة الصحيحة إما ب:

1- خوارزم قياس المسافة Edit distance :

2- أو ك- جرام K-gram:

3- أو التصحيح الصوتي.

1- قياس المسافةEdit distance :

ويسمى أيضاً Levenshtein distance.

ويستخدم لقياس الفرق في عدد الحروف بين كلمتين سواء كانت الفروق بزيادة حرف (مثل: العربي و العربية) أو نقص حرف أو حرفين متبادلين (مثل: النخل و النحل)

ويستخدم خوازم البرمجة الديناميكية the dynamic programming algorithm

ويعمل هذا الخوارزم باستخدام مصفوفةMatrix فيها حروف الكلمتين اللتين نريد ايجاد الاختلاف بينهما ( حروف إحدى الكلمات مرتبة أفقياً و الأخرى رأسياً).

والرابط التالي تستطيع من خلاله كتابة الكلمتين ومن ثم ايجاد الفروق بينهما:

http://www.miislita.com/searchito/levenshtein-edit-distance.html

ويظهر الفرق (the distance) في الركن السفلي الأيمن من المصفوفة.

فمثلاً الفرق بين كلمة "أمان" و "أسنان" هو: 2

كما في الصورة.

edit-disatnce-ex.jpg

و الفرق بين كلمة "الجيمقراطية" و "الديمقراطية" هو: 1

أما الفرق بين كلمة "الجيمقراطية" و "البيروقراطية" هو: 3

لذلك سيسألك محرك البحث هل قصدت البحث عن: "الديمقراطية" وليس "البيروقراطية".

لأن محرك البحث يقارن الكلمة المكتوبة خطأ ً بالكلمات التي لديه في قاموسه الخاص ويختار كلمة بحيث يكون الفرق بينها و بين الكلمة المكتوبة خطأ ً أقل قيمة (distance) .

2- ك- جرام K-gram:

في ال (ك- جرام) يقوم محرك البحث بحفظ قاموس فيه الكلمات الموجودة على كل صفحات الانترنت مقسمة على أجزاء.

مثلاً كلمة "سلام" لو قسمت على أجزاء كل جزء عبارة عن حرفين، إذا يكون ال (ك- جرام ) هنا 2 ويسمى (2- جرام) أو (Bi- gram) وطبعاًBi بمعنى ثنائي.

ونحصل على الأجزاء الآتية: سل – لا – ام

يقوم محرك البحث بحفظ قاموس فيه كل جزء من هذه الأجزاء والكلمات التي تظهر فيها هذه الأجزاء.

وفيما يلى مثال مبسط (لا يحوي كل الكلمات المتوقعة):

سل

¬

سُل

¬

سلام

¬

يسلو

¬

سلس

¬

سلاح

لا

¬

سلام

¬

طلاق

¬

كلام

¬

أفلام

¬

سلاح

ام

¬

أم

¬

سلام

¬

كلام

¬

انسجام

¬

أفلام

وعند البحث إذا كتبت خطأ كلمة "سلاغ" بدلاً من "سلام" يقوم محرك البحث بتقسيم الكلمة المكتوبة حسب ال(جرام) المستخدم سنكمل (2- جرام)

"سلاغ": سل - لا – اغ

ثم يبحث عن كلمة توجد فيها كل الأجزاء (سل - لا – اغ) فلن يجد.

فيبحث عن كلمة فيها أكثر الأجزاء (جرام) ، فإذا وجد كلمة واحدة اختارها للتصحيح.

أما إذا وجد أكثر من كلمة مثل: "سلام" و "سلاح" و "أفلام" و "كلام" كلهم ظهروا نفس عدد المرات 2.

فيختار أكثر كلمة يبحث عنها باقي المستخدمين .

أو ممكن أيضأ أن يضع محرك البحث أوزان لكل حرف على لوحة المفاتيح حسب قربه من الحروف الأخرى...

مثلاً إذا رغبت في كتابة كتبت كلمة: "سلام"

ولكن كتبتها خطأ: "دلام" أو "خلام" أو "سلاغ" أو "سلاث" رغم أن الاختلاف حرف واحد ولكن في كل مرة نتيجة التصحيح مختلفة.

ولكم أن تجربوا ...

وعمومأ هناك عدة أشياء تؤخذ في الاعتبار عند تصحيح الكلمات:

- الطريقة المستخدمة للتصحيح سواء كانت: خوارزم قياس المسافة Edit distance أو ك- جرام K-gram

- عدد المستخدمين الذين يكتبون هذه الكلمة (يُكثِرون من البحث عنها) ...

- أوزان الحروف على لوحة المفاتيح حسب قربها من الحروف الأخرى...

3- التصحيح الصوتي: Phonetic correction

ويستخدم غالباً لتصحيح كتابة أسماء الأشخاص وخصوصاً لاختلاف نطق الأسماء من لغة إلى أخرى.

مثلاً الاسم "محمد" يكتب باللغة الانجليزية: “Mohamad” و “Mohamed” و “Muhamad” و “Muhamed” و “Mohammad” و “Mohammed” و “Muhammad” و “Muhammed”ويكتب بطرق أخرى أيضاً.

إذاً نفس الكلمة تكتب بكذا طريقة جميعها صحيحة، لذلك ابتكر علماء الصوتيات طريقة تجعل نفس الوزن لنفس الكلمة نطقاً (سماعاً) مهمها اختلفت الكتابة.

أي تجعل أوزان الأسماء السابقة جميعها تتساوى.

وتسمى هذه الطريقة الخوارزم الصوتي soundex algorithms

ولذلك قالوا لحساب وزن الكلمة صوتياً لا بد من:

1- تثبيت أول حرف من الاسم (الكلمة).

2- ثم وضعوا أوزاناً للحروف كالآتي:

الحروف A, E, I, O, U, H, W, Y تأخذ الوزن صفر.

الحروف B, F, P, V تأخذ الوزن واحد.

الحروف C, G, J, K, Q, S, X, Z تأخذ الوزن اثنان.

الحرفان D, T يأخذا الوزن ثلاثة.

حرف L يأخد الوزن أربعة.

الحرفان M,N يأخذا الوزن خمسة.

حرف R يأخذ الوزن ستة.

3- نكتب أول حرف كما هو، ثم ثلاثة أوزان مما يليه من الحروف (مع تجاهل القيمة صفر إذا كانت قبل نهاية الثلاثة اوزان).

4- إذا وجد حرفين متشابهين متتالين نزيل قيمة أحدهما.

5- نزيد أصفاراً إذا احتجنا في نهاية الوزن.

فمثلاً الحساب الصوتي للاسم “Mohamad” = M530

- أولاً ثبتنا حرف ال M ،ثم قيمة كلأ من ال o, h, a = صفر فنتجاهلها، ثم قيمة ال m = 5 ، ثم قيمة ال a = صفر فنتجاهلها، ثم قيمة ال d= 3 ، ثم نضيف صفراً حتى يصبح لدينا ثلاثة أرقام.

و الحساب الصوتي للاسم “Mohamed” = M530

و الحساب الصوتي للاسم “Muhamad” = M530

و الحساب الصوتي للاسم “Muhamed” = M530

و الحساب الصوتي للاسم “Mohammad” = M530

و الحساب الصوتي للاسم “Mohammed” = M530

و الحساب الصوتي للاسم “Muhammad” = M530

و الحساب الصوتي للاسم “Muhammed” = M530

لذلك جميع الأسماء السابقة تتساوى صوتياً.

ومن الموقع التالي تستطيع حساب الوزن الصوتي لأي اسم تريده باللغة الانجليزية:

http://www.searchforancestors.com/soundex.html

وكما يظهر في الصورة التالية:

soundex-ex.jpg

فماذا يفعل محرك البحث ؟!!

لو بحث شخص عن الاسم “Mohamed” بينما الاسم مسجل على الانترنت بأي شكل من الأشكال السابقة، فيقوم محرك البحث بحساب الوزن الصوتي للكلمة المكتوبة للبحث عنها “Mohamed” ثم استرجاع جيمع الكلمات المخزنة لديه ولها نفس الوزن الصوتي.

وبالتالي تظهر نتائج البحث بكل احتمالات طرق كتابة الاسم.

ممتع حقاً...

أما النوع الثاني فهو تصحيح الكلمة من خلال المعنى أو سياق الجملة حتى وإن كانت إملائياً صحيحة:

فمثلاً إذا بحثت عن: "معرض الزهو والنباتات" بالخطأ بدلاً من : "معرض الزهور والنباتات"

فكلمة "الزهو" بمعنى الافتخار إملائياً صحيحة ولكنها ليست في السياق المناسب أما تصحيحها فهو كلمة "الزهور".

فماذا سيفعل محرك البحث ؟!!

سيجد محرك البحث أن عدد نتائج البجث عن: "معرض الزهو والنباتات" منعدمة أو قليلة... لذلك سيقوم بتقييم أعداد نتائج البحث المختلفة الناتجة عن تغيير كل كلمة من كلمات البحث السابقة بطريقة ال (ك- جرام) المذكورةِ آنِفَا واختيار مزيج من الكلمات التي تعطي أكبر عدد من نتائج البحث (وذلك على الرغم من أن كل كلمة مكتوبة صحيحة إملائياً).

مثلاً يقيم عدد نتائج البحث من كل من: "يعرض الزهو و النباتات" و "يعرض الزهور و النباتات" و "معرض الزهو و النباتات" و "معرض الزهور و النباتات".

فيجد أن أكبر عدد من نتائج البحث تصدر من البحث عن "معرض الزهور و النباتات" فيختارها للتصويب.

لذلك فمحرك البحث يعتمد كثيراً على حجم البيانات المخزنة لديه و تكرارها.

وحقيقة من يقرأ في علم "استرجاع المعلومات" يدرك كم الجهد المبذول في محركات البحث ومدى الابهار في كل تفاصيل عملها بداية من حفظ جميع الكلمات الموجودة على صفحات الانترنت و مروراً بالتصحيح الاملائي و حتى ترتيب نتائج البحث واخفاء الصفحات المشابهه حتى لا يمل المستخدم.

وختماماً أتمنى أن أقرأ تعليقات حضراتكم. و شكراً لكم.

المصادر:

كتاب :

Introduction to Information Retrieval (Cambridge University Press)

By: Christopher D. Manning, Prabhakar Raghavan, Hinrich Schutze.

الموقع الذي به الكتاب:

http://nlp.stanford.edu/IR-book/html/htmledition/contents-1.html

4

GoodBye

#2

مشكور يا اخى على اعادة نشر هذا المقال الرائع :)

هذا المقال منشور من سنه تقريبا على موقع كنول التابع لجوجل تحت رخصه CC من كتابة Maaly

With method and logic one can accomplish anything.

— Agatha Christie, Poirot Investigates, 1924

مدونتى

#3

جزاك الله خيرا معلومة مفيدة جدا :thumb_up:

بارك الله فيك :)

uPM75861.gif
#4

شكرا لمروركم اخوانى

نورتوا الموضوع

وبالفعل منقول

GoodBye

#5

صراحة مقالة مفيدة

شكرا لك

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…