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(); } }
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()); }
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); }
public List <Postagens> RetornarListaDePostagensSalvas() { var retorno = new List <Postagens>(); using (var context = new Challenge_BDEntities()) { retorno = context.Postagens.ToList(); } return(retorno); }
public void SalvarPostagemDoArquivo() { using (var context = new Challenge_BDEntities()) { } }
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(); } } } }