Wörter, die gleich klingen, sich aber in Bedeutung oder Schreibweise unterscheiden, sind Homophone. Wohingegen die Wörter, die dasselbe buchstabieren, sich aber in Bedeutung oder Aussprache unterscheiden, Homographen sind. Homonyme können entweder homophon oder homograph sein; oder beides. Lassen Sie es uns nicht verwirren und automatisieren. In diesem Artikel erfahren Sie, wie Sie mit C# in mehreren Dokumenten nach Homophonen suchen.

Suchen Sie mit GroupDocs nach Homophonen in Dateien

Nachfolgend werden folgende Themen behandelt:

.NET-API zum Suchen von Homophonen in mehreren Dateien

GroupDocs.Search präsentiert die .NET-API (GroupDocs.Search für .NET) Dies ermöglicht die Suche nach Wörtern und ihren Homophonen in mehreren Dateien des angegebenen Ordners. Wir werden diese API in den Beispielen dieses Artikels verwenden. Es kann den Inhalt verschiedener Formate durchsuchen. Neben der Suche nach Homophonen unterstützt die API je nach Anforderung viele andere Suchmöglichkeiten. Einige der unterstützten Suchtechniken sind wie folgt:

  • Synonymsuche
  • Phrasensuche
  • Ungenaue Suche
  • Suche mit Berücksichtigung der Groß- und Kleinschreibung
  • Suche nach regulären Ausdrücken
  • Wildcard-Suche

Sie können das DLLs- oder MSI-Installationsprogramm aus dem Downloadbereich herunterladen oder die API in Ihrer .NET-Anwendung über NuGet.

PM> Install-Package GroupDocs.Search

Finden Sie Homophone in mehreren Dateien mit C#

Die folgenden Schritte zeigen, wie wir mit C# in Dateien innerhalb eines Ordners nach Homophonen (Wörtern mit ähnlichem Klang/ähnlicher Aussprache) suchen können.

  • Definieren Sie die Suchabfrage, einen Indizierungsordner und den Ordner, der Ihre Dateien enthält.
  • Erstellen Sie Index mit dem definierten Indexordner.
  • Fügen Sie den Ordner des Dokuments zum erstellten Index hinzu.
  • Definieren Sie die SearchOptions und setzen Sie die UseHomophoneSearch auf true.
  • Durchsuchen Sie alle Homophone, indem Sie die Methode Search mit den Abfrage- und Suchoptionen aufrufen.
  • Verwenden Sie die Zusammenfassung unter Verwendung der Eigenschaften des abgerufenen SearchResult.

Der folgende C#-Quellcode findet alle Homophone in allen Dateien eines definierten Ordners. Außerdem können Sie Ihr homophones Wörterbuch verwalten.

// Suchen Sie mit C# nach Homophonen in mehreren Dateien und Ordnern
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Erstellen eines Index im angegebenen Ordner
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Erstellen eines Suchoptionsobjekts
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Suche nach dem Wort „richtig“
// Neben dem Wort „right“ wird auch nach den Wörtern „rite, wright, write, …“ gesucht
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);

Die Ausgabe des obigen Codes ist wie folgt:

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

Befolgen Sie die unten aufgeführten Schritte, nachdem Sie alle Homophone und ihre Häufigkeit in jedem Dokument erhalten haben, um die Ergebnisse der Suche nach Homophonen anzuzeigen.

  • Durchlaufen Sie die zuvor abgerufenen homophonen Suchergebnisse.
  • Rufen Sie jedes Dokument als FoundDocument mithilfe von GetFoundDocument() Methode.
  • Verwenden Sie die Eigenschaften jedes gefundenen Dokuments nach Bedarf.
  • Durchsuchen Sie nun die FoundFields von FoundDocument, um FoundDocumentField.
  • Schließlich erhalten Sie von jedem FoundDocumentField seine Begriffe und deren Vorkommen in jedem Dokument.

Der folgende C#-Quellcode gibt die homophonen Suchergebnisse zusammen mit der Anzahl der Vorkommen jedes gesuchten Begriffs aus.

// Drucken der Ergebnisse der Homophon-Suche 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);
        // Gefundene Begriffe drucken
        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]);
            }
        }
    }
}

Das Folgende ist die Ausgabe des obigen Codebeispiels.

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

Suche nach Homophonen und Druckergebnissen mit C# – vollständiger Code

Der folgende C#-Code fasst die obigen Schritte zusammen, findet zuerst alle Homophone gemäß der Abfrage und druckt dann alle Vorkommen aller Homophone in jedem Dokument innerhalb des bereitgestellten Ordners.

// Durchsuchen Sie Homophone in mehreren Dateien und Ordnern und drucken Sie dann die Ergebnisse mit C#
string query = "right";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// Erstellen eines Index im angegebenen Ordner
Index index = new Index(indexFolder);
// Indizieren von Dokumenten aus dem angegebenen Ordner
index.Add(documentsFolder);

// Erstellen eines Suchoptionsobjekts
SearchOptions options = new SearchOptions()
{
    UseHomophoneSearch = true // Enabling Homophone Search
}; 

// Suche nach dem Wort „richtig“
// Neben dem Wort „right“ wird auch nach den Wörtern „rite, wright, write, …“ gesucht
SearchResult result = index.Search(query, options);

// Drucken des Ergebnisses
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);
        // Gefundene Begriffe drucken
        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]);
            }
        }
    }
}

Fazit

Zusammenfassend haben Sie gelernt, wie Sie mit C# die Wörter und ihre Homophone aus den mehreren Dokumenten des angegebenen Ordners finden. Sie können versuchen, mithilfe von GroupDocs.Search for .NET Ihre eigene .NET-Anwendung für die Suche nach Homophonen in mehreren Dateien zu erstellen.

Weitere Informationen über die .NET Search Automation API finden Sie in der Dokumentation. Um die Funktionen zu erleben, können Sie sich verfügbare Beispiele im GitHub-Repository ansehen. Kontaktieren Sie uns für Fragen über das Forum.

Siehe auch