Поиск омофонов в файлах с помощью GroupDocs

Синонимы — это слова со сходным значением, а омофоны звучат одинаково, но различаются по значению или написанию. Мы научились находить синонимы в нескольких документах с помощью Java. Сегодня в этой статье мы увидим, как искать омофоны в нескольких документах с помощью Java.

Ниже будут рассмотрены следующие темы:

Java API для поиска омофонов

GroupDocs.Search демонстрирует Java API GroupDocs.Search for Java, который позволяет находить любое слово и его омофоны в нескольких файлах любой конкретной папки. Он может искать контент в различных форматах. Помимо поиска омофонов, API поддерживает множество других методов поиска, в том числе:

  • Поиск с учетом регистра
  • Нечеткий поиск
  • Поиск по фразе
  • Поиск регулярных выражений
  • Поиск синонимов
  • Поиск подстановочных знаков

Вы можете загрузить файл JAR из раздела загрузок или использовать последний репозиторий и конфигурации зависимостей Maven в своих приложениях Java.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.8</version> 
</dependency>
PM> Install-Package GroupDocs.Search

Найти омофоны в нескольких файлах в Java

Следующие шаги показывают, как искать омофоны в нескольких файлах папки в Java.

  • Определите поисковое слово, папку индексирования и папку-контейнер ваших файлов.
  • Создайте Index с определенной индексной папкой.
  • Добавьте папку документа в файл index.
  • Определите SearchOptions и включите гомофонный поиск с помощью метода setUseHomophoneSearch.
  • Выполните поиск омофонов с помощью метода поиска.
  • Используйте свойства полученного SearchResult по мере необходимости.

Следующий исходный код Java находит все омофоны в файлах указанной папки. Кроме того, вы также можете управлять своим словарем омофонов.

// Поиск омофонов в нескольких файлах и папках с использованием Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// Создание индекса в указанной папке
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Создание объекта параметров поиска
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// Найдите слово «правильно»
// Помимо слова «правильно», будут искаться и омофоны «обрядись, напиши, райт,…».
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

Вывод приведенного выше кода выглядит следующим образом:

Query: right
Documents: 2
Occurrences: 17

Вы можете использовать результаты поиска омофонов, выполнив шаги после получения омофонов и их вхождений из каждого документа.

  • Просмотрите результаты поиска.
  • Получите каждый FoundDocument с помощью метода getFoundDocument.
  • Используйте свойства каждого FoundDocument по мере необходимости.
  • Теперь пройдитесь по полям FoundDocument, получив FoundDocumentField.
  • Позже из каждого FoundDocumentField получите все термины и их вхождения в каждом документе.

В следующем примере кода Java выводятся результаты поиска омофонов вместе с количеством вхождений каждого искомого термина.

// Печать результатов поиска омофонов в Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

// Просмотрите документы
for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());
  
  // Пройдитесь по найденным полям
  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Печать найденных терминов
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[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

Поиск омофонов и печать результатов с использованием Java — полный код

Следующий код Java объединяет описанные выше шаги. Сначала он находит омофоны по запросу, а затем печатает все вхождения омофонов из каждого документа в предоставленной папке.

// Поиск омофонов в нескольких файлах и папках с использованием Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// Создание индекса в указанной папке
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Создание объекта параметров поиска
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// Найдите слово «правильно»
// Помимо слова «правильно», будут искаться и омофоны «обрядись, напиши, райт,…».
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Печать найденных терминов
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Заключение

В заключение вы научились находить слова и их омофоны в нескольких документах в указанной папке с помощью Java. Вы можете попробовать разработать собственное Java-приложение для поиска омофонов с помощью GroupDocs.Search for Java.

Узнайте больше об Java Search Automation API из документации. Чтобы познакомиться с его функциями, вы можете просмотреть доступные примеры в репозитории GitHub. Свяжитесь с нами по любому вопросу через форум.

Смотрите также