소리는 같지만 의미나 철자가 다른 단어는 동음이의어입니다. 반면 철자는 같으나 의미나 발음이 다른 단어는 동형이의어입니다. 동음이의어는 동음이의어 또는 동음이의어일 수 있습니다. 아니면 둘다. 혼동하지 말고 자동화합시다. 이 기사에서는 C#을 사용하여 여러 문서에서 동음이의어를 검색하는 방법을 배웁니다.

GroupDocs를 사용하여 파일에서 동음이의어 검색

아래에서 다음 주제를 다룹니다.

여러 파일에서 동음이의어 검색을 위한 .NET API

GroupDocs.Search는 .NET API를 선보입니다(GroupDocs.Search for .NET). 지정된 폴더의 여러 파일 내에서 단어와 동음이의어 검색을 허용합니다. 이 문서의 예에서 이 API를 사용합니다. 다양한 형식의 콘텐츠를 검색할 수 있습니다. 동음이의어를 찾는 것과 함께 API는 요구 사항에 따라 검색할 수 있는 다른 많은 방법을 지원합니다. 지원되는 검색 기술 중 일부는 다음과 같습니다.

  • 동의어 검색
  • 구문 검색
  • 퍼지 검색
  • 대소문자 구분 검색
  • 정규식 검색
  • 와일드카드 검색

다운로드 섹션에서 DLL 또는 MSI 설치 프로그램을 다운로드하거나 NuGet을 통해 .NET 애플리케이션에 API를 설치할 수 있습니다.

PM> Install-Package GroupDocs.Search

C#을 사용하여 여러 파일에서 동음이의어 찾기

다음 단계는 C#을 사용하여 폴더 내의 파일에서 동음이의어(소리/발음이 유사한 단어)를 검색하는 방법을 안내합니다.

  • 검색 쿼리, 인덱싱 폴더 및 파일이 포함된 폴더를 정의합니다.
  • 정의된 인덱스 폴더로 인덱스를 생성합니다.
  • 생성된 인덱스에 문서의 폴더를 추가합니다.
  • SearchOptions를 정의하고 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
}; 

// '맞다'를 검색해보세요
// '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 응용 프로그램을 구축할 수 있습니다.

문서에서 .NET Search Automation API에 대해 자세히 알아보세요. 기능을 경험하려면 GitHub 저장소에서 사용 가능한 예제를 볼 수 있습니다. 문의 사항은 포럼을 통해 문의하세요.

또한보십시오