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.

GroupDocs kullanarak Dosyalarda Eşsesli Sesleri Arayın

Aşağıdaki konular aşağıda ele alınacaktır:

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

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.

Ayrıca bakınız