روش فاصله‌ی رشته‌ی کاشفی

وابستگی‌ها

SCICT.NLP.Utility.StringDistance.dll

مثال

از متد محاسبه‌ی فاصله‌ی رشته‌ایِ کاشفی می‌توان برای محاسبه‌ی فاصله‌ی میان رشته‌ها و کلمات خصوصاً کلمات فارسی استفاده کرد. در صورت نیاز می‌توان زبان مقصد، وزن خطاهای چهارگانه‌ی املایی با توجه به خصوصیات زبان، و همچنین چیدمان صفحه‌کلید مورد نظر را نیز تنظیم نمود. این متد محل قرارگیری حروف در چیدمان صفحه‌کلید، هم‌آواییِ حروف، هم‌شکل بودن حروف، اثر کلید شیفت، و اثر تنوین و حرکت‌ها را نیز در فاصله‌ی رشته‌ای در نظر می‌گیرد. خروجی این متد یک عدد نرمال شده در بازه‌ی صفر تا یک است که یک نشان دهنده‌ی عدم تشابه و صفر نشان‌دهنده‌ی یکسان بودن دو رشته است. برای کسب اطلاعات بیشتر در مورد جزئیات این متد می‌توانید به مراجع زیر مراجعه کنید:

Omid Kashefi, Mitra Nasri, Kamiar Kanani, Sina Iravanian, Mehrdad Senobari, Towards Automatic Persian Spell Checker, SCICT: Tehran, Iran, 2010, ISBN: 978-964-884-634-8

Omid Kashefi, Mohsen Sharifi, Behrouz Minaei-Bidgoli, “A novel string distance metric for ranking Persian spelling error corrections”, Computational Linguistics.

Kashefi String Distance Measure
  1
  2
  3
  4
  5

  6
  7
  8
  9
 10
 11

 12
 13
 14
 15
 16
 17

 18
 19
 20
 21
 22
 23

 24
 25
 26
 27
 28
 29

 30
 31
 32
KeyboardConfig customPersianKeyboardLayout = new KeyboardConfig(KeyboardLanguages.Persian);

customPersianKeyboardLayout.FirstRowCharacters = "ضصثقفغعهخحجچپ";
customPersianKeyboardLayout.SecondRowCharacters = "شسیبلاتنمکگ";
customPersianKeyboardLayout.FirstRowCharacters = "ظطزرذدئو";
customPersianKeyboardLayout.OtherCharacters = new List<KeyboardKey>();


customPersianKeyboardLayout.OtherCharacters.Add(new KeyboardKey(4f, 0f, 'ژ', true));   // <c> key ('Zh' in Farsi) - left bottom
customPersianKeyboardLayout.OtherCharacters.Add(new KeyboardKey(6f, 2f, 'آ', true));    // <h> key ('AA' in Farsi) - right top

customPersianKeyboardLayout.OtherCharacters.Add(new KeyboardKey(8f, 0f, 'ء', true));   // <\> key ('hamze' in Farsi) - middle bottom
customPersianKeyboardLayout.OtherCharacters.Add(new KeyboardKey(7f, 0f, 'أ', true));  // <\> key ('hamze' in Farsi) - middle bottom

customPersianKeyboardLayout.OtherCharacters.Add(new KeyboardKey(6f, 0f, 'إ', true));   // <\> key ('hamze' in Farsi) - middle bottom
customPersianKeyboardLayout.OtherCharacters.Add(new KeyboardKey(6f, 0f, 'ؤ', true));   // <\> key ('hamze' in Farsi) - middle bottom


//simply: KeyboardConfig customPersianKeyboardLayout = new KeyboardConfig();

KeyboardKeyDistance customPersianKeyDistance = new KeyboardKeyDistance();
customPersianKeyDistance.Reconfig(customPersianKeyboardLayout);

//simply: KeyboardKeyDistance customPersianKeyDistance = new KeyboardKeyDistance();


KashefiConfig kashefiConfig = new KashefiConfig(customPersianKeyDistance, .569, .679, .367, .725);

//simply: KashefiConfig kashefiConfig = new KashefiConfig();

StringDistanceLayout stringDistanceLayout = new StringDistanceLayout();


double kashefiDist;
kashefiDist = stringDistanceLayout.GetStringDistance("غصتنتنیه", "قسطنطنیه", StringDistanceAlgorithm.Kashefi, kashefiConfig);
kashefiDist = stringDistanceLayout.GetStringDistance("قطعا", "قطعاً", StringDistanceAlgorithm.Kashefi, kashefiConfig);

kashefiDist = stringDistanceLayout.GetStringDistance("جداوند", "خداوند", StringDistanceAlgorithm.Kashefi, kashefiConfig);
kashefiDist = stringDistanceLayout.GetStringDistance("مقیاسپذیر", "مقیاس‌پذیر", StringDistanceAlgorithm.Kashefi, kashefiConfig);
kashefiDist = stringDistanceLayout.GetStringDistance("پزواک", "پژواک", StringDistanceAlgorithm.Kashefi, kashefiConfig);