public ActionResult Consultar(int arvoreGeradaId)
        {
            ViewBag.PossuiNosFilhos = true;
            ArvoreGerada arvoreGerada = db.ArvoreGerada.Find(arvoreGeradaId);

            if (arvoreGerada != null)
            {
                arvoreGerada.ConfiguracaoArvore = db.ConfiguracaoArvore.FirstOrDefault(t => t.ID == arvoreGerada.ConfiguracaoArvoreID);
            }

            Arvore arv;
            var    xml = new System.Xml.Serialization.XmlSerializer(typeof(Arvore));

            using (StringReader textWriter = new StringReader(arvoreGerada.XML))
            {
                arv = xml.Deserialize(textWriter) as Arvore;
            }
            List <ConsultaPmml> atributosConsulta = new List <ConsultaPmml>();

            atributosConsulta.Add(new ConsultaPmml {
                Nome = arv.NoRaiz.Nome, Label = arv.NoRaiz.Legenda, ArvoreGeradaId = arvoreGeradaId, Valor = arv.NoRaiz.Valor, ClasseMeta = true
            });
            atributosConsulta.Add(new ConsultaPmml {
                Nome = arv.NoRaiz.NosFilhos[0].Nome, Label = arv.NoRaiz.NosFilhos[0].Legenda, ArvoreGeradaId = arvoreGeradaId
            });

            Session.Clear();
            Session.Add("ConsultaPMML", atributosConsulta);

            atributosConsulta = atributosConsulta.OrderByDescending(ord => ord.ClasseMeta == true).ToList();

            ViewBag.Resultado = string.Empty;
            return(View(atributosConsulta));
        }
Example #2
0
        private void RodarArvore(int configuracaoArvoreId)
        {
            var    atributos          = db.ConfiguracaoAtributo.Where(config => config.ConfiguracaoArvoreID == configuracaoArvoreId).ToList();
            string classeMeta         = atributos[0].ClasseMeta;
            var    configuracaoArvore = db.ConfiguracaoArvore.FirstOrDefault(configArvore => configArvore.ID == configuracaoArvoreId);

            //Gerar a árvore
            List <Atributo> atrs = new List <Atributo>();

            foreach (var atr in atributos)
            {
                atrs.Add(new Atributo {
                    Nome = atr.Nome, TipoAtributo = atr.Tipo, Legenda = atr.Legenda
                });
            }

            TabelaTemporaria.PreencherAtributos(atrs, configuracaoArvoreId);

            C45 c45 = new C45();

            if (configuracaoArvore.Poda > 0)
            {
                c45.Poda = configuracaoArvore.Poda;
            }
            c45.Calcular(classeMeta, atrs);

            ArvoreGerada arvoreGerada = new ArvoreGerada();

            arvoreGerada.ConfiguracaoArvoreID = configuracaoArvoreId;
            arvoreGerada.ClasseMeta           = atributos.FirstOrDefault(x => x.Nome.Equals(classeMeta)).Legenda;
            arvoreGerada.JSON           = new JavaScriptSerializer().Serialize(c45.arvore.GerarJSON());
            arvoreGerada.UsuarioGeracao = "Agendamento";
            arvoreGerada.DataGeracao    = DateTime.Now;
            var xml = new System.Xml.Serialization.XmlSerializer(c45.arvore.GetType());

            using (StringWriter textWriter = new StringWriter())
            {
                xml.Serialize(textWriter, c45.arvore);
                arvoreGerada.XML = textWriter.ToString();
            }
            var doc = new GeradorPMML().Gerar(atrs, classeMeta, c45.arvore, c45.PercentuaisClasseMeta);

            xml = new System.Xml.Serialization.XmlSerializer(doc.GetType());
            using (StringWriter textWriter = new StringWriter())
            {
                xml.Serialize(textWriter, doc);
                arvoreGerada.XmlPmml = textWriter.ToString();
            }

            if (atributos.Count(x => x.Tipo == Tipo.Mineração_de_Texto) > 0)
            {
                arvoreGerada.JsonNuvemPalavras = new JavaScriptSerializer().Serialize(TabelaTemporaria.RetornaNuvemPalavras(atributos.FirstOrDefault(x => x.Tipo == Tipo.Mineração_de_Texto).Nivel));
            }

            db.ArvoreGerada.Add(arvoreGerada);
            db.SaveChanges();
        }
Example #3
0
        public ActionResult Index()
        {
            ArvoreGerada arvoreGerada = db.ArvoreGerada.OrderByDescending(arvore => arvore.DataGeracao).FirstOrDefault();

            if (arvoreGerada != null)
            {
                arvoreGerada.ConfiguracaoArvore = db.ConfiguracaoArvore.FirstOrDefault(t => t.ID == arvoreGerada.ConfiguracaoArvoreID);
            }
            return(View(arvoreGerada));
        }
        public JsonResult RetornaNuvemPalavras(int?id)
        {
            ArvoreGerada arvoreGerada = db.ArvoreGerada.Find(id);

            if (arvoreGerada != null && !string.IsNullOrEmpty(arvoreGerada.JsonNuvemPalavras))
            {
                var json = new JavaScriptSerializer().Deserialize(arvoreGerada.JsonNuvemPalavras, typeof(List <JsonNuvemPalavra>));
                return(this.Json(json, JsonRequestBehavior.AllowGet));
            }
            return(null);
        }
        public ActionResult Details(int?arvoreGeradaId)
        {
            ArvoreGerada arvoreGerada = db.ArvoreGerada.Find(arvoreGeradaId);

            if (arvoreGerada != null)
            {
                arvoreGerada.ConfiguracaoArvore = db.ConfiguracaoArvore.FirstOrDefault(t => t.ID == arvoreGerada.ConfiguracaoArvoreID);
            }

            return(View(arvoreGerada));
        }
        public ActionResult Avancar()
        {
            ViewBag.PossuiNosFilhos = true;
            List <ConsultaPmml> consulta     = Session["ConsultaPMML"] as List <ConsultaPmml>;
            ArvoreGerada        arvoreGerada = db.ArvoreGerada.Find(consulta[0].ArvoreGeradaId);
            Arvore arv;

            var xml = new System.Xml.Serialization.XmlSerializer(typeof(Arvore));

            using (StringReader textWriter = new StringReader(arvoreGerada.XML))
            {
                arv = xml.Deserialize(textWriter) as Arvore;
            }

            foreach (var no in arv.NoRaiz.NosFilhos)
            {
                if (consulta[1].Nome == no.Nome && no.Valor == consulta[1].Valor)
                {
                    if (no.NosFilhos.Count <= 0)
                    {
                        ViewBag.PossuiNosFilhos = false;
                    }

                    if (consulta.Count > 2)
                    {
                        BuscaProximoNivel(no, consulta, 2);
                    }
                    else if (no.NosFilhos.Count > 0 && consulta.Count(x => x.Nome == no.NosFilhos[0].Nome) <= 0)
                    {
                        consulta.Add(new ConsultaPmml {
                            Nome = no.NosFilhos[0].Nome, Label = no.NosFilhos[0].Legenda, ArvoreGeradaId = 0
                        });
                    }

                    break;
                }
            }

            return(View("Consultar", consulta));
        }
Example #7
0
        public ActionResult Index(IList <MineradorRH.Models.ConfiguracaoAtributo> atributos)
        {
            string classeMeta = atributos[0].ClasseMeta;

            if (string.IsNullOrEmpty(classeMeta))
            {
                ModelState.AddModelError("", "Um atributo deve ser classe meta.");
                return(View(atributos));
            }

            if (atributos.Count(x => x.Tipo == Tipo.Mineração_de_Texto) > 1)
            {
                ModelState.AddModelError("", "Árvore pode possuir apenas um atributo do tipo Mineração de texto.");
                return(View(atributos));
            }

            if (ModelState.IsValid)
            {
                foreach (var atributo in atributos.Where(atr => atr.ID > 0))
                {
                    db.Entry(atributo).State = EntityState.Modified;
                }

                foreach (var atributo in atributos.Where(atr => atr.ID <= 0))
                {
                    db.ConfiguracaoAtributo.Add(atributo);
                }

                db.SaveChanges();

                int arvoreID           = atributos[0].ConfiguracaoArvoreID;
                var configuracaoArvore = db.ConfiguracaoArvore.FirstOrDefault(configArvore => configArvore.ID == arvoreID);

                //Gerar a árvore
                List <Atributo> atrs = new List <Atributo>();
                foreach (var atr in atributos)
                {
                    atrs.Add(new Atributo {
                        Nome = atr.Nome, TipoAtributo = atr.Tipo, Legenda = atr.Legenda, Nivel = atr.Nivel
                    });
                }

                TabelaTemporaria.PreencherAtributos(atrs, arvoreID);

                C45 c45 = new C45();
                if (configuracaoArvore.Poda > 0)
                {
                    c45.Poda = configuracaoArvore.Poda;
                }
                c45.Calcular(classeMeta, atrs);

                ArvoreGerada arvoreGerada = new ArvoreGerada();
                arvoreGerada.ConfiguracaoArvoreID = arvoreID;
                arvoreGerada.ClasseMeta           = atributos.FirstOrDefault(x => x.Nome.Equals(classeMeta)).Legenda;
                arvoreGerada.JSON           = new JavaScriptSerializer().Serialize(c45.arvore.GerarJSON());
                arvoreGerada.UsuarioGeracao = User.Identity.Name;
                arvoreGerada.DataGeracao    = DateTime.Now;
                var xml = new System.Xml.Serialization.XmlSerializer(c45.arvore.GetType());
                using (StringWriter textWriter = new StringWriter())
                {
                    xml.Serialize(textWriter, c45.arvore);
                    arvoreGerada.XML = textWriter.ToString();
                }
                var doc = new GeradorPMML().Gerar(atrs, classeMeta, c45.arvore, c45.PercentuaisClasseMeta);
                xml = new System.Xml.Serialization.XmlSerializer(doc.GetType());
                using (StringWriter textWriter = new StringWriter())
                {
                    xml.Serialize(textWriter, doc);
                    arvoreGerada.XmlPmml = textWriter.ToString();
                }

                if (atributos.Count(x => x.Tipo == Tipo.Mineração_de_Texto) > 0)
                {
                    arvoreGerada.JsonNuvemPalavras = new JavaScriptSerializer().Serialize(TabelaTemporaria.RetornaNuvemPalavras(atributos.FirstOrDefault(x => x.Tipo == Tipo.Mineração_de_Texto).Nivel));
                }

                db.ArvoreGerada.Add(arvoreGerada);
                db.SaveChanges();

                return(View("Grafico", arvoreGerada));
            }

            return(View(atributos));
        }