Найдите расстояние между двумя строками или документами
задает дополнительные опции, используя один или несколько аргументы пары "имя-значение".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"
.
The 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
- Расстояние редактированияОтредактируйте расстояние, вернитесь как неотрицательный скаляр.
Функция по умолчанию использует расстояние Левенштейна: самое низкое количество вставок, удалений и замен, необходимых для преобразования одной строки в другую.
Для других обычно используемых расстояний редактирования используйте следующие опции:
Расстояние | Описание | Опции |
---|---|---|
Левенштейн (по умолчанию) | наименьшее количество вставок, удалений и замен | Дефолт |
Дамерау-Левенштейн | наименьшее количество вставок, удалений, замен и свопов | 'SwapCost',1 |
Хэмминг | наименьшее количество замен | 'InsertCost',Inf,'DeleteCost',Inf |
correctSpelling
| editDistanceSearcher
| knnsearch
| rangesearch
| splitGraphemes
| tokenizedDocument
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.