Слова, які звучать однаково, але відрізняються значенням або написанням, є омофонами. Тоді як слова, які пишуться однаково, але відрізняються за значенням або вимовою, є омографами. Омоніми можуть бути омофонами або омографами; або обидва. Не будемо плутати і автоматизувати це. У цій статті ви дізнаєтесь, як шукати омофони в кількох документах за допомогою C#.
Нижче будуть розглянуті такі теми:
- .NET API - Омофонний пошук
- Знайти омофони в документах за допомогою C#
- Грайте з омофонним результатом пошуку
.NET API для пошуку омофонов у кількох файлах
GroupDocs.Search демонструє .NET API (GroupDocs.Search for .NET) що дозволяє шукати слова та їхні омофони в кількох файлах вказаної папки. Ми будемо використовувати цей API у прикладах цієї статті. Він може шукати вміст у різних форматах. Окрім пошуку омофонів, API підтримує багато інших способів пошуку відповідно до вимог. Деякі з підтримуваних методів пошуку:
- Пошук синонімів
- Пошук по фразі
- Нечіткий пошук
- Пошук з урахуванням регістру
- Пошук за регулярними виразами
- Пошук по дикій картці
Ви можете завантажити DLL або інсталятор MSI із розділу завантажень або встановити API у своїй програмі .NET через NuGet. /packages/groupdocs.search).
PM> Install-Package GroupDocs.Search
Знайти омофони в кількох файлах за допомогою C#
Наступні кроки вказують, як ми можемо шукати омофони (слова зі схожим звучанням/вимовою) у файлах у папці за допомогою C#.
- Визначте пошуковий запит, папку індексування та папку, яка містить ваші файли.
- Створіть Індекс із визначеною папкою індексу.
- Додайте папку документа до створеного покажчика.
- Визначте SearchOptions і встановіть [UseHomophoneSearch](https://apireference.groupdocs.com/search/net/groupdocs .search.options/searchoptions/properties/usehomophonesearch) на true.
- Виконайте пошук у всіх омофонах, викликавши метод Search із параметрами запиту та пошуку.
- Використовуйте зведення, використовуючи властивості отриманого SearchResult.
Наступний вихідний код C# знаходить усі омофони в усіх файлах визначеної папки. Крім того, ви можете керувати своїм омофонним словником.
// Пошук омофонов у кількох файлах і папках за допомогою C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Створення індексу у вказаній папці
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Створення об’єкта параметрів пошуку
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// Шукайте слово "право"
// Окрім слова «правий», також шукатимуть слова «обряд, райт, писати, ...».
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Результат наведеного вище коду такий:
Query: **right**
Documents: 2
Occurrences: 17
Друк результатів гомофонного пошуку за допомогою C#
Виконайте наведені нижче дії після отримання всіх омофонів і їх кількості входжень у кожному документі, щоб представити результати пошуку омофонів.
- Перегляньте результати пошуку омофонів, отримані раніше.
- Отримайте кожен документ як FoundDocument за допомогою [GetFoundDocument()](https://apireference.groupdocs.com/search/ net/groupdocs.search.results/searchresult/methods/getfounddocument).
- За потреби використовуйте властивості кожного FoundDocument.
- Тепер перегляньте FoundFields FoundDocument, щоб отримати [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
- Нарешті, з кожного FoundDocumentField отримайте його умови та їх випадки в кожному документі.
Наведений нижче вихідний код C# друкує результати пошуку омофонів разом із кількістю входжень кожного шуканого терміна.
// Друк результатів пошуку омофонів на 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);
// Друк знайдених термінів
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]);
}
}
}
}
Нижче наведено результат наведеного вище прикладу коду.
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
Пошук омофонів і друк результатів за допомогою C# - повний код
Наступний код на C# підсумовує описані вище кроки, він спочатку знаходить усі омофони відповідно до запиту, а потім друкує всі входження всіх омофонов у кожному документі в наданій папці.
// Шукайте омофони в кількох файлах і папках, а потім роздрукуйте результати за допомогою C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Створення індексу у вказаній папці
Index index = new Index(indexFolder);
// Індексація документів із зазначеної папки
index.Add(documentsFolder);
// Створення об’єкта параметрів пошуку
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// Шукайте слово "право"
// Окрім слова «правий», також шукатимуть слова «обряд, райт, писати, ...».
SearchResult result = index.Search(query, options);
// Друк результату
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);
// Друк знайдених термінів
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]);
}
}
}
}
Висновок
Підсумовуючи, ви навчилися знаходити слова та їхні омофони в кількох документах зазначеної папки за допомогою C#. Ви можете спробувати створити власну програму .NET для пошуку омофонів у кількох файлах за допомогою GroupDocs.Search for .NET.
Дізнайтеся більше про .NET Search Automation API з документації. Щоб випробувати функції, ви можете переглянути доступні приклади в репозиторії GitHub. Зв’яжіться з нами за будь-яким запитом через форум.