اصلاح نشانه‌گذاری

وابستگی‌ها

SCICT.NLP.TextProofing.Punctuation.dll

مثال

با استفاده از کلاس PunctuationCheckerEngine می‌توان نحوه‌ی نشانه‌گذاری‌ها را در یک متن (مثلاً یک پاراگراف) بررسی کرد. شی‌ء ساخته‌شده از این کلاس نیازمند یک فایل است که الگوهای کاربرد نشانه‌ها در متن را تبیین کند. تابع FindMistake در هربار فراخوانی با شروع از ابتدای رشته خطاهای نشانه‌گذاری را پیدا می‌کند. این خطا یا باید با فراخوانی به SkipMistake صرف‌نظر شود، یا اینکه با تابع CorrectMistake یکی از پیشنهاد‌های اصلاح انتخاب شود. کد زیر این کارکردها را به صورت ساده نشان می‌دهد:

Punctuation Correction
  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
 33
 34
 35
 36
PunctuationCheckerEngine puncChecker = new PunctuationCheckerEngine("patterns.txt");
puncChecker.InitInputString("من،هر روز .به مدرسه می‌روم");

while (true)
{
    // Finding NEXT mistake
    puncChecker.FindMistake();
    if (!puncChecker.IsErrorFound()) break;
    string description = puncChecker.GetMistakeDescription();
    int index = puncChecker.GetMistakeIndex();
    int length = puncChecker.GetMistakeLength();
    string suggestion = puncChecker.GetMistakeSuggestion();
    string[] substitutions = puncChecker.GetMultiSubstitutionString();
    string substitution = puncChecker.GetSubstitutionString();

    // Either Skip or Correct
    if (false)
    {
        puncChecker.SkipMistake();
    }
    else
    {
        // When (substitutions.Count > 1) you may pass the index of desierd alternative instead of 0.
        puncChecker.CorrectMistake(0);
    }
}

string corrected = puncChecker.GetCorrectedString();
// corrected: "من، هر روز. به مدرسه می‌روم"

/*
 * description[iteration = 0]: "بعد از ويرگول فاصله لازم است"
 * description[iteration = 1]: "قبل از نقطه فاصله نمي‌آيد"
 * description[iteration = 2]: "بعد از نقطه فاصله لازم است"
 * -- No More Errors!
 */