예제 #1
0
        public void AnalisarPostagens()
        {
            using (var context = new Challenge_BDEntities())
            {
                //Busca postagens processadas
                var TodasPostagens = context.PostagensProcessadas.AsNoTracking().Include("Postagens").AsNoTracking().ToList();

                //Busca as Termos classificados
                var Termos = context.ClassificacaoTermo.ToList();

                //Varrer todas as postagens processadas para adicionar ou retirar peso.
                foreach (var postagem in TodasPostagens)
                {
                    //Procurar em cada postagem os termos a serem analisados
                    foreach (var termo in Termos)
                    {
                        if (postagem.PostProcessado.Contains(" " + termo.Termo.ToLower() + " "))
                        {
                            //Cria nova item de vinculo das tabelas
                            var pesoPostagens = new PesoPostagens();
                            pesoPostagens.IdTermo     = termo.Id;
                            pesoPostagens.IdPost      = postagem.IdPost;
                            pesoPostagens.Peso        = termo.Peso;
                            pesoPostagens.Instituicao = postagem.Postagens.Instituicao;

                            //Adiciona Tabela de Peso e Postagem
                            context.PesoPostagens.Add(pesoPostagens);
                        }
                    }
                }

                //Salva no banco de dados
                context.SaveChanges();
            }
        }
예제 #2
0
        public List <TermosPorUniversidade> BuscarTermosPorUniversidade(string Universidade)
        {
            int cont    = 1;
            var retorno = new List <TermosPorUniversidade>();

            using (var context = new Challenge_BDEntities())
            {
                var listaTermos = (from PP in context.PesoPostagens
                                   join CT in context.ClassificacaoTermo on new { Id = PP.IdTermo } equals new { CT.Id }
                                   where PP.Instituicao == Universidade
                                   group PP by new { Termo = CT.Termo, Peso = CT.Peso, idTermo = CT.Id } into g
                                   select new { g.Key.Termo, g.Key.Peso, g.Key, idTermo = g.Key.idTermo });

                foreach (var termo in listaTermos)
                {
                    var dados = new TermosPorUniversidade();
                    dados.Termo          = termo.Termo;
                    dados.AvaliacaoTermo = termo.Peso == 1 ? "TermoPositivo" : "TermoNegativo";
                    int qtdPost = context.PesoPostagens.Count(p => p.IdTermo == termo.idTermo && p.Instituicao == Universidade);
                    dados.TamanhoPalavra  = qtdPost == 1 ? "15pt" : qtdPost > 10 ? "100pt" : qtdPost * 15 + "pt";
                    dados.baguncaPalavras = new Random().Next();
                    retorno.Add(dados);
                    cont++;
                }
            }

            return(retorno.OrderByDescending(od => od.baguncaPalavras).ToList());
        }
예제 #3
0
        public List <DadosAgrupadosPorUniversidade> AgruparDadosPorUniversidade()
        {
            int cont    = 1;
            var retorno = new List <DadosAgrupadosPorUniversidade>();

            using (var context = new Challenge_BDEntities())
            {
                var litaDePesos = (from pesoPost in context.PesoPostagens
                                   where pesoPost.Peso == 1
                                   group pesoPost by new { Instituicao = pesoPost.Instituicao } into g
                                   select new { g.Key.Instituicao, TotalPosts = g.Count() });

                foreach (var peso in litaDePesos)
                {
                    var dados = new DadosAgrupadosPorUniversidade();
                    dados.Instituicao         = peso.Instituicao;
                    dados.TotalPosts          = context.Postagens.Count(p => p.Instituicao == peso.Instituicao);
                    dados.TotalPostsValidos   = context.PesoPostagens.Count(p => p.Instituicao == peso.Instituicao);
                    dados.TotalPostsPositivos = peso.TotalPosts;
                    dados.Porcentagem         = ((Double.Parse(dados.TotalPostsPositivos.ToString()) / Double.Parse(dados.TotalPostsValidos.ToString())) * 100).ToString("N2");
                    dados.Porcentagem         = dados.Porcentagem.Replace(",", ".");
                    retorno.Add(dados);
                }
            }
            var listaOrdenada = retorno.OrderByDescending(o => o.Porcentagem).ToList();

            foreach (var ret in listaOrdenada)
            {
                ret.Rank = cont;
                cont++;
            }

            return(listaOrdenada);
        }
예제 #4
0
        public List <Postagens> RetornarListaDePostagensSalvas()
        {
            var retorno = new List <Postagens>();

            using (var context = new Challenge_BDEntities())
            {
                retorno = context.Postagens.ToList();
            }

            return(retorno);
        }
예제 #5
0
 public void SalvarPostagemDoArquivo()
 {
     using (var context = new Challenge_BDEntities())
     {
     }
 }
예제 #6
0
        public void ProcessarPostagens()
        {
            using (var context = new Challenge_BDEntities())
            {
                //Busca postagens não processadas
                var TodasPostagens = context.Postagens.Where(p => p.PostagemProcessada == false).ToList();

                //Varrer todas as postagens para retirar palavras
                foreach (var postagem in TodasPostagens)
                {
                    if (postagem.PostagensProcessadas == null)
                    {
                        var PostProc = new PostagensProcessadas();

                        string novoPost = postagem.Post.Replace(" a ", " ");
                        novoPost = novoPost.Replace(" o ", " ");
                        novoPost = novoPost.Replace(" com ", " ");
                        novoPost = novoPost.Replace(" como ", " ");

                        novoPost = novoPost.Replace(" na ", " ");
                        novoPost = novoPost.Replace(" nas ", " ");
                        novoPost = novoPost.Replace(" no ", " ");
                        novoPost = novoPost.Replace(" nos ", " ");

                        novoPost = novoPost.Replace(" de ", " ");
                        novoPost = novoPost.Replace(" da ", " ");
                        novoPost = novoPost.Replace(" das ", " ");
                        novoPost = novoPost.Replace(" do ", " ");
                        novoPost = novoPost.Replace(" dos ", " ");
                        novoPost = novoPost.Replace(" fui ", " ");
                        novoPost = novoPost.Replace(" la ", " ");

                        //Retirar citações de usuarios na postagem
                        while (novoPost.Contains("@"))
                        {
                            string a   = novoPost.Substring(novoPost.IndexOf("@"));
                            string usu = "";

                            if (a.IndexOf(" ") == -1)
                            {
                                usu = a.Substring(a.IndexOf("@"));
                            }
                            else
                            {
                                usu = a.Substring(a.IndexOf("@"), a.IndexOf(" "));
                            }

                            novoPost = novoPost.Replace(usu, " ");
                        }

                        //Adiciona Novo registro
                        PostProc.PostProcessado = novoPost;
                        PostProc.IdPost         = postagem.IdPost;
                        context.PostagensProcessadas.Add(PostProc);
                        context.SaveChanges();


                        ////Atualiza postagem anterior como já processada
                        //var postAntigo = context.Postagens.Where(p => p.IdPost == postagem.IdPost).FirstOrDefault();
                        //postAntigo.PostagemProcessada = true;

                        //context.SaveChanges();
                    }
                }
            }
        }