editDistance
查找两个字符串或文档之间的编辑距离
描述
例子
编辑两个字符串之间的距离
查找字符串之间的编辑距离“文本分析”
而且“文本分析”
.默认情况下,编辑距离是将一个字符串更改为另一个字符串所需的字形插入、删除和替换的总数。
str1 =“文本分析”;str2 =“文本分析”;
找到编辑距离。
d = editDistance(str1,str2)
D = 2
这意味着将第一个字符串更改为第二个字符串需要两次编辑。例如:
替换——替换字符
“t”
到一个“s”
:“文本分析”
来“文本analysics”
.删除—删除字符
“c”
:“文本analysics”
来“文本分析”
.
编辑两个文档之间的距离
找到两个标记文档之间的编辑距离。对于标记化文档输入,默认情况下,编辑距离是将一个文档更改为另一个文档所需的标记插入、删除和替换的总数。
str1 =“该吃早饭了。”;document1 = tokenizedDocument(str1);str2 =“现在该睡觉了。”;document2 = tokenizedDocument(str2);
找到编辑距离。
d = editDistance(document1,document2)
D = 3
这意味着将第一个文档更改为第二个文档需要三次编辑。例如:
插入-插入单词
“现在”
.替换——替换单词
“对”
与”到“
.替换——替换单词
“早餐”
与“睡眠”
.
指定成本值
的editDistance
函数在默认情况下,返回将一个字符串更改为另一个字符串所需的字形插入、删除和替换的最低数量。要在计算中也包括交换操作,请使用“SwapCost”
选择。
首先,找到字符串之间的编辑距离“MATALB”
而且“MATLAB”
.
str1 =“MATALB”;str2 =“MATLAB”;d = editDistance(str1,str2)
D = 2
一种可能的编辑是:
代入第二个
“一个”
与“L”
: (“MATALB”
来“MATLLB”
).代入第二个
“L”
与“一个”
: (“MATLLB”
来“MATLAB”
).
交换代价(交换两个相邻石墨素的代价)的默认值是正
.这意味着交换不计入编辑距离。要包括掉期,请设置“SwapCost”
选项1。
d = editDistance(str1,str2,“SwapCost”, 1)
D = 1
这意味着只有一个动作。例如,交换相邻的字符“一个”
而且“L”
.
指定自定义成本函数
若要计算两个单词之间的编辑距离并指定编辑不区分大小写,请指定自定义替换代价函数。
首先,计算字符串之间的编辑距离“MATLAB”
而且“MathWorks”
.
d = editDistance(“MATLAB”,“MathWorks”)
D = 8
这意味着将第一个字符串更改为第二个字符串需要8次编辑。例如:
替换——替换字符
“一个”
与“一个”
.(“MATLAB”
来“MaTLAB”
)替换——替换字符
“T”
与“t”
.(“MaTLAB”
来“MatLAB”
)替换——替换字符
“L”
与“h”
.(“MatLAB”
来“MathAB”
)替换——替换字符
“一个”
与“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)-替换字符
“一个”
与“一个”
.(“MATLAB”
来“MaTLAB”
)替换(花费0)-替换字符
“T”
与“t”
.(“MaTLAB”
来“MatLAB”
)替换(花费1)-替换角色
“L”
与“h”
.(“MatLAB”
来“MathAB”
)替换(花费1)-替换角色
“一个”
与“W”
.(“MathAB”
来“MathWB”
)替换(花费1)-替换角色
“B”
与“o”
.(“MathWB”
来“MathWo”
)插入(花费1)-插入字符
“r”
.(“MathWo”
来“MathWor”
)插入(花费1)-插入字符
“k”
.(“MathWor”
来“MathWork”
)插入(花费1)-插入字符
“s”
.(“MathWork”
来“MathWorks”
)
自定义成本函数
自定义函数caseInsensitiveSubstituteCost
如果两个输入相同或仅大小写不同则返回0,否则返回1。
函数cost = caseinsensitivesubstitecost (grapheme1,grapheme2)如果Lower (grapheme1) == Lower (grapheme2) cost = 0;其他的成本= 1;结束结束
输入参数
str1
- - - - - -源字符串
字符串数组|特征向量|字符向量的单元格数组
str2
- - - - - -目标字符串
字符串数组|特征向量|字符向量的单元格数组
document1
- - - - - -源文档
tokenizedDocument
源文档,指定为tokenizedDocument
数组中。
如果document1
那么,包含多个文档document2
一定要和document1
或标量。
document2
- - - - - -目标文档
tokenizedDocument
目标文档,指定为tokenizedDocument
数组中。
如果document2
那么,包含多个文档document1
一定要和document2
或标量。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:editDistance(“MATALB”、“MATLAB”、“SwapCost”,1)
返回字符串之间的编辑距离“MATALB”
而且“MATLAB”
并将交换两个相邻石墨烯的代价设置为1。
InsertCost
- - - - - -插入字素或标记的代价
1(默认)|负的标量|函数处理
插入字素或标记的开销,指定为逗号分隔的对,由“InsertCost”
和非负标量或函数句柄。
如果“InsertCost”
是函数句柄,则该函数必须接受单个输入并返回将输入插入源的代价。例如:
例子:“InsertCost”,2
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|function_handle
DeleteCost
- - - - - -删除字母或标记的代价
1(默认)|负的标量|函数处理
删除字母或标记的代价,指定为逗号分隔的对,由“DeleteCost”
和非负标量或函数句柄。
如果“DeleteCost”
是函数句柄,则该函数必须接受单个输入并返回从源中删除输入的代价。例如:
例子:“DeleteCost”,2
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|function_handle
SubstituteCost
- - - - - -替换字母或符号的成本
1(默认)|负的标量|函数处理
替换字素或标记的开销,指定为逗号分隔的对,由“SubstituteCost”
和非负标量或函数句柄。
如果“SubstituteCost”
是函数句柄,则该函数必须恰好接受两个输入,并返回用源中的第二个输入替换第一个输入的代价。例如:
例子:“SubstituteCost”,2
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|function_handle
SwapCost
- - - - - -交换两个相邻字母或符号的成本
正
(默认)|负的标量|函数处理
交换两个相邻字母或符号的代价,指定为由逗号分隔的对组成“SwapCost”
和非负标量或函数句柄。
如果“SwapCost”
是函数句柄,则该函数必须恰好接受两个输入,并返回源中第一个输入与第二个输入交换的代价。例如:
例子:“SwapCost”,2
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|function_handle
输出参数
d
-编辑距离
负的标量
编辑距离,作为非负标量返回。
算法
编辑距离
默认情况下,该函数使用Levenshtein距离:将一个字符串转换为另一个字符串所需的插入、删除和替换的最少数量。
对于其他常用的编辑距离,使用这些选项:
距离 | 描述 | 选项 |
---|---|---|
Levenshtein(默认) | 插入、删除和替换的最少数量 | 默认的 |
Damerau-Levenshtein | 插入、删除、替换和交换的最少数量 | “SwapCost”,1 |
汉明 | 只有最低的替换数 | “InsertCost”,正无穷,DeleteCost,正无穷 |
版本历史
在R2019a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。