主要内容

editDistanceSearcher

编辑距离最近邻搜索器

描述

编辑距离搜索器使用编辑距离在已知字符串列表中执行最近邻搜索。

创建

描述

例子

eds= editDistanceSearcher (词汇表maxDist创建编辑距离搜索器并设置词汇表而且MaximumDistance属性。返回的对象搜索单词词汇表并且具有最大的编辑距离maxDist

例子

eds= editDistanceSearcher (词汇表maxDist名称,值使用一个或多个名称-值对参数指定其他选项。

属性

全部展开

要进行比较的词,指定为字符串向量、字符向量或字符向量的单元格数组。

数据类型:字符|字符串|细胞

最大编辑距离,指定为正标量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

插入grapheme的开销,指定为非负标量或函数句柄。

如果InsertCost是函数句柄,则该函数必须接受单个输入并返回将输入插入到源的代价。代价函数必须有形式Cost = func(grapheme),其中函数返回插入的代价字母到源字符串中。

如果指定了自定义代价函数,那么搜索器将执行详尽的搜索。对于大型词汇表,函数knnsearch而且rangesearch要花很长时间才能找到匹配的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|function_handle

删除grapheme的开销,指定为非负标量或函数句柄。

如果DeleteCost是函数句柄,则该函数必须接受单个输入并返回从源中删除输入的代价。代价函数必须有形式Cost = func(grapheme),其中函数返回删除的代价字母从源字符串。

如果指定了自定义代价函数,那么搜索器将执行详尽的搜索。对于大型词汇表,函数knnsearch而且rangesearch要花很长时间才能找到匹配的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|function_handle

替换grapheme的开销,指定为非负标量或函数句柄。

如果SubstituteCost是函数句柄,则该函数必须恰好接受两个输入,并返回将第一个输入替换为源中的第二个输入的代价。代价函数必须有形式Cost = func(grapheme1,grapheme2),函数返回替换的代价grapheme1grapheme2在源头上。

如果指定了自定义代价函数,那么搜索器将执行详尽的搜索。对于大型词汇表,函数knnsearch而且rangesearch要花很长时间才能找到匹配的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|function_handle

交换相邻字素的开销,指定为非负标量或函数句柄。

如果SwapCost是函数句柄,则该函数必须恰好接受两个输入,并返回将第一个输入与源中的第二个输入交换的代价。代价函数必须有形式Cost = func(grapheme1,grapheme2),函数返回交换相邻字素的代价grapheme1而且grapheme2在源头上。

如果指定了自定义代价函数,那么搜索器将执行详尽的搜索。对于大型词汇表,函数knnsearch而且rangesearch要花很长时间才能找到匹配的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|function_handle

对象的功能

rangesearch 通过编辑距离范围找到最近的邻居
knnsearch 通过编辑距离找到最近的邻居

例子

全部折叠

创建一个与单词的最大编辑距离为3的编辑距离搜索器“MathWorks”“MATLAB”,“分析”

词汇= [“MathWorks”“MATLAB”“分析”];eds = editDistanceSearcher(词汇,3)
词汇:["MathWorks" "MATLAB" "Analytics"] MaximumDistance: 3 InsertCost: 1 DeleteCost: 1 SubstituteCost: 1 SwapCost: Inf

使用Damerau-Levenshtein编辑距离创建一个编辑距离搜索器。Damerau-Levenshtein编辑距离是插入、删除、替换和交换的最少数量。

从单词创建编辑距离搜索器“MathWorks”“MATLAB”,“分析”并指定最大距离为3。要指定Damerau-Levenshtein编辑距离,请设置“SwapCost”为1。

词汇= [“MathWorks”“MATLAB”“分析”];editDistanceSearcher(词汇,3,“SwapCost”, 1)
词汇:["MathWorks" "MATLAB" "Analytics"] MaximumDistance: 3 InsertCost: 1 DeleteCost: 1 SubstituteCost: 1 SwapCost: 1

创建一个编辑距离搜索器。

词汇= [“文本”“分析”“工具箱”];eds = editDistanceSearcher(词汇,2);

找到最接近的单词“测试”而且“分析”

文字= [“测试”“分析”];Idx = knnsearch(eds,words)
idx =2×11 2

使用返回的索引从词汇表中获取单词。

nearestWords = eds.Vocabulary(idx)
nearestWords =1 x2字符串“文本”“分析”

创建编辑距离搜索器并指定最大编辑距离为3。

词汇= [“MathWorks”“MATLAB”“模型”“文本”“分析”“分析”];maxDist = 3;eds = editDistanceSearcher(词汇表,maxDist);

找到最接近的单词“测试”“分析”,“分析”编辑距离小于或等于1。

文字= [“测试”“分析”“分析”];maxDist = 1;idx = rangesearch(eds,words,maxDist)
idx =3×1单元格数组{[4]} {[5]} {1x0 double}

“分析”时,搜索器中没有指定范围内的单词。为“测试”而且“分析”,每个都有一个结果。查看对应的单词“测试”使用返回的索引。

nearestWords = eds.Vocabulary(idx{2})
nearestWords = "analytics"

找到最接近的单词“测试”“分析”,“分析”编辑距离小于或等于3和它们对应的编辑距离。

文字= [“测试”“分析”“分析”];maxDist = 3;[idx,d] = rangesearch(eds,words,maxDist)
idx =3×1单元格数组{[4]} {[5 6]} {[6]}
d =3×1单元格数组{[1]} {[1 2]} {[3]}

对于这两个“测试”而且“分析”,在指定范围内的搜索器中有一个单词。为“分析”,有两个结果。查看对应的单词“分析”(第二个词)使用返回的索引和它们的编辑距离。

I = 2;nearestWords = eds.Vocabulary(idx{i})
nearestWords =1 x2字符串“分析”“分析”
d{我}
ans =1×21 2

算法

全部展开

版本历史

在R2019a中引入

Baidu
map