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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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());
        }
Exemplo n.º 7
0
        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();
                }
            }));
        }