主要内容

editDistance

查找两个字符串或文档之间的编辑距离

描述

例子

d= EditDistance(str1,str2返回转换所需插入、删除和替换的最低数量的字素(用于人类理解的字符的Unicode术语)str1str2

例子

d= EditDistance(文件1,文件2.返回转换所需的令牌插入、删除和替换的最低数量文件1文件2.

例子

d= EditDistance(___,名称,值使用一个或多个名称值对参数指定其他选项。

例子

全部折叠

找到字符串之间的编辑距离“文本分析”“文本分析”.默认情况下,编辑距离是将一个字符串更改为另一个字符串所需的图形插入,删除和替换的总数。

str1 =“文本分析”;str2 =“文本分析”

找到编辑距离。

d = editDistance (str1 str2)
d = 2.

这意味着将第一个字符串更改为第二个字符串需要两个编辑。例如:

  1. 替换 - 替代角色“t”到一个“s”“文本分析”“文本analysics”

  2. 删除 - 删除字符“C”“文本analysics”“文本分析”

找到两个令牌文档之间的编辑距离。对于令牌化文档输入,默认情况下,编辑距离是将一个文档更改为另一个文档所需的令牌插入,删除和替换的总数。

str1 =“这是早餐的时候。”;document1 = tokenizeddocument(str1);str2 =“现在该睡觉了。”;document2 = tokenizeddocument(str2);

找到编辑距离。

d = editDistance (document1 document2)
d = 3.

这意味着将第一个文档更改为第二个文档需要三次编辑。例如:

  1. 插入 - 插入单词“现在”

  2. 替换-替换单词“对””到“

  3. 替换-替换单词“早餐”“睡觉”

editDistance函数在默认情况下返回将一个字符串更改为另一个字符串所需的字素插入、删除和替换的最低数量。要在计算中包含交换操作,请使用'swapcost'选项。

首先,找到字符串之间的编辑距离“MATALB”“matlab”

str1 =“MATALB”;str2 =“matlab”;d = editDistance (str1 str2)
d = 2.

一个可能的编辑是:

  1. 用第二个“一种”“L”:(“MATALB”“MATLLB”).

  2. 用第二个“L”“一种”:(“MATLLB”“matlab”).

交换成本(交换两个相邻字母的成本)的默认值是inf.这意味着交换不计入编辑距离。要包含交换,请设置'swapcost'选项1。

d = EditDistance(str1,str2,'swapcost'1)
d = 1

这意味着有一个动作。例如,交换相邻的字符“一种”“L”

若要计算两个单词之间的编辑距离并指定编辑不区分大小写,请指定自定义替代cost函数。

首先,计算字符串之间的编辑距离“matlab”“MathWorks”

d = editDistance (“matlab”,“MathWorks”
d = 8.

这意味着将第一个字符串更改为第二个需要8次编辑。例如:

  1. 替换 - 替代角色“一种”“一种”.(“matlab”“MaTLAB”

  2. 替换 - 替代角色“T”“t”.(“MaTLAB”“MatLAB”

  3. 替换 - 替代角色“L”“h”.(“MatLAB”“MathAB”

  4. 替换 - 替代角色“一种”“w”.(“MathAB”“MathWB”

  5. 替换 - 替代角色“b”“o”.(“MathWB”“MathWo”

  6. 插入 - 插入字符“r”.(“MathWo”“mathwor”

  7. 插入 - 插入字符“k”.(“mathwor”“mathwork”

  8. 插入 - 插入字符“s”.(“mathwork”“MathWorks”

计算编辑距离并指定自定义替换成本函数酪蛋白肌肉用来,列在示例的最后。自定义函数酪蛋白肌肉用来如果两个输入按大小写相同或不同,则返回0,否则返回1。

d = editDistance (“matlab”,“MathWorks”,“SubstituteCost”@caseInsensitiveSubstituteCost)
d = 6.

这意味着将第一个字符串更改为第二个字符串的总成本是6。例如:

  1. 替换(代价0)-替换字符“一种”“一种”.(“matlab”“MaTLAB”

  2. 替换(代价0)-替换字符“T”“t”.(“MaTLAB”“MatLAB”

  3. 替换(代价1)-替换角色“L”“h”.(“MatLAB”“MathAB”

  4. 替换(代价1)-替换角色“一种”“w”.(“MathAB”“MathWB”

  5. 替换(代价1)-替换角色“b”“o”.(“MathWB”“MathWo”

  6. 插入(成本1) - 插入字符“r”.(“MathWo”“mathwor”

  7. 插入(成本1) - 插入字符“k”.(“mathwor”“mathwork”

  8. 插入(成本1) - 插入字符“s”.(“mathwork”“MathWorks”

定制成本函数

自定义函数酪蛋白肌肉用来如果两个输入按大小写相同或不同,则返回0,否则返回1。

函数成本= caseInsensitivesubstitutututututectutectut(grapheme1,grapheme2)如果drawtext (grapheme1) == drawtext (grapheme2) = 0;其他的成本= 1;结束结束

输入参数

全部折叠

源字符串,指定为字符串阵列,字符向量或字符向量的单元格数组。

如果str1包含多个字符串,然后str2必须和str1或标量。

数据类型:char|细绳|细胞

目标字符串,指定为字符串数组,字符向量或字符向量的单元格数组。

如果str2包含多个字符串,然后str1必须和str2或标量。

数据类型:char|细绳|细胞

源文档,指定为atokenizedDocument数组中。

如果文件1包含多个文档,然后文件2.必须和文件1或标量。

目标文件,指定为atokenizedDocument数组中。

如果文件2.包含多个文档,然后文件1必须和文件2.或标量。

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。姓名参数名和价值为对应值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:editDistance(“MATALB”、“MATLAB”、“SwapCost”,1)返回字符串之间的编辑距离“MATALB”“matlab”并设置将两个相邻图形交换为1的成本。

插入由逗号分隔的字符对组成的字素或令牌的开销'insertcost'和非负标量或功能手柄。

如果'insertcost'是一个函数句柄,那么功能必须接受一个输入并返回将输入插入源的成本。例如:

  • 为字符串输入editDistance,成本函数必须具有表单成本= Func(图形),函数返回插入的代价图形进入str1

  • 用于文件输入editDistance,成本函数必须具有表单成本= Func(令牌),函数返回插入的代价令牌进入文件1

例子:“InsertCost”,2

数据类型:单身的|双倍的|int8|INT16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|function_handle

删除图形或令牌的成本,指定为逗号分隔的配对'deletecost'和非负标量或功能手柄。

如果'deletecost'是函数句柄,则该函数必须接受单个输入并返回从源删除输入的代价。例如:

  • 为字符串输入editDistance,成本函数必须具有表单成本= Func(图形),函数返回删除的成本图形str1

  • 用于文件输入editDistance,成本函数必须具有表单成本= Func(令牌),函数返回删除的成本令牌文件1

例子:'deletecost',2

数据类型:单身的|双倍的|int8|INT16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|function_handle

替换由逗号分隔对组成的字素或令牌的代价“SubstituteCost”和非负标量或功能手柄。

如果“SubstituteCost”是功能句柄,那么该功能必须完全接受两个输入,并返回代替源中的第二个输入的成本。例如:

  • 为字符串输入editDistance,成本函数必须具有表单成本= func(grapheme1,grapheme2),该功能返回代替成本的情况下grapheme1.grapheme2.str1

  • 用于文件输入editDistance,成本函数必须具有表单成本= func(token1,token2),该功能返回代替成本的情况下token1token2文件1

例子:“SubstituteCost”,2

数据类型:单身的|双倍的|int8|INT16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|function_handle

交换两个相邻的字母或标记的代价,指定为逗号分隔对,由'swapcost'和非负标量或功能手柄。

如果'swapcost'是函数句柄,则该函数必须接受两个输入,并返回源文件中第一个输入与第二个输入交换的代价。例如:

  • 为字符串输入editDistance,成本函数必须具有表单成本= func(grapheme1,grapheme2),该功能返回交换相邻图形的成本grapheme1.grapheme2.str1

  • 用于文件输入editDistance,成本函数必须具有表单成本= func(token1,token2),该函数返回交换相邻令牌的成本token1token2文件1

例子:“SwapCost”,2

数据类型:单身的|双倍的|int8|INT16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|function_handle

输出参数

全部折叠

编辑距离,作为非负标量返回。

算法

全部折叠

编辑距离

默认情况下,该函数使用Levenshtein距离:将一个字符串转换为另一个字符串所需的最低次数,删除和替换数。

对于其他常用的编辑距离,请使用以下选项:

距离 描述 选项
Levenshtein(默认) 最低数量的插入,删除和替换 默认的
Damerau-Levenshtein. 最低数量的插入,删除,替换和掉期 “SwapCost”,1
汉明 仅限替换数量 'insertcost',inf,'deletecost',inf

介绍了R2019a