同じように聞こえるが、意味やつづりが異なる単語は 同音異義語 です。一方、綴りは同じですが、意味や発音が異なる単語は 同綴異義語 です。 同音異義語 は同音異義語または同形異義語のいずれかです。または両方。混乱させて自動化しないようにしましょう。この記事では、C#を使用して複数のドキュメント内の同音異義語を検索する方法 を学習します。

GroupDocsを使用してファイル内の同音異義語を検索

以下のトピックについて説明します。

複数のファイルで同音異義語を検索するための.NETAPI

GroupDocs.Search は.NET APIを紹介しています(GroupDocs.Search for .NET ) これにより、指定したフォルダの複数のファイル内の単語とその同音異義語を検索できます。この記事の例では、このAPIを使用します。さまざまな形式のコンテンツを検索できます。同音異義語を見つけることに加えて、APIは要件に従って検索する他の多くの方法をサポートします。サポートされている検索手法の一部は次のとおりです。

  • 同義語検索
  • フレーズ検索
  • あいまい検索
  • 大文字と小文字を区別する検索
  • 正規表現検索
  • ワイルドカード検索

ダウンロードセクション から DLL または MSI インストーラーをダウンロードするか、NuGet

PM> Install-Package GroupDocs.Search

C#を使用して複数のファイルで同音異義語を検索する

次の手順は、C#を使用して、フォルダー内のファイル内の同音異義語(類似した音/発音の単語) を検索する方法を示しています。

  • 検索クエリ、インデックスフォルダー、およびファイルを含むフォルダーを定義します。
  • 定義されたインデックスフォルダでインデックス を作成します。
  • 作成したインデックスにドキュメントのフォルダを追加します。
  • SearchOptions を定義し、UseHomophoneSearch をtrueに設定します。
  • クエリと検索オプションを指定して検索 メソッドを呼び出して、すべての同音異義語を検索します。
  • 取得した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
}; 

// 「右」という単語を検索します
// 「right」という単語に加えて、「rite、wright、write、...」という単語も検索されます。
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

同音異義語の検索結果を表示するには、各ドキュメントですべての同音異義語とその出現回数を取得した後、以下の手順に従います。

  • 以前に取得した同音異義語の検索結果をトラバースします。
  • GetFoundDocument() を使用して、各ドキュメントをFoundDocument として取得します。 メソッド。
  • 必要に応じて、各FoundDocumentのプロパティを使用します。
  • 次に、FoundDocumentのFoundFieldsをトラバースして、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
}; 

// 「右」という単語を検索します
// 「right」という単語に加えて、「rite、wright、write、...」という単語も検索されます。
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#を使用して、指定されたフォルダーの複数のドキュメントから単語とその同音異義語を見つける方法を学習しました。 GroupDocs.Search for .NET を使用して、複数のファイル内の同音異義語を検索するための独自の.NETアプリケーションを構築してみることができます。

ドキュメントから.NETSearchAutomation APIについて の詳細をご覧ください。機能を体験するには、GitHub リポジトリで利用可能な例をご覧ください。 フォーラム からお問い合わせください。

関連項目