Найдите расстояние редактирования между двумя строками или документами
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".d = editDistance(___,Name,Value)
Найдите расстояние редактирования между строками "Text analytics" и "Text analysis". Расстояние редактирования, по умолчанию, является общим количеством вставок графемы, удалений и замен, требуемых поменять одну струну другому.
str1 = "Text analytics"; str2 = "Text analysis";
Найдите расстояние редактирования.
d = editDistance(str1,str2)
d = 2
Это означает менять первую струну к второму, требует двух редактирований. Например:
Замена – Замена символьный "t" к "s": "Text analytics" к "Text analysics".
Удаление – Удаляет символьный "c": "Text analysics" к "Text analysis".
Найдите расстояние редактирования между двумя маркируемыми документами. Для маркируемого входа документа расстояние редактирования, по умолчанию, является общим количеством маркерных вставок, удалений и замен, требуемых изменить один документ другому.
str1 = "It's time for breakfast."; document1 = tokenizedDocument(str1); str2 = "It's now time to sleep."; document2 = tokenizedDocument(str2);
Найдите расстояние редактирования.
d = editDistance(document1,document2)
d = 3
Это означает изменяться, первый документ второму требует трех редактирований. Например:
Вставка – Вставляет слово "now".
Замена – Замена слово "for" с "to".
Замена – Замена слово "breakfast" с "sleep".
editDistance функция, по умолчанию, возвращает самое низкое количество вставок графемы, удалений и замен, требуемых поменять одну струну другому. Чтобы также включать действие подкачки в вычисление, используйте 'SwapCost' опция.
Во-первых, найдите расстояние редактирования между строками "MATALB" и "MATLAB".
str1 = "MATALB"; str2 = "MATLAB"; d = editDistance(str1,str2)
d = 2
Одно возможное редактирование:
Замените вторым "A" с "L": ("MATALB" к "MATLLB").
Замените вторым "L" с "A": ("MATLLB" к "MATLAB").
Значением по умолчанию для стоимости подкачки (стоимость свопинга двух смежных графем) является Inf. Это означает, что подкачки не рассчитывают к расстоянию редактирования. Чтобы включать подкачки, установите 'SwapCost' опция к 1.
d = editDistance(str1,str2,'SwapCost',1)d = 1
Это означает, что существует одно действие. Например, подкачайте смежные символы "A" и "L".
Чтобы вычислить расстояние редактирования между двумя словами и указать, что редактирования являются нечувствительными к регистру, задайте пользовательскую функцию стоимости замены.
Во-первых, вычислите расстояние редактирования между строками "MATLAB" и "MathWorks".
d = editDistance("MATLAB","MathWorks")
d = 8
Это означает менять первую струну к второму, требует восьми редактирований. Например:
Замена – Замена символьный "A" с "a"MATLAB к "MaTLAB")
Замена – Замена символьный "T" с "t"MATLAB к "MatLAB")
Замена – Замена символьный "L" с "h"MATLAB к "MathAB")
Замена – Замена символьный "A" с "W". ("MathAB" к "MathWB")
Замена – Замена символьный "B" с "o". ("MathWB" к "MathWo")
Вставка – Вставляет символьный "r". ("MathWo" к "MathWor")
Вставка – Вставляет символьный "k". ("MathWor" к "MathWork")
Вставка – Вставляет символьный "s". ("MathWork" к "MathWorks")
Вычислите расстояние редактирования и задайте пользовательскую функцию стоимости замены caseInsensitiveSubstituteCost, перечисленный в конце примера. Пользовательский функциональный caseInsensitiveSubstituteCost возвращается 0, если два входных параметров являются тем же самым или отличаются только случаем, и возвращается 1 в противном случае.
d = editDistance("MATLAB","MathWorks",'SubstituteCost',@caseInsensitiveSubstituteCost)
d = 6
Это означает, что общая стоимость на то, чтобы поменять первую струну к второму равняется 6. Например:
Замена (стоит 0) – Замена символьный "A" с "a"MATLAB к "MaTLAB")
Замена (стоит 0) – Замена символьный "T" с "t"MATLAB к "MatLAB")
Замена (стоит 1) – Замена символьный "L" с "h"MATLAB к "MathAB")
Замена (стоит 1) – Замена символьный "A" с "W". ("MathAB" к "MathWB")
Замена (стоит 1) – Замена символьный "B" с "o". ("MathWB" к "MathWo")
Вставьте (стойте 1) – Вставляют символьный "r". ("MathWo" к "MathWor")
Вставьте (стойте 1) – Вставляют символьный "k". ("MathWor" к "MathWork")
Вставьте (стойте 1) – Вставляют символьный "s". ("MathWork" к "MathWorks")
Пользовательская функция стоимости
Пользовательский функциональный caseInsensitiveSubstituteCost возвращается 0, если два входных параметров являются тем же самым или отличаются только случаем, и возвращается 1 в противном случае.
function cost = caseInsensitiveSubstituteCost(grapheme1,grapheme2) if lower(grapheme1) == lower(grapheme2) cost = 0; else cost = 1; end end
str1 — Исходная строкаИсходная строка в виде массива строк, вектора символов или массива ячеек из символьных векторов.
Если str1 содержит несколько строк, затем str2 должен быть одного размера с str1 или скаляр.
Типы данных: char | string | cell
str2 — Целевая строкаЦелевая строка в виде массива строк, вектора символов или массива ячеек из символьных векторов.
Если str2 содержит несколько строк, затем str1 должен быть одного размера с str2 или скаляр.
Типы данных: char | string | cell
document1 — Исходный документtokenizedDocumentИсходный документ в виде tokenizedDocument массив.
Если document1 содержит несколько документов, затем document2 должен быть одного размера с document1 или скаляр.
document2 — Целевой документtokenizedDocumentЦелевой документ в виде tokenizedDocument массив.
Если document2 содержит несколько документов, затем document1 должен быть одного размера с document2 или скаляр.
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
editDistance("MATALB","MATLAB",'SwapCost',1) возвращает расстояние редактирования между строками "MATALB" и "MATLAB" и устанавливает стоимость подкачивать две смежных графемы к 1.'InsertCost' — Стойте, чтобы вставить графему или лексемуСтойте, чтобы вставить графему или лексему в виде разделенной запятой пары, состоящей из 'InsertCost' и неотрицательный скаляр или указатель на функцию.
Если 'InsertCost' указатель на функцию, затем функция должна принять один вход и возвратить стоимость вставки входа к источнику. Например:
Для входа строки к editDistance, функция стоимости должна иметь форму cost = func(grapheme), куда функция возвращает стоимость вставки grapheme в str1.
Для входа документа к editDistance, функция стоимости должна иметь форму cost = func(token), куда функция возвращает стоимость вставки token в document1.
Пример: 'InsertCost',2
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle
'DeleteCost' — Стойте, чтобы удалить графему или лексемуСтойте, чтобы удалить графему или лексему в виде разделенной запятой пары, состоящей из 'DeleteCost' и неотрицательный скаляр или указатель на функцию.
Если 'DeleteCost' указатель на функцию, затем функция должна принять один вход и возвратить стоимость удаления входа из источника. Например:
Для входа строки к editDistance, функция стоимости должна иметь форму cost = func(grapheme), куда функция возвращает стоимость удаления grapheme от str1.
Для входа документа к editDistance, функция стоимости должна иметь форму cost = func(token), куда функция возвращает стоимость удаления token от document1.
Пример: 'DeleteCost',2
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle
'SubstituteCost' — Стойте, чтобы заменить графемой или лексемойСтойте, чтобы заменить графемой или лексемой в виде разделенной запятой пары, состоящей из 'SubstituteCost' и неотрицательный скаляр или указатель на функцию.
Если 'SubstituteCost' указатель на функцию, затем функция должна принять точно два входных параметров и возвратить стоимость замены первым входом со вторым в источнике. Например:
Для входа строки к editDistance, функция стоимости должна иметь форму cost = func(grapheme1,grapheme2), куда функция возвращает стоимость замены grapheme1 с grapheme2 в str1.
Для входа документа к editDistance, функция стоимости должна иметь форму cost = func(token1,token2), куда функция возвращает стоимость замены token1 с token2 в document1.
Пример: 'SubstituteCost',2
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle
'SwapCost' — Стойте, чтобы подкачать две смежных графемы или лексемыInf (значение по умолчанию) | неотрицательный скаляр | указатель на функциюСтойте, чтобы подкачать две смежных графемы или лексемы в виде разделенной запятой пары, состоящей из 'SwapCost' и неотрицательный скаляр или указатель на функцию.
Если 'SwapCost' указатель на функцию, затем функция должна принять точно два входных параметров и возвратить стоимость свопинга первого входа со вторым в источнике. Например:
Для входа строки к editDistance, функция стоимости должна иметь форму cost = func(grapheme1,grapheme2), куда функция возвращает стоимость свопинга смежных графем grapheme1 и grapheme2 в str1.
Для входа документа к editDistance, функция стоимости должна иметь форму cost = func(token1,token2), куда функция возвращает стоимость свопинга смежных лексем token1 и token2 в document1.
Пример: 'SwapCost',2
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | function_handle
d — Отредактируйте расстояниеОтредактируйте расстояние, возвращенное как неотрицательный скаляр.
Функция, по умолчанию, использует расстояние Левенштейна: самое низкое количество вставок, удалений и замен, требуемых преобразовывать одну строку в другого.
Для других обычно используемых расстояний редактирования используйте эти опции:
| Расстояние | Описание | Опции |
|---|---|---|
| Levenshtein (значение по умолчанию) | самое низкое количество вставок, удалений и замен | Значение по умолчанию |
| Damerau-Levenshtein | самое низкое количество вставок, удалений, замен и подкачек | 'SwapCost',1 |
| Хэмминг | самое низкое количество замен только | 'InsertCost',Inf,'DeleteCost',Inf |
correctSpelling | editDistanceSearcher | knnsearch | rangesearch | splitGraphemes | tokenizedDocument
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.