Le parole che suonano allo stesso modo ma hanno significati o ortografia diversi sono omofoni. Considerando che le parole che si scrive allo stesso modo, ma differiscono nel significato o nella pronuncia sono Omografie. Gli omonimi possono essere omofoni o omografi; o entrambi. Non confondiamolo e automatizziamolo. In questo articolo imparerai come cercare omofoni all’interno di più documenti usando C#.

Cerca gli omofoni nei file usando GroupDocs

Di seguito verranno trattati i seguenti argomenti:

API .NET per la ricerca di omofoni in più file

GroupDocs.Search mostra l’API .NET (GroupDocs.Search for .NET) che consente la ricerca di parole e dei loro omofoni all’interno di più file della cartella specificata. Utilizzeremo questa API negli esempi di questo articolo. Può cercare il contenuto di vari formati diversi. Oltre a trovare gli omofoni, l’API supporta molti altri modi per cercare secondo i requisiti. Alcune delle tecniche di ricerca supportate sono le seguenti:

  • Ricerca sinonimo
  • Ricerca di frasi
  • Ricerca sfocata
  • Ricerca case-sensitive
  • Cerca espressioni regolari
  • Ricerca con caratteri jolly

Puoi scaricare il programma di installazione delle DLL o MSI dalla sezione download o installare l’API nella tua applicazione .NET tramite NuGet.

PM> Install-Package GroupDocs.Search

Trova omofoni in più file usando C#

I seguenti passaggi guidano come cercare omofoni (parole con suono/pronuncia simile) nei file all’interno di una cartella usando C#.

  • Definisci la query di ricerca, una cartella di indicizzazione e la cartella che contiene i tuoi file.
  • Crea Indice con la cartella dell’indice definita.
  • Aggiungi la cartella del documento all’indice creato.
  • Definisci SearchOptions e imposta [UseHomophoneSearch](https://apiference.groupdocs.com/search/net/ groupdocs.search.options/searchoptions/properties/usehomophonesearch) su true.
  • Cerca tutti gli omofoni chiamando il metodo Cerca con le opzioni di query e ricerca.
  • Utilizzare il riepilogo utilizzando le proprietà di SearchResult recuperato.

Il codice sorgente C# seguente trova tutti gli omofoni all’interno di tutti i file di una cartella definita. Inoltre, puoi gestire il tuo dizionario omofono.

// Cerca omofoni in più file e cartelle usando C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Creazione di un indice nella cartella specificata
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Creazione di un oggetto delle opzioni di ricerca
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Cerca la parola "giusto"
// Oltre alla parola 'giusto', verranno cercate anche le parole "rito, wright, scrittura, ..."
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

L’output del codice sopra è il seguente:

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

Segui i passaggi sotto indicati dopo aver ottenuto tutti gli omofoni e il loro numero di occorrenze in ciascun documento per presentare i risultati della ricerca di omofoni.

  • Attraversa i risultati della ricerca di omofoni recuperati in precedenza.
  • Ottieni ogni documento come FoundDocument usando [GetFoundDocument()](https://apiference.groupdocs.com/search /net/groupdocs.search.results/searchresult/methods/getfounddocument).
  • Utilizzare le proprietà di ogni FoundDocument come richiesto.
  • Ora, attraversa i FoundFields di FoundDocument per ottenere [FoundDocumentField](https://apiference.groupdocs .com/search/net/groupdocs.search.results/founddocumentfield).
  • Infine, da ogni FoundDocumentField, ottieni i suoi Termini e le loro occorrenze all’interno di ciascun documento.

Il codice sorgente C# seguente stampa i risultati della ricerca di omofoni insieme al numero di occorrenze di ciascun termine cercato.

// Stampa dell'omofono Risultati della ricerca in 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);
        // Termini trovati in stampa
        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]);
            }
        }
    }
}

Di seguito è riportato l’output dell’esempio di codice precedente.

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

Cerca omofoni e risultati di stampa usando C# - Codice completo

Il codice C# seguente riassume i passaggi precedenti, trova prima tutti gli omofoni in base alla query e quindi stampa tutte le occorrenze di tutti gli omofoni in ogni documento all’interno della cartella fornita.

// Cerca omofoni in più file e cartelle, quindi stampa i risultati usando C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Creazione di un indice nella cartella specificata
Index index = new Index(indexFolder);
// Indicizzazione di documenti dalla cartella specificata
index.Add(documentsFolder);

// Creazione di un oggetto delle opzioni di ricerca
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Cerca la parola "giusto"
// Oltre alla parola 'giusto', verranno cercate anche le parole "rito, wright, scrittura, ..."
SearchResult result = index.Search(query, options);

// Stampa del risultato
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);
        // Termini trovati in stampa
        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]);
            }
        }
    }
}

Conclusione

Per riassumere, hai imparato come trovare le parole e i loro omofoni dai più documenti della cartella specificata usando C#. Puoi provare a creare la tua applicazione .NET per la ricerca di omofoni all’interno di più file utilizzando GroupDocs.Search for .NET.

Ulteriori informazioni sull’API .NET Search Automation dalla documentazione. Per provare le funzionalità, puoi dare un’occhiata agli esempi disponibili sul repository GitHub. Contattaci per qualsiasi domanda tramite il forum.

Guarda anche