Пример #1
0
        public void Сrear_el_set()
        {
            Zaliznyak  dicParaTrabajo = new Zaliznyak(Path.Combine(SergeySearch.RootPath, "vortaro.txt"));
            FileStream rioDePagina    = new FileStream(Path.Combine(SergeySearch.RootPath, nombre_del_file), FileMode.Open, FileAccess.Read);
            TextReader leerLaPagina   = new StreamReader(rioDePagina);
            string     pagina         = leerLaPagina.ReadLine();

            while (pagina != null)
            {
                pagina = pagina.ToLower();
                var todasPalabras = pagina.Split(
                    Separador,
                    StringSplitOptions.RemoveEmptyEntries);
                foreach (var palabra in todasPalabras)
                {
                    var FormaNormala = dicParaTrabajo.FormaNormala(palabra);
                    if (FormaNormala != null && FormaNormala.Length > 2)
                    {
                        indiceado_Pagina.Add(FormaNormala);
                    }
                    else
                    {
                        //Разблокируйте, коли хотите обработку текстов на опечатки (предупрежу: она ОЧЕНЬ долгая)

                        /*else if (dic_para_trabajo.sub_dicts.TryGetValue(palabra[0], out var value))
                         * {
                         *  Console.WriteLine(palabra);
                         *  int i = 0;
                         *  foreach (var elm in value)
                         *  {
                         *      i = LevenshteinDistance(elm, palabra);
                         *      if (i < 2)
                         *      {
                         *          indiceado_Pagina.Add(dic_para_trabajo.FormaNormala(elm));
                         *          break;
                         *      }
                         *  }
                         *
                         *  if (i >= 2)
                         *  {
                         *      indiceado_Pagina.Add(palabra);
                         *  }
                         * }*/
                        if (palabra.Length > 2)
                        {
                            indiceado_Pagina.Add(palabra);
                        }
                    }
                }

                pagina = leerLaPagina.ReadLine();
            }
        }
Пример #2
0
        public string RegioneImportante(string filenombre, string pregunta)
        {
            if (filenombre == "")
            {
                return("");
            }

            FileStream file_flujo    = new FileStream(filenombre, FileMode.Open, FileAccess.Read);
            TextReader texto_leyendo = new StreamReader(file_flujo);

            string[] campo_de_busqueda = texto_leyendo.ReadToEnd().Split(
                new[]
            {
                ' ', ',', '.', '!', '?', ';', ':', '+', '=', '-', '\r', '\n', '\t', '\'', '\"', '(', ')', '[',
                ']',
                '#', '*'
            },
                StringSplitOptions.RemoveEmptyEntries);
            string[] preguntas = pregunta.Split(
                new[]
            {
                ' ', ',', '.', '!', '?', ';', ':', '+', '=', '-', '\r', '\n', '\t', '\'', '\"', '(', ')', '[',
                ']', '«', '»', '„', '“', '…',
                '#', '*', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
            },
                StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < preguntas.Length; i++)
            {
                string normal = dicc.FormaNormala(preguntas[i]);
                if (normal != null)
                {
                    preguntas[i] = normal;
                }
            }

            string[] file_nomalizado = new string[campo_de_busqueda.Length];
            for (int i = 0; i < file_nomalizado.Length; i++)
            {
                string normal = dicc.FormaNormala(campo_de_busqueda[i]);
                if (normal != null)
                {
                    file_nomalizado[i] = normal;
                }
                else
                {
                    file_nomalizado[i] = campo_de_busqueda[i];
                }
            }

            int[] significados      = new int[file_nomalizado.Length];
            int   indice_de_maximal = 0;

            for (int i = file_nomalizado.Length - 1; i > 0; i--)
            {
                int posicion;
                if (i + 20 > file_nomalizado.Length)
                {
                    posicion = file_nomalizado.Length - 1;
                }
                else
                {
                    posicion = i + 20;
                }

                int numero = 0;
                for (int j = posicion - 1; j > i; j--)
                {
                    if (preguntas.Contains(file_nomalizado[j]))
                    {
                        numero++;
                    }
                }

                if (preguntas.Contains(file_nomalizado[i]))
                {
                    significados[i] = 1 + numero;
                }
                else
                {
                    significados[i] = numero;
                }

                if (significados[i] == significados.Max())
                {
                    indice_de_maximal = i;
                }
            }

            string regionimportante = "";

            for (int i = indice_de_maximal; i < indice_de_maximal + 20; i++)
            {
                regionimportante = regionimportante + campo_de_busqueda[i] + " ";
            }

            return(regionimportante);
        }