Exemplo n.º 1
0
        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns></returns>
        public PinglishString Clone()
        {
            var cloned = new PinglishString();

            cloned.PersianLetters.AddRange(this.PersianLetters);
            cloned.EnglishLetters.AddRange(this.EnglishLetters);
            return(cloned);
        }
Exemplo n.º 2
0
        public PinglishString ToLower()
        {
            PinglishString cloned = Clone();

            for (int i = 0; i < EnglishLetters.Count; i++)
            {
                cloned.EnglishLetters[i] = char.ToLower(EnglishLetters[i]);
            }

            return(cloned);
        }
Exemplo n.º 3
0
        public void Learn(PinglishString word, bool appendToInternalDataset)
        {
            for (int prefixGram = 3; prefixGram >= 0; prefixGram--)
            {
                for (int postfixGram = 5 - prefixGram; postfixGram >= 0; postfixGram--)
                {
                    m_mappingSequences.LearnWordMapping(word, prefixGram, postfixGram);
                }
            }

            if (appendToInternalDataset && !m_pinglishDataSet.Contains(word))
            {
                m_pinglishDataSet.Add(word);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="list"></param>
        /// <param name="englishLetter"></param>
        /// <param name="persianLetters">Must be sorted based on their weights</param>
        public static void Update(this List <PinglishString> list, char englishLetter, List <string> persianLetters)
        {
            int count = list.Count;

            while (count > 0)
            {
                PinglishString original = list[0];
                foreach (var value in persianLetters)
                {
                    PinglishString fs = original.Clone();
                    fs.Append(value, englishLetter);
                    list.Add(fs);
                }

                list.RemoveAt(0);

                --count;
            }
        }
Exemplo n.º 5
0
        public void LearnWordMapping(PinglishString word, int prefixGram, int postfixGram)
        {
            var len = word.EnglishLetters.Count;

            for (int i = 0; i < len; ++i)
            {
                var prefix  = GetPrefixForIndex(word.EnglishString, i, prefixGram);
                var postfix = GetPostfixForIndex(word.EnglishString, i, postfixGram);

                if (prefix.Length == prefixGram && postfix.Length == postfixGram)
                {
                    if (word.EnglishLetters[i] == 'h' && prefix == "" && postfix == "laghi")
                    {
                        int kiloo;
                        kiloo = 4;
                    }

                    UpdateDictionary(
                        word.EnglishLetters[i], prefix, postfix, word.PersianLetters[i]);
                }
            }
        }
Exemplo n.º 6
0
        public static void Update(this List <PinglishString> list, char englishLetter, Dictionary <string, int> persianLetters)
        {
            if (persianLetters.Count == 0)
            {
                return;
            }

            int count = list.Count;

            while (count > 0)
            {
                PinglishString original = list[0];
                foreach (var value in persianLetters.OrderByDescending(item => item.Value))
                {
                    PinglishString fs = original.Clone();
                    fs.Append(value.Key, englishLetter);
                    list.Add(fs);
                }

                list.RemoveAt(0);

                --count;
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// Extracts and learns all the mapping information from the given <see cref="PinglishString"/>
 /// </summary>
 /// <param name="pinglishString">The instance of <see cref="PinglishString"/>
 /// which mapping information will be extracted from. </param>
 void IPinglishLearner.Learn(PinglishString pinglishString)
 {
     m_converter.Learn(pinglishString, true);
 }