示例#1
0
 public virtual EncodingWord GetEndBigrammsRecursion(IEnumerable <WordNotPersistent> vocalabryEndBigramm, ref string tmpSource)
 {
     try
     {
         foreach (var endBigram in vocalabryEndBigramm.OrderByDescending(f => f.name.Length))
         {
             if (endBigram.name.Length == tmpSource.Length)
             {
                 int indexValidate = 0;
                 for (int i = 0; i <= endBigram.name.Length - 1; i++)
                 {
                     if (tmpSource.ToUpper()[i] == endBigram.name.ToUpper()[i])
                     {
                         indexValidate++;
                     }
                 }
                 if (indexValidate == endBigram.name.Length)
                 {
                     tmpSource = string.Empty;
                     EncodingWord encodingWord = new EncodingWord();
                     encodingWord.Vector  = endBigram.Vector;
                     encodingWord.Bigramm = endBigram.name;
                     return(encodingWord);
                 }
             }
             if (endBigram.name.Length < tmpSource.Length)
             {
                 int indexValidate = 0;
                 for (int i = 0; i <= endBigram.name.Length - 1; i++)
                 {
                     if (tmpSource.ToUpper()[i] == endBigram.name.ToUpper()[i])
                     {
                         indexValidate++;
                     }
                 }
                 if (indexValidate == endBigram.name.Length)
                 {
                     tmpSource = tmpSource.Substring(indexValidate);
                     EncodingWord encodingWord = new EncodingWord();
                     encodingWord.Vector  = endBigram.Vector;
                     encodingWord.Bigramm = endBigram.name;
                     return(encodingWord);
                 }
             }
         }
         tmpSource = string.Empty;
         return(new EncodingWord());
     }
     catch (Exception ex)
     {
         throw new Exception("Не удалось определить конечные слоги из входного словаря, " + ex.Message);
     }
 }
示例#2
0
        public virtual EncodingWord GetFirstBigramm(IEnumerable <WordNotPersistent> vocalabryFirstBigramm, ref string tmpWordSource)
        {
            try
            {
                int countDebug = 0;
                //List<WordNotPersistent> debugArray = vocalabryFirstBigramm.OrderByDescending(f => f.name.Length).ToList();
                //Console.WriteLine(debugArray[1878].name);
                foreach (var beginBigram in vocalabryFirstBigramm.OrderByDescending(f => f.name.Length))
                {
                    string realBigram = beginBigram.name.Substring(1);
                    if (realBigram.Length == tmpWordSource.Length)
                    {
                        int indexValidate = 0;
                        for (int i = 0; i <= realBigram.Length - 1; i++)
                        {
                            if (tmpWordSource.ToUpper()[i] == realBigram.ToUpper()[i])
                            {
                                indexValidate++;
                            }
                        }
                        if (indexValidate == realBigram.Length)
                        {
                            tmpWordSource = string.Empty;
                            EncodingWord encodingWord = new EncodingWord();
                            encodingWord.Vector  = beginBigram.Vector;
                            encodingWord.Bigramm = realBigram;
                            return(encodingWord);
                        }
                    }

                    if (realBigram.Length < tmpWordSource.Length)
                    {
                        countDebug++;
                        int indexValidate = 0;
                        for (int i = 0; i <= realBigram.Length - 1; i++)
                        {
                            if (tmpWordSource.ToUpper()[i] == realBigram.ToUpper()[i])
                            {
                                indexValidate++;
                            }
                        }
                        if (indexValidate == realBigram.Length)
                        {
                            tmpWordSource = tmpWordSource.Substring(indexValidate);
                            EncodingWord encodingWord = new EncodingWord();
                            encodingWord.Vector  = beginBigram.Vector;
                            encodingWord.Bigramm = realBigram;
                            return(encodingWord);
                        }
                    }
                    countDebug++;
                    Console.WriteLine(countDebug);
                }
                tmpWordSource = string.Empty;
                return(new EncodingWord());
            }
            catch (Exception ex)
            {
                throw new Exception("Не удалось определить начальный слог из входного словаря, " + ex.Message);
            }
        }