Las palabras que suenan igual pero tienen un significado u ortografía diferentes son homófonos. Considerando que, las palabras que se escriben igual, pero difieren en significado o pronunciación son Homógrafos. Los homónimos pueden ser homófonos u homógrafos; o ambos. No nos confundamos y automaticémoslo. En este artículo, aprenderá cómo buscar homófonos dentro de varios documentos usando C#.

Buscar homófonos en archivos usando GroupDocs

A continuación se tratarán los siguientes temas:

API .NET para buscar homófonos en varios archivos

GroupDocs.Search muestra la API de .NET (GroupDocs.Search for .NET) que permite buscar palabras y sus homófonos dentro de múltiples archivos de la carpeta especificada. Usaremos esta API en los ejemplos de este artículo. Puede buscar el contenido de varios formatos diferentes. Además de encontrar los homófonos, la API admite muchas otras formas de buscar según los requisitos. Algunas de las técnicas de búsqueda admitidas son las siguientes:

  • Búsqueda de sinónimos
  • Búsqueda de frases
  • Búsqueda borrosa
  • Búsqueda sensible a mayúsculas y minúsculas
  • Búsqueda de expresiones regulares
  • Búsqueda de comodines

Puede descargar el instalador DLL o MSI desde la sección de descargas o instalar la API en su aplicación .NET a través de NuGet.

PM> Install-Package GroupDocs.Search

Encuentra homófonos en múltiples archivos usando C#

Los siguientes pasos guían cómo podemos buscar homófonos (palabras con sonido/pronunciación similar) en archivos dentro de una carpeta usando C#.

El siguiente código fuente de C# encuentra todos los homófonos dentro de todos los archivos de una carpeta definida. Además, puede administrar su diccionario homófono.

// Busque homófonos en múltiples archivos y carpetas usando C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Crear un índice en la carpeta especificada
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Creación de un objeto de opciones de búsqueda
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Busca la palabra 'correcto'
// Además de la palabra 'right', también se buscarán las palabras "rite, wright, write, ..."
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

La salida del código anterior es la siguiente:

Query: **right**
Documents: 2
Occurrences: 17

Siga los pasos mencionados a continuación después de obtener todos los homófonos y su número de ocurrencias en cada documento para presentar los resultados de la búsqueda de homófonos.

  • Recorra los resultados de búsqueda homófonos que se recuperaron anteriormente.
  • Obtener cada documento como FoundDocument usando GetFoundDocument().
  • Use las propiedades de cada FoundDocument según sea necesario.
  • Ahora, recorra FoundFields de FoundDocument para obtener FoundDocumentField.
  • Por último, de cada FoundDocumentField, obtenga sus Términos y sus ocurrencias dentro de cada documento.

El siguiente código fuente de C# imprime los resultados de la búsqueda de homófonos junto con el número de apariciones de cada término buscado.

// Imprimir los resultados de la búsqueda de homófonos en C#
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
        // Imprimir términos encontrados
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
}

El siguiente es el resultado del ejemplo de código anterior.

Query: **right**
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

Buscar homófonos e imprimir resultados usando C# - Código completo

El siguiente código C# resume los pasos anteriores, primero encuentra todos los homófonos de acuerdo con la consulta y luego imprime todas las apariciones de todos los homófonos en cada documento dentro de la carpeta proporcionada.

// Busque homófonos en múltiples archivos y carpetas y luego imprima los resultados usando C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Crear un índice en la carpeta especificada
Index index = new Index(indexFolder);
// Indexación de documentos de la carpeta especificada
index.Add(documentsFolder);

// Creación de un objeto de opciones de búsqueda
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Busca la palabra 'correcto'
// Además de la palabra 'right', también se buscarán las palabras "rite, wright, write, ..."
SearchResult result = index.Search(query, options);

// Imprimiendo el resultado
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
        // Imprimir términos encontrados
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
}

Conclusión

En resumen, ha aprendido cómo encontrar las palabras y sus homófonos de los múltiples documentos de la carpeta especificada usando C#. Puede intentar crear su propia aplicación .NET para buscar homófonos en varios archivos mediante GroupDocs.Search for .NET.

Obtenga más información sobre la API de automatización de búsqueda de .NET en la documentación. Para experimentar las funciones, puede echar un vistazo a los ejemplos disponibles en el repositorio GitHub. Comuníquese con nosotros para cualquier consulta a través del foro.

Ver también