خوارزمية المطابقة الصوتية SoundX
في عام 1935 قامت هيئة الإحصاء الامريكية بتصميم خوارزمية SoundX , و هي خوارزمية تقوم بتحويل الكلمات إلى ما يسمى (اكواد SoundX) ثابتة الطول
تقوم الخوارزمية على تقسيم الكلمات المتشابهة صوتيا في مجموعات مبنية على صفات صوتية مميزة.
يوضحها الجدول التالي :
لتشفر اسما ما فإن الخوارزمية تحفظ الحرف الأول من الاسم ثم تستبتدل الأحرف الصامتة التي تليه بالقيم الرقمية المعروضة في الجدول السابق , اما الاحرف الصوتية و كذلك الأحرف ( h, w , y ) يتم تجاهلها لأن المعلومات الصوتية التي تقدمها هذه الحروف تسبب غاليا لبسا او غموضا عندما ترفق مع حروف أخرى.
اذا ما جاء حرف صامت متكررا وراء نفسه فإنه يمثل لمرة واحدة في الكود .
هذه هي خوارزمية SoundX بأبسط صيغها حيث تم تطوير اصدارات من الخوارزمية تتمتع بدقة تمييز صوتية أعلى لكنها اكثر تعقيدا ففي احدى الاصدارات يتم تبديل المحرف x بالمحرف ecs قبل عملية إنشاء كود SoundX مثلا او تم تقسيم الاحرف إلى مجموعات اكثر تفصيلا.
اذا سيتقسم عملنا إلى ما يلي :
- إبقاء الحرف الاول من الاسم .
- استبدال المحارف (a, e, i, o, u, h, w,y) بالرقم 0
- استبدال المحارف (b, f, p, v) بالرقم 1
- استبدال المحارف (c, g, j, k, q, s, x, z) بالرقم 2
- استبدال المحارف (d, t) بالرقم 3
- استبدال المحارف (l) بالرقم 4
- استبدال المحارف (m, n) بالرقم 5
- استبدال المحارف ® بالرقم 6
بعدها نخزن الكود الناتج عن كلمة و عندما يدخل المستخدم كلمة نقوم بالبحث عن الكلمات التي لها نفس الكود الصوتي .
بالنسبة للغة العربية قمت بعمليات بحث كثيرة عن نسخة عربية من SoundX لكن لم اجد فبدأت ببعض التجارب الشخصية بناء على فكرة النسخة الانجليزية لكن لم تكن النتائج مرضية إلى ان وجدت ورقة بحث لفريق من الباحثين من معهد ايلينويس للتكنولوجيا Illinois Institute of Technology قام بها خمسة باحثين من المعهد في العام 2006 للحصول على نسخة عربية من SoundX و كانت نتائج البحث رائعة لكن التطوير عليها ما يزال ممكنا للحصول على نتائج أفضل .
و ما دمنا حصرنا الحروف العربية في مجموعات مناسبة اذا اصبح بامكاننا تنفيذ العملية كما نفذناها مع النسخة الانجليزية.
الان إلى الشيفرة :
في المرفقات مثال كامل عن استخدام SoundX من اجل اللغة العربية و الانكليزية على حد سواء , و المثال مكتوب بالـ C#
و فيما يلي روابط تتحدث عن برمجة SoundX للغة الانكليزية بعدة لغات برمجة :
Vb.NET و C#
Soundex Implementation in C# and VB.NET
Delphi :
1971. Searching Strings by the way they sound
SoundX ليست افضل الخوارزميات الصوتية و هي مجرد بداية و النسخة العربية الموجودة في موضوعنا ما تزال بحاجة
للتطوير كما انه هناك خوارزميات صوتية اخرى بحاجة للدراسة اذ انه في العادة يتم دمج نتائج عدة خوارزميات صوتية للحصول على افضل النتائج (انا اعمل على ذلك لكن بشكل متقطع و انا لست ملزما ان اكمل او اتابع)
من التطبيقات الشائعة للخوارزميات الصوتية محررات النصوص مثل MS Word فأنت عندما تكتب كلمة انكليزية بشكل خاطئ
تجد ان المحرر يقترح عليك عدة تصحيحات لكلمات لها نفس اللفظ الصوتي للكلمة التي ادخلتها
ملاحظة مهمة : المثال المرفق يتعامل مع قاعدة بيانات MS SQL Server ان شاء الله غدا سأرفق القاعدة

