示例#1
0
        public Tokenizer GetSinonimo(Tokenizer tokens)
        {
            List <string> list = new List <string>();

            for (int i = 0; i < tokens.Count; i++)
            {
                string item = tokens[i];
                bool   flag = false;
                List <FraseSinonimo> posibles = this.GetPosibles(tokens, i);
                if (posibles.Count > 0)
                {
                    for (int j = 0; j < posibles.Count; j++)
                    {
                        FraseSinonimo fraseSinonimo = posibles[j];
                        if (this.IsMatch(fraseSinonimo, tokens, i))
                        {
                            list.AddRange(fraseSinonimo.Sinonimo);
                            i   += fraseSinonimo.Frase.Count;
                            flag = true;
                            break;
                        }
                    }
                }
                if (!flag)
                {
                    list.Add(item);
                }
            }
            tokens.Tokens = list;
            return(tokens);
        }
示例#2
0
        internal bool IsMatch(FraseSinonimo posible, Tokenizer tokens, int index)
        {
            bool result;

            for (int i = 0; i < posible.Frase.Count; i++)
            {
                string a = posible.Frase[i];
                if (a != tokens[i + index])
                {
                    result = false;
                    return(result);
                }
            }
            result = true;
            return(result);
        }
示例#3
0
        public bool Remove(string palabra)
        {
            string        text          = palabra.Trim().ToLower();
            Tokenizer     tokenizer     = Tokenizer.FromString(text, 3, true);
            FraseSinonimo fraseSinonimo = new FraseSinonimo();

            fraseSinonimo.SetNormalized(tokenizer.ToArray(), new string[]
            {
                "a"
            });
            for (int i = 0; i < this.Frases.Count; i++)
            {
                FraseSinonimo fraseSinonimo2 = this.Frases[i];
                if (fraseSinonimo2.EqualsFrase(fraseSinonimo.Frase))
                {
                    this.Frases.RemoveAt(i);
                    break;
                }
            }
            XmlNode xmlNode = null;

            foreach (XmlNode xmlNode2 in this.Root.ChildNodes)
            {
                if (xmlNode2.NodeType == XmlNodeType.Element && xmlNode2.Name.ToLower() == "sinonimo")
                {
                    foreach (XmlAttribute xmlAttribute in xmlNode2.Attributes)
                    {
                        if (xmlAttribute.Name.ToLower() == "palabra" && xmlAttribute.Value.ToLower().Trim() == text)
                        {
                            xmlNode = xmlNode2;
                            break;
                        }
                    }
                }
                if (xmlNode != null)
                {
                    break;
                }
            }
            if (xmlNode != null)
            {
                this.Root.RemoveChild(xmlNode);
            }
            this.Doc.Save(this.Filename);
            return(true);
        }
示例#4
0
 private void ParseXml()
 {
     this.Frases = new List <FraseSinonimo>();
     this.Doc.Load(this.Filename);
     foreach (XmlNode xmlNode in this.Doc.ChildNodes)
     {
         if (xmlNode.Name.ToLower() == "sinonimos")
         {
             this.Root = xmlNode;
         }
     }
     if (this.Root == null)
     {
         throw new XmlException("No existe el nodo raiz 'sinonimos' ");
     }
     foreach (XmlNode xmlNode in this.Root.ChildNodes)
     {
         if (xmlNode.NodeType == XmlNodeType.Element && xmlNode.Name.ToLower() == "sinonimo")
         {
             string text  = null;
             string text2 = null;
             foreach (XmlAttribute xmlAttribute in xmlNode.Attributes)
             {
                 if (xmlAttribute.Name.ToLower() == "palabra")
                 {
                     text = xmlAttribute.Value.ToLower().Trim();
                 }
                 else
                 {
                     if (xmlAttribute.Name.ToLower() == "equivalencia")
                     {
                         text2 = xmlAttribute.Value.ToLower().Trim();
                     }
                 }
             }
             if (!string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(text2))
             {
                 Tokenizer     tokenizer     = Tokenizer.FromString(text, 3, true);
                 Tokenizer     tokenizer2    = Tokenizer.FromString(text2, 3, true);
                 FraseSinonimo fraseSinonimo = new FraseSinonimo();
                 fraseSinonimo.SetNormalized(tokenizer.ToArray(), tokenizer2.ToArray());
                 this.Frases.Add(fraseSinonimo);
             }
         }
     }
 }
示例#5
0
        public bool Add(string palabra, string equivalencia)
        {
            string        text          = palabra.Trim().ToLower();
            string        text2         = equivalencia.Trim().ToLower();
            Tokenizer     tokenizer     = Tokenizer.FromString(text, 3, true);
            Tokenizer     tokenizer2    = Tokenizer.FromString(text2, 3, true);
            FraseSinonimo fraseSinonimo = new FraseSinonimo();

            fraseSinonimo.SetNormalized(tokenizer.ToArray(), tokenizer2.ToArray());
            this.Frases.Add(fraseSinonimo);
            XmlNode      xmlNode      = this.Doc.CreateElement("sinonimo");
            XmlAttribute xmlAttribute = this.Doc.CreateAttribute("palabra");

            xmlAttribute.Value = text.ToLower();
            XmlAttribute xmlAttribute2 = this.Doc.CreateAttribute("equivalencia");

            xmlAttribute2.Value = text2.ToLower();
            xmlNode.Attributes.Append(xmlAttribute);
            xmlNode.Attributes.Append(xmlAttribute2);
            this.Root.AppendChild(xmlNode);
            this.Doc.Save(this.Filename);
            return(true);
        }