示例#1
0
        private void funcBayesConc(int index, Int64 cantidadTotalBase, DatabaseFunc conn)
        {
            double probMayor       = -1;
            string nombreProbMayor = " ";

            for (int x = 0; x < URLs[index].getCategorias().Count; x++)
            {
                double totalCategoria = URLs[index].getCategorias()[x].getCantCoincidencias();                                       // total de coincidencias de una categoria
                double cantCategoria  = Convert.ToDouble(conn.ObtenerCantidadCategoria(URLs[index].getCategorias()[x].getNombre())); //total de palabras en una categoria

                double cantFinal = (cantCategoria / cantidadTotalBase) * (totalCategoria / cantCategoria);

                if (probMayor < cantFinal)
                {
                    probMayor       = cantFinal;
                    nombreProbMayor = URLs[index].getCategorias()[x].getNombre();
                }

                URLs[index].getCategorias()[x].setProbabilidad(Math.Round(cantFinal, 4));
            }

            //Console.WriteLine("URL: {0} \n|| prob: {1} \n|| nom: {2}", URLs[index].getTexto(), Math.Round(probMayor, 4), nombreProbMayor);
        }
示例#2
0
        public void BayesConcurrente(ref ProgressBar barForm, ref Label labelForm)
        {
            //labelForm.Text = "Ejecutando bayes Con:";
            Console.WriteLine("Ejecutando bayes Con:");
            Int64 cantidadTotalBase = pgsql.ObtenerCantidadBase(); // obtiene la cantidad de palabras totales que hay en la base de datos
            //Variables para ayuda visual del usuario
            int total  = URLs.Count;
            int cambio = -1;
            int bar    = 0;
            var sw     = Stopwatch.StartNew();

            for (int i = 0; i < URLs.Count; i += 4)
            {
                Parallel.Invoke(() =>
                {
                    DatabaseFunc conn = new DatabaseFunc();
                    conn.abrirConexion();
                    funcBayesConc(i, cantidadTotalBase, conn);
                    conn.cerrarConexion();
                },
                                () =>
                {
                    if (i + 1 < URLs.Count)
                    {
                        DatabaseFunc conn = new DatabaseFunc();
                        conn.abrirConexion();
                        funcBayesConc(i + 1, cantidadTotalBase, conn);
                        conn.cerrarConexion();
                    }
                },

                                () =>
                {
                    if (i + 2 < URLs.Count)
                    {
                        DatabaseFunc conn = new DatabaseFunc();
                        conn.abrirConexion();
                        funcBayesConc(i + 2, cantidadTotalBase, conn);
                        conn.cerrarConexion();
                    }
                },
                                () =>
                {
                    if (i + 3 < URLs.Count)
                    {
                        DatabaseFunc conn = new DatabaseFunc();
                        conn.abrirConexion();
                        funcBayesConc(i + 3, cantidadTotalBase, conn);
                        conn.cerrarConexion();
                    }
                });
                bar = ((i + 1) * 100 / total);
                if (bar != cambio)
                {
                    cambio = bar;
                    //barForm.Increment(1);
                }
            }
            if (bar >= 100)
            {
                //barForm.Value = 0;
                Console.WriteLine("Bayesiano concurrente completada!!\nTiempo: " + Math.Round(sw.Elapsed.TotalSeconds / 60, 2) + " minutos");
            }
        }