Palavras que soam iguais, mas têm significados ou grafias diferentes são Homofones. Considerando que as palavras que têm a mesma grafia, mas diferem em significado ou pronúncia são Homógrafos. Homônimos podem ser homófonos ou homógrafos; ou ambos. Não vamos confundir e automatizar. Neste artigo, você aprenderá como pesquisar homófonos em vários documentos usando C#.
Os seguintes tópicos serão abordados a seguir:
- API .NET - Pesquisa Homophone
- Encontre homófonos em documentos usando C#
- Jogar com o resultado da pesquisa de homofone
API .NET para pesquisar homófonos em vários arquivos
GroupDocs.Search apresenta a API .NET (GroupDocs.Search for .NET) que permite pesquisar palavras e seus homófonos dentro de vários arquivos da pasta especificada. Usaremos essa API nos exemplos deste artigo. Ele pode pesquisar o conteúdo de vários formatos diferentes. Além de encontrar os homófonos, a API oferece suporte a muitas outras maneiras de pesquisar conforme o requisito. Algumas das técnicas de pesquisa suportadas são as seguintes:
- Pesquisa de sinônimos
- Pesquisa de frase
- Pesquisa difusa
- Pesquisa sensível a maiúsculas e minúsculas
- Pesquisa de expressões regulares
- Pesquisa de curingas
Você pode baixar o instalador de DLLs ou MSI na seção de downloads ou instalar a API em seu aplicativo .NET via NuGet.
PM> Install-Package GroupDocs.Search
Encontre homófonos em vários arquivos usando C
As etapas a seguir orientam como podemos pesquisar homófonos (palavras com som/pronúncia semelhantes) em arquivos dentro de uma pasta usando C#.
- Defina a consulta de pesquisa, uma pasta de indexação e a pasta que contém seus arquivos.
- Crie Index com a pasta de índice definida.
- Adicione a pasta do documento ao índice criado.
- Defina as SearchOptions e defina o UseHomophoneSearch para true.
- Pesquise todos os homófonos chamando o método Search com as opções de consulta e pesquisa.
- Use o resumo usando as propriedades do [SearchResult] recuperado (https://apireference.groupdocs.com/search/net/groupdocs.search.results/searchresult).
O código-fonte C# a seguir encontra todos os homófonos em todos os arquivos de uma pasta definida. Além disso, você pode gerenciar seu dicionário homófono.
// Pesquise homófonos em vários arquivos e pastas usando C #
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Criando um índice na pasta especificada
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Criando um objeto de opções de pesquisa
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// Procure a palavra 'certo'
// Além da palavra 'right', as palavras "rite, wright, write, ..." também serão pesquisadas
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
A saída do código acima é a seguinte:
Query: **right**
Documents: 2
Occurrences: 17
Imprimindo resultados de pesquisa homófonos usando C#
Siga as etapas abaixo mencionadas após obter todos os homófonos e seu número de ocorrências em cada documento para apresentar os resultados da pesquisa de homófonos.
- Percorra os resultados da pesquisa homófona que são recuperados anteriormente.
- Obtenha cada documento como FoundDocument usando o GetFoundDocument().
- Use as propriedades de cada FoundDocument conforme necessário.
- Agora, percorra os FoundFields do FoundDocument para obter FoundDocumentField.
- Por fim, de cada FoundDocumentField, obtenha seus Termos e suas ocorrências dentro de cada documento.
O código-fonte C# a seguir imprime os resultados da pesquisa homófona junto com o número de ocorrências de cada termo pesquisado.
// Imprimindo os resultados da pesquisa homófona em 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);
// Imprimindo termos 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]);
}
}
}
}
A seguir está a saída do exemplo de código acima.
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
Pesquisar homófonos e resultados de impressão usando C# - código completo
O código C# a seguir resume as etapas acima, primeiro encontra todos os homófonos de acordo com a consulta e, em seguida, imprime todas as ocorrências de todos os homófonos em cada documento dentro da pasta fornecida.
// Pesquise homófonos em vários arquivos e pastas e imprima os resultados usando C #
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Criando um índice na pasta especificada
Index index = new Index(indexFolder);
// Indexando documentos da pasta especificada
index.Add(documentsFolder);
// Criando um objeto de opções de pesquisa
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// Procure a palavra 'certo'
// Além da palavra 'right', as palavras "rite, wright, write, ..." também serão pesquisadas
SearchResult result = index.Search(query, options);
// Imprimindo o 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);
// Imprimindo termos 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]);
}
}
}
}
Conclusão
Para resumir, você aprendeu a encontrar as palavras e seus homófonos nos vários documentos da pasta especificada usando C#. Você pode tentar construir seu próprio aplicativo .NET para pesquisar homófonos em vários arquivos usando GroupDocs.Search for .NET.
Saiba mais sobre a API .NET Search Automation na documentação. Para experimentar os recursos, você pode dar uma olhada nos exemplos disponíveis no repositório GitHub. Entre em contato conosco para qualquer consulta por meio do fórum.