Connect with us

Разработка

Вычисление семантического расстояния между словами с помощью Natural Language Framework

В этой справочной статье мы рассмотрим класс NLEmbedding, чтобы понять, как использовать его преимущества.

Опубликовано

/

     
     

Такие фрагменты текста естественного языка, как слова и предложения, могут иметь семантическое сходство между собой. На этой концепции основано большинство подсказок, и она реализуется с помощью класса NLEmbedding фреймворка Natural Language.

Обработка естественного языка позволяет компьютерам понимать человеческий язык и взаимодействовать с ним. Она помогает обрабатывать и анализировать текстовые данные, извлекать значимую информацию и определять взаимосвязи между словами и фразами. Класс NLEmbedding обеспечивает возможность структурированного отображения и анализа этих связей.

Эта возможность крайне важна для понимания и обработки текста. На ней основан целый ряд функций в экосистеме Apple:

  • Она помогает Siri предлагать соответствующие приложения и действия
  • Улучшает поиск в Spotlight, уточняя результаты
  • Заметки предлагают связанный контент
  • Почта предлагает релевантные ответы
  • Понимая контекст вашего разговора в Сообщениях, улучшаются предсказания клавиатуры

В этой справочной статье мы рассмотрим класс NLEmbedding, чтобы понять, как использовать его преимущества.

Вычисление семантического расстояния

Получив строку, NLEmbedding создает окружение, заполненное другими фрагментами текста, которые имеют семантическое сходство.

Некоторые из них будут расположены дальше от этой строки, а другие — ближе. Это расстояние регулируется семантическим сходством противопоставленных строк. Чем меньше расстояние, тем больше сходство. NLEmbedding представляет эту окружение — карту строк — в векторном пространстве, где строки — векторы.

Чтобы приступить к реализации функций получения семантического расстояния с помощью NLEmbedding, начните с импорта фреймворка NaturalLanguage, а затем:

  1. Создайте экземпляр NLEmbedding и вызовите метод wordEmbedding(for:), передав в качестве параметра язык обрабатываемой строки. Если он доступен, то вернет объект NLEmbedding, в противном случае вернет nil.
  2. Вызовите метод enumerateNeighbors(for:maximumCount:distanceType:using:), передайте строку, соседи которой вам нужны, и максимальное количество раз, которое нужно вызвать метод. Для каждого найденного соседа будет возвращено его расстояние до обрабатываемого слова.

Объект NLEmbedding предоставляет доступ к нескольким полезным сведениям, таким как:

  • количество слов в словаре, с помощью параметра vocabularySize;
  • язык текста в эмбеддинге слова, с помощью свойства language;
  • проверка наличия термина в словаре с помощью метода contains(_:), а случае наличия запрос его вектора, представленного в виде массива double, с помощью метода vector(for:).

Класс NLEmbedding также предоставляет метод для получения расстояния между одним словом и другим.

Метод distance(between:and:distanceType:) вычисляет расстояние между двумя строками в векторном пространстве. В качестве параметров он принимает:

  • две строки, расстояние между которыми необходимо вычислить
  • DistanceType, тип метрики расстояния, которую нужно использовать при определении сходства

Пример с представлением SwiftUI

Ниже приведен пример представления SwiftUI для поиска синонимов слова с использованием фреймворка Natural Language.

В приведенном выше примере пользователь вводит слово, и при нажатии кнопки с помощью фреймворка Natural Language происходит поиск его синонимов.

Кнопка «Find synonyms» запускает определение языка, к которому принадлежит слово, и, если он найден, проверяет наличие или отсутствие слова в словаре языка. Затем извлекается коллекция похожих слов, отображаемая в виде списка.

Если синонимы не найдены или слово не распознано, выдается сообщение об ошибке.

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: