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

الخوارزميات الصوتية : خوارزمية SoundX

مغلق
بدأه تمام كوجان في 24 مارس 2007 · 5 رد · 3,963 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

خوارزمية المطابقة الصوتية SoundX

في عام 1935 قامت هيئة الإحصاء الامريكية بتصميم خوارزمية SoundX , و هي خوارزمية تقوم بتحويل الكلمات إلى ما يسمى (اكواد SoundX) ثابتة الطول

تقوم الخوارزمية على تقسيم الكلمات المتشابهة صوتيا في مجموعات مبنية على صفات صوتية مميزة.

يوضحها الجدول التالي :

post-63163-1174742488_thumb.jpg

لتشفر اسما ما فإن الخوارزمية تحفظ الحرف الأول من الاسم ثم تستبتدل الأحرف الصامتة التي تليه بالقيم الرقمية المعروضة في الجدول السابق , اما الاحرف الصوتية و كذلك الأحرف ( 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 و كانت نتائج البحث رائعة لكن التطوير عليها ما يزال ممكنا للحصول على نتائج أفضل .

post-63163-1174742606_thumb.jpg

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

الان إلى الشيفرة :

في المرفقات مثال كامل عن استخدام SoundX من اجل اللغة العربية و الانكليزية على حد سواء , و المثال مكتوب بالـ C#

post-63163-1174742777_thumb.jpg

و فيما يلي روابط تتحدث عن برمجة 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 ان شاء الله غدا سأرفق القاعدة

SoundEx_src.zip

تم تعديل هذه المشاركة بواسطة تمام كوجان في 24 مارس 2007 في 16:47

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#2

السلام عليكم ,,

شرح جميل للخوارزمية ,, كنت متابعاً في قسم الدلفي على ما أعتقد حول موضوع ذكرت فيه أنك ستشرح الخورازمية ,,

شكراُ لك و سأحاول أن أكتبها بالـ ++C :D ,,

الخوارزمية جيدة و أتمنى عند تعاملي مع غير ++C أن أجرب الخوارزمية العربية ,,

تحياتي ,,

#3

أهلاً من جديد ,,

هناك خوارزمية رأيت لها مثالاً منذ فترة تسمى Levenshtein Distance

الخوارزمية الصوتية جيدة و أعتقد أنها أقرب للعقل البشري منها إلى معالج الحاسب ,,

هل تعتقد أن دمج نتائج الخوازميتين سيعطي نتائج جيدة ؟ ,,, *-)

تحياتي

#4

جميل متابعتك هذا الامر أخي خالد

مرت علي خوارزمية Levenshtein اثناء بحثي في هذا الامر و قد قرأت عنها بشكل بسيط

ذكر خوارزمية يدفعنا إلى التنبيه إلى وجود نوعين من الخوارزميات الصوتية :

1 - خوارزميات مرتبطة باللغة و ميزاتها مثل SoundX حيث لا يمكن ان نطبق النسخة الانكليزية على اللغة العربية

2 - خوارزميات مستقلة عن اللغة اي يمكن تطبيقها على اية لغة مباشرة مثل Levenshtein

اقتباس
هل تعتقد أن دمج نتائج الخوازميتين سيعطي نتائج جيدة ؟ ,,,

حقيقة لا اعلم ما هي النتيجة

هناك العديد من الخوارزميات الصوتية مثل :

Soundex

Levenshtein

Metaphone

Phonix

n-gram

انصحك بتجربة دمج نتائج Soundex مع n-gram و مراقبة النتيجة الحاصلة

على فكرة هناك نسخة محسنة لـSoundex العربية لكن سأضعها عندما يحين الوقت المناسب

بالنسبة لقاعدة البيانات لم اجدها لكن لامشكلة فقط قموا بإنشاء قاعدة بيانات SQL Server جديدة و من ثم قوموا باضافة جدول

مؤلف من ثلاث حقول هي

id من نوع int

name من توع VarrChar

value من نوع VarChar

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#5

على فكرة للتنبيه فقط

حسب متابعاتي للموضوع حينها قرأت ان SQL Server تحوي دعما مضمنا لخوارزمية SoundX (طبعا الانكليزية

لأننا هنا ننفرد بالنسخة العربية :P )

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#6

وجدت مكونا تجاريا جاهزا لعمليات التصحيح التلقائي

post-63163-1175406163_thumb.jpg

اسمه Addict و هو يعمل على ديلفي سعره 200 دولار

لكنه لا يدعم العربية

الموقع : addictive-software

لم اجد إلى الان اي مكون او اداة تدعم اللغة العربية سواء كانت تجارية او مجانية ( ربما سأفكر بصنع واحدة تجارية ما دام لا يوجد

منافسة B) )

لذا عيشوا في النعيم وفرنا عليكم 200 دولار مع دعم للعربية :P

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

هذا الموضوع مغلق.

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