Kulağa aynı gelen fakat anlam ve yazım bakımından farklı olan kelimelere Homofon denir. Oysa, aynı şekilde yazılan ancak anlam veya telaffuz bakımından farklı olan kelimeler Homograflardır. Homonimler, homofon veya homograf olabilir; ya da her ikisi de. Karıştırmayalım ve otomatikleştirelim. Bu makalede, C# kullanarak birden çok belgede sesteş sözcükleri nasıl arayacağınızı öğreneceksiniz.
Aşağıdaki konular aşağıda ele alınacaktır:
- .NET API - Homofon Arama
- C# kullanarak belgelerde sesteş sözcükleri bulun
- Homofon Arama Sonucu ile Oynat
Birden Çok Dosyada Eşsesli Ses Aramak için .NET API
GroupDocs.Search .NET API’sini gösterir (GroupDocs.Search for .NET) bu, belirtilen klasörün birden çok dosyasında sözcüklerin ve sesteş seslerinin aranmasına olanak tanır. Bu makaledeki örneklerde bu API’yi kullanacağız. Çeşitli farklı formatlardaki içerikleri arayabilir. API, sesteş sözcükleri bulmanın yanı sıra gereksinime göre arama yapmak için birçok başka yolu da destekler. Desteklenen arama tekniklerinden bazıları şunlardır:
- Eş anlamlı Arama
- Cümle Arama
- Bulanık Arama
- Büyük/Küçük Harfe Duyarlı Arama
- Normal İfade Araması
- Joker Kartla Arama
DLL’leri veya MSI yükleyicisini indirilenler bölümünden indirebilir veya API’yi NuGet aracılığıyla .NET uygulamanıza yükleyebilirsiniz. /paketler/groupdocs.search).
PM> Install-Package GroupDocs.Search
C# kullanarak Birden Çok Dosyada Sesteş Sesleri Bulma
Aşağıdaki adımlar, C# kullanarak bir klasör içindeki dosyalarda sesteş sözcükleri (benzer sese/telaffuza sahip sözcükler) nasıl arayabileceğimize rehberlik eder.
- Arama sorgusunu, dizin oluşturma klasörünü ve dosyalarınızı içeren klasörü tanımlayın.
- Tanımlanan dizin klasörü ile Dizin oluşturun.
- Belgenin klasörünü oluşturulan dizine ekleyin.
- Arama Seçeneklerini tanımlayın ve HomophoneSearch Kullan öğesini ayarlayın .search.options/searchoptions/properties/usehomophonesearch) true olarak değiştirin.
- Sorgu ve arama seçenekleriyle Ara yöntemini çağırarak tüm sesteş sözcükleri arayın.
- Alınan SearchResult özelliklerini kullanarak özeti kullanın.
Aşağıdaki C# kaynak kodu, tanımlanmış bir klasörün tüm dosyalarındaki tüm sesteş sözcükleri bulur. Ek olarak, homophone sözlüğünüzü yönetebilirsiniz.
// C# kullanarak birden çok dosya ve klasörde sesteş sözcükleri arayın
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Belirtilen klasörde bir dizin oluşturma
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Arama seçenekleri nesnesi oluşturma
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// 'Doğru' kelimesini arayın
// "Doğru" kelimesinin yanı sıra "rite, wright, write, ..." kelimeleri de aranacaktır.
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Yukarıdaki kodun çıktısı aşağıdaki gibidir:
Query: **right**
Documents: 2
Occurrences: 17
C# kullanarak Homofon Arama Sonuçlarını Yazdırma
Eş sesli arama sonuçlarını sunmak için tüm sesteş sözcükleri ve bunların her bir belgedeki geçiş sayılarını aldıktan sonra aşağıdaki adımları izleyin.
- Daha önce alınan sesteş sesli arama sonuçları arasında gezinin.
- GetFoundDocument() kullanarak her belgeyi FoundDocument olarak alın. net/groupdocs.search.results/searchresult/methods/getfounddocument) yöntemi.
- Her FoundDocument’in özelliklerini gerektiği gibi kullanın.
- Şimdi, [FoundDocumentField](https://apireference.groupdocs. com/search/net/groupdocs.search.results/founddocumentfield).
- Son olarak, her FoundDocumentField’dan, Şartlarını ve bunların her bir belgedeki oluşumlarını öğrenin.
Aşağıdaki C# kaynak kodu, aranan her terimin oluşum sayısıyla birlikte sesteş sesli arama sonuçlarını yazdırır.
// Homofon Arama sonuçlarını C# ile yazdırma
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);
// Bulunan terimleri yazdırma
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]);
}
}
}
}
Yukarıdaki kod örneğinin çıktısı aşağıdadır.
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# - Tam Kod Kullanarak Sesteş Sesleri Arama ve Sonuçları Yazdırma
Aşağıdaki C# kodu, yukarıdaki adımları özetler, önce sorguya göre tüm sesteş sözcükleri bulur ve ardından sağlanan klasördeki her belgedeki tüm sesteş sözcüklerin tüm oluşumlarını yazdırır.
// Birden çok dosya ve klasörde Homofonları arayın ve ardından C# kullanarak sonuçları yazdırın
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Belirtilen klasörde bir dizin oluşturma
Index index = new Index(indexFolder);
// Belgeleri belirtilen klasörden indeksleme
index.Add(documentsFolder);
// Arama seçenekleri nesnesi oluşturma
SearchOptions options = new SearchOptions()
{
UseHomophoneSearch = true // Enabling Homophone Search
};
// 'Doğru' kelimesini arayın
// 'Doğru' kelimesinin yanı sıra "rite, wright, write, ..." kelimeleri de aranacaktır.
SearchResult result = index.Search(query, options);
// sonucu yazdırma
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);
// Bulunan terimleri yazdırma
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]);
}
}
}
}
Çözüm
Özetlemek gerekirse, C# kullanarak belirtilen klasördeki birden çok belgeden sözcükleri ve sesteş seslerini nasıl bulacağınızı öğrendiniz. GroupDocs.Search for .NET’ü kullanarak birden çok dosya içinde sesteş sözcükleri aramak için kendi .NET uygulamanızı oluşturmayı deneyebilirsiniz.
Belgelerden .NET Search Automation API hakkında daha fazla bilgi edinin. Özellikleri deneyimlemek için GitHub deposundaki mevcut örneklere göz atabilirsiniz. Herhangi bir sorunuz için forum aracılığıyla bize ulaşın.