Main Content

knnsearch

編集距離による最近傍の検出

説明

idx = knnsearch(eds,words) は、words の各要素に対する編集距離探索器 eds で最近傍のインデックスを検出します。

[idx,d] = knnsearch(eds,words) は、words の要素と最近傍要素の間の編集距離も返します。

[idx,d] = knnsearch(eds,words,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、追加のオプションを指定します。

すべて折りたたむ

編集距離探索器を作成します。

vocabulary = ["Text" "Analytics" "Toolbox"];
eds = editDistanceSearcher(vocabulary,2);

"Test""Analysis" に最も近い単語を見つけます。

words = ["Test" "Analysis"];
idx = knnsearch(eds,words)
idx = 2×1

     1
     2

返されたインデックスを使用してボキャブラリから単語を取得します。

nearestWords = eds.Vocabulary(idx)
nearestWords = 1x2 string
    "Text"    "Analytics"

編集距離探索器を作成します。

vocabulary = ["MATLAB" "Text" "Analytics" "Toolbox"];
eds = editDistanceSearcher(vocabulary,2);

"Test""Analysis" に最も近い単語とその編集距離を検出します。

words = ["Test" "Analysis"];
[idx,d] = knnsearch(eds,words)
idx = 2×1

     2
     3

d = 2×1

     1
     2

返されたインデックスを使用してボキャブラリから単語を取得します。

nearestWords = eds.Vocabulary(idx)
nearestWords = 1x2 string
    "Text"    "Analytics"

"Test" という単語を "Text" に変更するには、1 回の編集 (置換) が必要です。"Analysis" という単語を "Analytics" に変更するには、2 回の編集 (置換と挿入) が必要です。

編集距離探索器を作成します。

vocabulary = ["MathWorks" "MATLAB" "Analytics"];
eds = editDistanceSearcher(vocabulary,5);

最も近い 2 つの単語、およびそれらから "Math""Analysis" までの編集距離を検出します。

words = ["Math" "Analysis"];
idx = knnsearch(eds,words,'K',2)
idx = 2×2

     1     2
     3   NaN

"Math" に最も近い 2 つの単語を表示します。

idxMath = idx(1,:);
newWords = eds.Vocabulary(idxMath)
newWords = 1x2 string
    "MathWorks"    "MATLAB"

"Analysis" からの最大編集距離内に単語が 1 つしかないため、関数は他のインデックスに対して NaN を返します。有効なインデックスをもつ最も近い単語を表示します。

idxAnalysis = idx(2,:);
idxAnalysis(isnan(idxAnalysis)) = [];
newWords = eds.Vocabulary(idxAnalysis)
newWords = 
"Analytics"

入力引数

すべて折りたたむ

編集距離探索器。editDistanceSearcher オブジェクトとして指定します。

入力単語。string ベクトル、文字ベクトル、または文字ベクトルの cell 配列として指定します。words を文字ベクトルとして指定した場合、関数は引数を 1 つの単語として扱います。

データ型: string | char | cell

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: knnsearch(eds,words,'K',3) は、words の要素に対する 3 つの最近傍を eds 内で見つけます。

words 内の各要素について検出する最近傍の数。正の整数として指定します。

例: 'K',3

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

等しい距離値をもつ近傍を返すオプション。true または false として指定します。

'IncludeTies'false の場合、関数は編集距離が最も短い K 個の近傍を返します。ここで、K は検出する近傍の数です。この場合、関数は N 行 K 列の行列を出力します。ここで、N は入力単語の数です。K を指定するには、名前と値のペアの引数 'K' を使用します。

'IncludeTies'true の場合、関数は出力内の下位 K 位の距離に等しい距離をもつ近傍も返します。この場合、関数は N 行 1 列のサイズの cell 配列を出力します。ここで、N は入力単語の数です。cell 配列の要素は、少なくとも K 個の要素をもつベクトルです。この関数は、各ベクトル内の近傍を距離の昇順で並べ替えます。

例: 'IncludeTies',true

データ型: logical

出力引数

すべて折りたたむ

探索器内の最近傍のインデックス。行列またはベクトルの cell 配列として返されます。

'IncludeTies'false の場合、関数は編集距離が最も短い K 個の近傍を返します。ここで、K は検出する近傍の数です。この場合、関数は N 行 K 列の行列を出力します。ここで、N は入力単語の数です。K を指定するには、名前と値のペアの引数 'K' を使用します。

'IncludeTies'true の場合、関数は出力内の下位 K 位の距離に等しい距離をもつ近傍も返します。この場合、関数は N 行 1 列のサイズの cell 配列を出力します。ここで、N は入力単語の数です。cell 配列の要素は、少なくとも K 個の要素をもつベクトルです。この関数は、各ベクトル内の近傍を距離の昇順で並べ替えます。

データ型: double | cell

近傍までの編集距離。行列またはベクトルの cell 配列として返されます。

'IncludeTies'false の場合、関数は編集距離が最も短い K 個の近傍を返します。ここで、K は検出する近傍の数です。この場合、関数は N 行 K 列の行列を出力します。ここで、N は入力単語の数です。K を指定するには、名前と値のペアの引数 'K' を使用します。

'IncludeTies'true の場合、関数は出力内の下位 K 位の距離に等しい距離をもつ近傍も返します。この場合、関数は N 行 1 列のサイズの cell 配列を出力します。ここで、N は入力単語の数です。cell 配列の要素は、少なくとも K 個の要素をもつベクトルです。この関数は、各ベクトル内の近傍を距離の昇順で並べ替えます。

データ型: double | cell

バージョン履歴

R2019a で導入