主要内容

编辑距离搜索器

编辑距离最近邻搜索器

说明

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

创造

说明

例子

电子数据系统=editDistanceSearcher(词汇,最大距离)创建编辑距离搜索器并设置词汇最大距离属性。返回的对象搜索词汇最大编辑距离最大距离.

例子

电子数据系统=editDistanceSearcher(词汇,最大距离,名称、值)使用一个或多个名称-值对参数指定其他选项。

属性

全部展开

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

数据类型:烧焦|一串|细胞

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

数据类型:单一的|双重的|国际8|国际16|国际32|国际64|单位8|单元16|uint32公司|单元64

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

如果插入成本是函数句柄,则函数必须接受单个输入并返回将输入插入源的成本。成本函数必须具有成本=func(grapheme),函数返回插入的成本字位输入源字符串。

如果指定自定义成本函数,则搜索者将执行彻底搜索。对于大型词汇表,函数KNN搜索范围搜索可能需要很长时间才能找到匹配的。

数据类型:单一的|双重的|国际8|国际16|国际32|国际64|单位8|单元16|uint32公司|单元64|功能手柄

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

如果删除成本是函数句柄,则函数必须接受单个输入并返回从源中删除输入的成本。成本函数必须具有成本=func(grapheme),其中函数返回删除的成本字位从源字符串。

如果指定自定义成本函数,则搜索者将执行彻底搜索。对于大型词汇表,函数KNN搜索范围搜索可能需要很长时间才能找到匹配的。

数据类型:单一的|双重的|国际8|国际16|国际32|国际64|单位8|单元16|uint32公司|单元64|功能手柄

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

如果替代成本是函数句柄,则函数必须正好接受两个输入,并返回将源中的第一个输入替换为第二个输入的成本。成本函数必须具有成本=func(grapheme1,grapheme2),其中函数返回替换的成本图示1具有图示2在源头。

如果指定自定义成本函数,则搜索者将执行彻底搜索。对于大型词汇表,函数KNN搜索范围搜索可能需要很长时间才能找到匹配的。

数据类型:单一的|双重的|国际8|国际16|国际32|国际64|单位8|单元16|uint32公司|单元64|功能手柄

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

如果交换成本是函数句柄,则函数必须正好接受两个输入,并返回将源中的第一个输入与第二个输入交换的代价。成本函数必须具有成本=func(grapheme1,grapheme2),其中函数返回交换相邻图形的代价图示1图示2在源头。

如果指定自定义成本函数,则搜索者将执行彻底搜索。对于大型词汇表,函数KNN搜索范围搜索可能需要很长时间才能找到匹配的。

数据类型:单一的|双重的|国际8|国际16|国际32|国际64|单位8|单元16|uint32公司|单元64|功能手柄

目标函数

范围搜索 按编辑距离范围查找最近邻
KNN搜索 按编辑距离查找最近邻居

示例

全部折叠

创建一个最大编辑距离为3的编辑距离搜索词“数学作品”,“MATLAB”,和“分析”.

词汇=[“数学作品”“MATLAB”“分析”]; eds=editDistanceSearcher(词汇表,3)
eds=editDistanceSearcher,属性:词汇:[“MathWorks”“MATLAB”“Analytics”]最大距离:3 InsertCost:1 DeleteCost:1 SubstituteCost:1 SwapCost:Inf

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

根据单词创建编辑距离搜索器“数学作品”,“MATLAB”,和“分析”并指定最大距离3。若要指定Damerau Levenshtein编辑距离,请设置'交换成本'到1。

词汇=[“数学作品”“MATLAB”“分析”]; eds=editDistanceSearcher(词汇表,3,'交换成本',1)
eds=editDistanceSearcher,属性:词汇:[“MathWorks”“MATLAB”“Analytics”]最大距离:3 InsertCost:1 DeleteCost:1 SubstituteCost:1 SwapCost:1

创建编辑距离搜索器。

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

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

字数=[“测试”“分析”]; idx=knnsearch(编辑,单词)
idx公司=2×11 2

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

nearestWords=eds.词汇表(idx)
近义词=1x2串“文本”“分析”

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

词汇=[“数学作品”“MATLAB”“金宝appSimulink”“文本”“分析”“分析”]; 最大距离=3;eds=editDistanceSearcher(词汇表,最大距离);

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

字数=[“测试”“分析性”“分析”]; 最大距离=1;idx=范围搜索(eds、Word、maxDist)
idx公司=3×1细胞阵列{[4]}{[5]}{1x0双精度}

为了“分析”,搜索者中没有指定范围内的单词。为了“测试”“分析性”,各有一个结果。查看对应的单词“测试”使用返回的索引。

nearestWords=eds.词汇表(idx{2})
nearestWords=“分析”

找到最接近的单词“测试”,“分析性”,和“分析”编辑距离小于或等于3及其相应的编辑距离。

字数=[“测试”“分析性”“分析”]; 最大距离=3[idx,d]=范围搜索(eds,单词,最大距离)
idx公司=3×1细胞阵列{[ 4]} {[5 6]} {[ 6]}
d级=3×1细胞阵列{[ 1]} {[1 2]} {[ 3]}

两者皆适用“测试”“分析”,搜索者中有一个词在指定范围内。为了“分析性”,有两个结果。查看对应的单词“分析性”(第二个词)使用返回的索引及其编辑距离。

i=2;nearestWords=eds.词汇表(idx{i})
近义词=1x2串“分析”“分析”
d{i}
答案=1×21 2

算法

全部展开

R2019a引入