پیش‌پردازش املایی

وابستگی‌ها

SCICT.NLP.TextProofing.SpellChecker.dll

مثال

پیش‌پردازش املایی شامل دسته‌ای از اشتباهات رایج املایی است می‌توان آن ها را در یک گام و بدون تعامل با کاربر اصلاح کرد. این اشکالات شامل فاصله‌گذاری ناصحیح در «می» (مانند «میروم» و «می روم» که باید به «می‌روم» اصلاح شوند)، فاصله‌گذاری ناصحیح در نشانه‌ی جمع ها (مانند «کتابها» و «کتاب ها» که باید به «کتاب‌ها» اصلاح شوند)، اتصال «بـ» (مانند «بعنوان» که صحیح آن «به عنوان» است) و اصلاح «یای بدل از کسره» (مانند «خانهٔ» که می‌تواند به «خانه‌ی» اصلاح شود) در ترکیب‌های اضافی است. این قوانین در برشمارش OnePassConvertingRules آمده‌اند. می‌توان با استفاده از تابع SetOnePassConvertingRules از کلاس PersianSpellChecker مشخص کرد که چه زیرمجموعه‌ای از این قوانین برای پیش‌پردازش املایی مورد استفاده قرار گیرد.

پس از انتخاب مجموعه‌ی قوانین، تابع OnePassCorrection می‌تواند برای اعمال این دسته از قوانین مورد استفاده قرار گیرد. کد زیر نمونه‌ی ساده‌ای از این کاربرد است:

Pre-spell-checking
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
SpellCheckerConfig config = new SpellCheckerConfig { DicPath = @"dic.dat", EditDistance = 2, StemPath = @"stem.dat", SuggestionCount = 7 };
PersianSpellChecker spellChecker = new PersianSpellChecker(config);

spellChecker.SetOnePassConvertingRules(OnePassConvertingRules.ConvertAll);

string[] sug0;
SuggestionType sugType0;
SpaceCorrectionState scs0;
bool val0 = spellChecker.OnePassCorrection("بعنوان", "من", "یک", 2, out sug0, out sugType0, out scs0);
// sug0: {"به عنوان"}

string[] sug1;
SuggestionType sugType1;
SpaceCorrectionState scs1;
bool val2 = spellChecker.OnePassCorrection("کتاب", "این", "ها", 2, out sug1, out sugType1, out scs1);
// sug1: {"کتاب‌ها"}