exponenta event banner

editDistanceSearcher

Изменить расстояние до ближайшего соседнего поискового устройства

Описание

Средство поиска расстояния редактирования выполняет ближайший поиск окрестности в списке известных строк, используя расстояние редактирования.

Создание

Описание

пример

eds = editDistanceSearcher(vocabulary,maxDist) создает средство поиска расстояния редактирования и задает Vocabulary и MaximumDistance свойства. Возвращенный объект выполняет поиск слов в vocabulary и с максимальным расстоянием редактирования maxDist.

пример

eds = editDistanceSearcher(vocabulary,maxDist,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение.

Свойства

развернуть все

Слова для сравнения, указанные как строковый вектор, символьный вектор или клеточный массив символьных векторов.

Типы данных: char | string | cell

Максимальное расстояние редактирования, указанное как положительный скаляр.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Стоимость вставки графемы, указанной как неотрицательный скаляр или дескриптор функции.

Если InsertCost является дескриптором функции, то функция должна принять один ввод и возвратить затраты на вставку ввода в источник. Функция затрат должна иметь вид cost = func(grapheme), где функция возвращает стоимость вставки grapheme в исходную строку.

Если указана пользовательская функция затрат, то поисковик выполняет исчерпывающий поиск. Для больших словарей функции knnsearch и rangesearch может занять много времени, чтобы найти совпадения.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle

Затраты на удаление графемы, указанные как неотрицательный скаляр или дескриптор функции.

Если DeleteCost является дескриптором функции, то функция должна принять один ввод и возвратить стоимость удаления ввода из источника. Функция затрат должна иметь вид cost = func(grapheme), где функция возвращает стоимость удаления grapheme из исходной строки.

Если указана пользовательская функция затрат, то поисковик выполняет исчерпывающий поиск. Для больших словарей функции knnsearch и rangesearch может занять много времени, чтобы найти совпадения.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle

Стоимость замены графемы, указанной как неотрицательный скаляр или дескриптор функции.

Если SubstituteCost является дескриптором функции, то функция должна принимать ровно два входа и возвращать стоимость замены первого входа на второй в источнике. Функция затрат должна иметь вид cost = func(grapheme1,grapheme2), где функция возвращает стоимость замены grapheme1 с grapheme2 в источнике.

Если указана пользовательская функция затрат, то поисковик выполняет исчерпывающий поиск. Для больших словарей функции knnsearch и rangesearch может занять много времени, чтобы найти совпадения.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle

Стоимость замены соседних графем, указанных как неотрицательный скаляр или дескриптор функции.

Если SwapCost является дескриптором функции, то функция должна принимать ровно два входа и возвращать стоимость замены первого входа на второй в источнике. Функция затрат должна иметь вид cost = func(grapheme1,grapheme2), где функция возвращает стоимость замены соседних графем grapheme1 и grapheme2 в источнике.

Если указана пользовательская функция затрат, то поисковик выполняет исчерпывающий поиск. Для больших словарей функции knnsearch и rangesearch может занять много времени, чтобы найти совпадения.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle

Функции объекта

rangesearchПоиск ближайших соседей по диапазону расстояния редактирования
knnsearchПоиск ближайших соседей по расстоянию редактирования

Примеры

свернуть все

Создание средства поиска расстояния редактирования с максимальным расстоянием 3 от слов "MathWorks", "MATLAB", и "Analytics".

vocabulary = ["MathWorks" "MATLAB" "Analytics"];
eds = editDistanceSearcher(vocabulary,3)
eds = 
  editDistanceSearcher with properties:

         Vocabulary: ["MathWorks"    "MATLAB"    "Analytics"]
    MaximumDistance: 3
         InsertCost: 1
         DeleteCost: 1
     SubstituteCost: 1
           SwapCost: Inf

Создайте средство поиска расстояния редактирования, используя расстояние редактирования Дамерау-Левенштейна. Расстояние редактирования Дамерау-Левенштейна - это наименьшее число вставок, удалений, замен и подстановок.

Создать средство поиска по расстоянию редактирования из слов "MathWorks", "MATLAB", и "Analytics" и укажите максимальное расстояние 3. Чтобы задать расстояние редактирования Дамерау-Левенштейна, задайте 'SwapCost' на 1.

vocabulary = ["MathWorks" "MATLAB" "Analytics"];
eds = editDistanceSearcher(vocabulary,3,'SwapCost',1)
eds = 
  editDistanceSearcher with properties:

         Vocabulary: ["MathWorks"    "MATLAB"    "Analytics"]
    MaximumDistance: 3
         InsertCost: 1
         DeleteCost: 1
     SubstituteCost: 1
           SwapCost: 1

Создайте средство поиска расстояния редактирования.

vocabulary = ["Text" "Analytics" "Toolbox"];
eds = editDistanceSearcher(vocabulary,2);

Найти ближайшие слова для "Test" и "Analysis".

words = ["Test" "Analysis"];
idx = knnsearch(eds,words)
idx = 2×1

     1
     2

Извлеките слова из словаря с помощью возвращенных индексов.

nearestWords = eds.Vocabulary(idx)
nearestWords = 1x2 string
    "Text"    "Analytics"

Создайте средство поиска расстояния редактирования и укажите максимальное расстояние редактирования, равное 3.

vocabulary = ["MathWorks" "MATLAB" "Simulink" "text" "analytics" "analysis"];
maxDist = 3;
eds = editDistanceSearcher(vocabulary,maxDist);

Найти ближайшие слова для "test", "analytic", и "analyze" с расстоянием редактирования, меньшим или равным 1.

words = ["test" "analytic" "analyze"];
maxDist = 1;
idx = rangesearch(eds,words,maxDist)
idx=3×1 cell array
    {[       4]}
    {[       5]}
    {1x0 double}

Для "analyze", в искателе нет слов в указанном диапазоне. Для "test" и "analytic", есть один результат каждый. Просмотр соответствующего слова для "test" с использованием возвращенного индекса.

nearestWords = eds.Vocabulary(idx{2})
nearestWords = 
"analytics"

Найти ближайшие слова для "test", "analytic", и "analyze" с расстоянием редактирования, меньшим или равным 3, и соответствующими им расстояниями редактирования.

words = ["test" "analytic" "analyze"];
maxDist = 3;
[idx,d] = rangesearch(eds,words,maxDist)
idx=3×1 cell array
    {[  4]}
    {[5 6]}
    {[  6]}

d=3×1 cell array
    {[  1]}
    {[1 2]}
    {[  3]}

Для обоих "test" и "analyze", в искателе имеется одно слово в указанном диапазоне. Для "analytic", есть два результата. Просмотр соответствующих слов для "analytic" (второе слово) с использованием возвращаемых индексов и их расстояний редактирования.

i = 2;
nearestWords = eds.Vocabulary(idx{i})
nearestWords = 1x2 string
    "analytics"    "analysis"

d{i}
ans = 1×2

     1     2

Алгоритмы

развернуть все

Представлен в R2019a