public async Task TranslateIntoEnTestMethod() { string message = "руддщ"; string expected = "hello"; var words = await Speller.CheckText(message); string result = words[0].S[0]; Assert.AreEqual(expected, result); }
public async Task TranslateIntoRuTestMethod() { string message = "ghbdtn"; string expected = "привет"; var words = await Speller.CheckText(message); string result = words[0].S[0]; Assert.AreEqual(expected, result); }
public async Task Execute(Message message, TelegramBotClient botClient) { var chatId = message.Chat.Id; var text = message.Text; var words = await Speller.CheckText(text); foreach (var word in words) { text = text.Replace(word.Word, word.S[0]); } await botClient.SendTextMessageAsync(chatId, text.ToString(), parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); }
public void SpellerCheckText() { var spellResult = Speller.CheckText("синхрафазатрон в дубне"); var error = spellResult.Errors[0]; Assert.AreEqual(1, error.Code); Assert.AreEqual(0, error.Position); Assert.AreEqual(0, error.Row); Assert.AreEqual(0, error.Column); Assert.AreEqual(14, error.Length); Assert.AreEqual("синхрафазатрон", error.Word); Assert.AreEqual("синхрофазотрон", error.Steer); error = spellResult.Errors[1]; Assert.AreEqual(3, error.Code); Assert.AreEqual(17, error.Position); Assert.AreEqual(0, error.Row); Assert.AreEqual(17, error.Column); Assert.AreEqual(5, error.Length); Assert.AreEqual("дубне", error.Word); Assert.AreEqual("Дубне", error.Steer); }
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result) { var activity = await result as Activity; var text = activity.Text ?? String.Empty; var yandexSpeller = new Speller(); var yandexSpellerResult = yandexSpeller.CheckText(text); var resutText = new StringBuilder(text); if (yandexSpellerResult.Errors.Any()) { var shift = 0; foreach (var error in yandexSpellerResult.Errors) { resutText.Insert(error.Position + shift, "**"); resutText.Insert(error.Position + error.Length + shift + 2, "**"); resutText.Append($"\n\r**{ error.Word}**:{ error.Steer}"); shift += 4; } } //var yandexSpeller = new Speller(); // var yandexSpellerResult = yandexSpeller.CheckText(text); // var resulText = new StringBuilder(); // calculate something for us to return // int length = (activity.Text ?? string.Empty).Length; // return our reply to the user // await context.PostAsync($"You sent {activity.Text} which was {length} characters");await context.PostAsync($"11111111111111 {text} which was {text} characters"); await context.PostAsync(resutText.ToString()); context.Wait(MessageReceivedAsync); }
public static string Spell(string text) { if (String.IsNullOrEmpty(text)) { return("String is not correct"); } StringBuilder result = new StringBuilder(text); var yandexSpeller = new Speller(); var yandexResult = yandexSpeller.CheckText(text); if (yandexResult.Errors.Any()) { var shift = 0; foreach (var error in yandexResult.Errors) { result.Insert(error.Position + shift, "**"); result.Insert(error.Position + error.Length + shift + 2, "**"); result.Append($"\n\r**{error.Word}**: {error.Steer}"); shift += 4; } } return(result.ToString()); }
private void UpdateSpellerResult() { this.Invoke(new Action(() => { try { SpellerOptions options = 0; if (cbIgnoreUppercase.Checked) { options |= SpellerOptions.IgnoreUppercase; } if (cbIgnoreDigits.Checked) { options |= SpellerOptions.IgnoreDigits; } if (cbIgnoreUrls.Checked) { options |= SpellerOptions.IgnoreUrls; } if (cbFindRepeatWords.Checked) { options |= SpellerOptions.FindRepeatWords; } if (cbIgnoreLatin.Checked) { options |= SpellerOptions.IgnoreLatin; } if (cbNoSuggest.Checked) { options |= SpellerOptions.NoSuggest; } if (cbFlagLatin.Checked) { options |= SpellerOptions.FlagLatin; } if (cbByWords.Checked) { options |= SpellerOptions.ByWords; } if (cbIgnoreCapitalization.Checked) { options |= SpellerOptions.IgnoreCapitalization; } List <Lang> langs = new List <Lang>(); if (cbSpellerRu.Checked) { langs.Add(Lang.Ru); } if (cbSpellerEn.Checked) { langs.Add(Lang.En); } if (cbSpellerUk.Checked) { langs.Add(Lang.Uk); } var response = Speller.CheckText(tbSpellerInput.Text, langs.ToArray(), options); var errors = response.Errors; string input = tbSpellerInput.Text; if (errors.Count != 0) { StringBuilder output = new StringBuilder(input.Length); int currentErrorNumber = 0; int i = 0; int lastInd = 0; Error currentError = errors[0]; var highlightedCharPoses = new Dictionary <int, CharMistakeType>(); while (i < input.Length) { if (currentError.Column == i) { output.Append(input.Substring(lastInd, i - lastInd)); if (currentError.Steer != null) { output.Append(currentError.Steer); var poses = Speller.OptimalStringAlignmentDistance(currentError.Word, currentError.Steer); foreach (var pos in poses) { highlightedCharPoses.Add( output.Length - currentError.Steer.Length + pos.Position, pos.Type); } } else if (cbIncludeErrorWords.Checked) { output.Append(currentError.Word); } i += currentError.Length; currentErrorNumber++; if (currentErrorNumber < errors.Count) { currentError = errors[currentErrorNumber]; } lastInd = i; } else { i++; } } output.Append(input.Substring(lastInd, i - lastInd)); rtbSpellerOutput.Text = output.ToString(); foreach (var pos in highlightedCharPoses) { if (pos.Value == CharMistakeType.Substitution) { rtbSpellerOutput.Select(pos.Key, 1); rtbSpellerOutput.SelectionColor = Color.Red; } else if (pos.Value == CharMistakeType.Deletion) { if (pos.Key == 0) { rtbSpellerOutput.Select(0, 1); } else { rtbSpellerOutput.Select(pos.Key - 1, 2); } rtbSpellerOutput.SelectionBackColor = Color.Gold; } else if (pos.Value == CharMistakeType.Insertion) { rtbSpellerOutput.Select(pos.Key, 1); rtbSpellerOutput.SelectionColor = Color.Blue; } else if (pos.Value == CharMistakeType.Transposition) { rtbSpellerOutput.Select(pos.Key, 2); rtbSpellerOutput.SelectionBackColor = Color.Violet; } } } else { rtbSpellerOutput.Text = input; } } catch (Exception ex) { rtbSpellerOutput.Text = ex.ToString(); } })); }