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
这意味着将第一个字符串更改为第二个字符串需要八次编辑。例如:
替换——替换字符
“一个”
与“一个”
.(“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。
函数成本= caseInsensitiveSubstituteCost (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命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。