Tammam Koujan

Welcome to my world

Archive for April, 2007

غابة مضيئة

Posted by tammamkoujan on April 26, 2007

غابة مضيئة

منذ بضعة شهور قمت بالتقاط الصورة التالية لغابة النخيل المضيئة
و الموجودة في المنتزه الذي يحيط بكورنيش الشارقة

Sharjah 2007

Posted in حــيــاتــي, صور | 3 Comments »

كاريكاتير

Posted by tammamkoujan on April 25, 2007

Arab Nuclear Tests

Posted in كاريكاتير | 4 Comments »

محمد صبحي يُقلد مُذيعي قناة الجزيرة

Posted by tammamkoujan on April 9, 2007

محمد صبحي يُقلد مُذيعي قناة الجزيرة

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

Posted in اضحك | 3 Comments »

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

Posted by tammamkoujan on April 8, 2007

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

بسم الله الرحمن الرحيم
اظن ان هذه المقالة هي اول مقالة تكتب عن خوارزمية صوتية تدعم اللغة العربية
ستفهم مبدأ عمل الخوارزمية من خلال المقالة و ستتمكن من تحميل مثال كتبته لتطبيق الخوارزمية
على اللغة العربية المثال مكتوب بلغة الـ C Sharp.
في عام 1935 قامت هيئة الإحصاء الامريكية بتصميم خوارزمية SoundX , و هي خوارزمية تقوم بتحويل الكلمات إلى ما يسمى (اكواد SoundX) ثابتة الطول
تقوم الخوارزمية على تقسيم الكلمات المتشابهة صوتيا في مجموعات مبنية على صفات صوتية مميزة.
يوضحها الجدول التالي :
post-63163-1174742488.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
- استبدال المحارف r بالرقم 6

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

بالنسبة للغة العربية قمت بعمليات بحث كثيرة عن نسخة عربية من SoundX لكن لم اجد فبدأت ببعض التجارب الشخصية بناء على فكرة النسخة الانجليزية لكن لم تكن النتائج مرضية إلى ان وجدت ورقة بحث لفريق من الباحثين من معهد ايلينويس للتكنولوجيا Illinois Institute of Technology قام بها خمسة باحثين من المعهد في العام 2006 للحصول على نسخة عربية من SoundX و كانت نتائج البحث رائعة لكن التطوير عليها ما يزال ممكنا للحصول على نتائج أفضل .

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

الان إلى الشيفرة :
في الأسفل مثال كامل عن استخدام SoundX من اجل اللغة العربية و الانكليزية على حد سواء , و المثال مكتوب بالـ C#
p5ost-63163-1174742777.jpg
و فيما يلي روابط تتحدث عن برمجة SoundX للغة الانكليزية بعدة لغات برمجة :
Vb.NET و C#
Soundex Implementation in C# and VB.NET
Delphi :
1971. Searching Strings by the way they sound
ليست افضل الخوارزميات الصوتية و هي مجرد بداية و النسخة العربية الموجودة في موضوعنا ما تزال بحاجة
للتطوير كما انه هناك خوارزميات صوتية اخرى بحاجة للدراسة اذ انه في العادة يتم دمج نتائج عدة خوارزميات صوتية للحصول على افضل النتائج (انا اعمل على ذلك لكن بشكل متقطع و انا لست ملزما ان اكمل او اتابع)

هناك العديد من الخوارزميات الصوتية مثل :
Soundex
Levenshtein
Metaphone
Phonix
n-gram
الخوارزميات الصوتية تقسم إلى نوعين :
1 – خوارزميات مرتبطة باللغة و ميزاتها مثل SoundX حيث لا يمكن ان نطبق النسخة الانكليزية على اللغة العربية
2 – خوارزميات مستقلة عن اللغة اي يمكن تطبيقها على اية لغة مباشرة مثل Levenshtein
من التطبيقات الشائعة للخوارزميات الصوتية محررات النصوص مثل MS Word فأنت عندما تكتب كلمة انكليزية بشكل خاطئ
تجد ان المحرر يقترح عليك عدة تصحيحات لكلمات لها نفس اللفظ الصوتي للكلمة التي ادخلتها

ملاحظة مهمة : المثال المرفق يتعامل مع قاعدة بيانات MS SQL Server
بالنسبة لقاعدة البيانات فقط قموا بإنشاء قاعدة بيانات SQL Server جديدة و من ثم قوموا باضافة جدول
مؤلف من ثلاث حقول هي
id من نوع int
name من توع VarrChar
value من نوع VarChar

لتحميل الشيفرة : انقر هنا

تمام كوجان في 08/04/2007
ُEmail : TammamKoujan@Gmail.com
يجوز نشر هذه المقالة أو أجزاء منها بشرط المحافظة على اسم الكاتب و ذكر المصدر

Posted in برمجة | 2 Comments »

وظيفة القلم

Posted by tammamkoujan on April 5, 2007

وظيفة القلم

عندي قلم

ممتلئٌ يبحث عن دفتر

و الدفتر يبحث عن شعر

و الشعر بأعماقي مضمر

و ضميري يبحث عن أمن

و الأمن مقيم في المخفر

و المخفر يبحث عن قلم

- عندي قلم

- وقع يا كلب على المحضر

قصيدة : وظيفة القلم
للشاعر : أحمد مطر

Posted in اخترت لكم | Leave a Comment »