UserSimulation.Classification.ProcessTypos C# (CSharp) Метод

ProcessTypos() публичный Метод

public ProcessTypos ( string original, string entered ) : int>.Tuple
original string
entered string
Результат int>.Tuple
        public Tuple<int, int> ProcessTypos(string original, string entered)
        {
            // get LCS
            var alignments = LongestCommonSubsequence.LeftAlignedLCS(original, entered);
            // find all character additions
            var additions = LongestCommonSubsequence.GetAddedCharIndices(entered, alignments);
            // find all character omissions
            var omissions = LongestCommonSubsequence.GetMissingCharIndices(original, alignments);
            // find all transpositions
            var outputs = LongestCommonSubsequence.FixTranspositions(alignments, additions, omissions, original, entered);
            // new string
            string entered2 = outputs.Item1;
            // new alignments
            var alignments2 = outputs.Item2;
            // new additions
            var additions2 = outputs.Item3;
            // new omissions
            var omissions2 = outputs.Item4;
            // deltas
            var deltas = outputs.Item5;
            // get typos
            var typos = LongestCommonSubsequence.GetTypos(alignments2, original, entered2);

            int count_deltas = 0;
            int count_typos = 0;

            // train the model for all non-transpositions
            foreach (var alignment in alignments)
            {
                AddTranspositionError(0);
            }

            // train the model for all actual transpositions
            foreach (var delta in deltas)
            {
                AddTranspositionError(delta);
                count_deltas += 1;
            }

            // train the model for each "typo", including non-typos
            foreach (var typo in typos)
            {
                OptChar c = typo.Item1;
                string s = typo.Item2;
                AddTypoError(c, s);

                // non-empty string
                if (OptChar.get_IsSome(c))
                {
                    count_typos += c.Value.ToString().Equals(s) ? 0 : 1;
                }
                // empty string
                else
                {
                    count_typos += s.Equals("") ? 0 : 1;
                }
            }
            return new Tuple<int,int>(count_deltas, count_typos);
        }

Usage Example

Пример #1
0
 public static Classification Classify(MTurkParser.Data data, string serfile)
 {
     var total_inputs = data.NumInputs;
     var c = new Classification();
     var stringpairs = data.StringPairs.ToArray();
     for (int i = 0; i < stringpairs.Length; i++)
     {
         var original = stringpairs[i].Item1;
         var entered = stringpairs[i].Item2;
         Console.Write("\r{0:P} strings classified", System.Convert.ToDouble(i) / System.Convert.ToDouble(total_inputs));
         c.ProcessTypos(original, entered);
     }
     Console.Write("\n");
     c.Serialize(serfile);
     return c;
 }
All Usage Examples Of UserSimulation.Classification::ProcessTypos