knnsearch
編集距離による最近傍の検出
説明
例
最も近い単語の検出
編集距離探索器を作成します。
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"
入力引数
eds
— 編集距離探索器
editDistanceSearcher
編集距離探索器。editDistanceSearcher
オブジェクトとして指定します。
words
— 入力単語
string ベクトル | 文字ベクトル | 文字ベクトルの cell 配列
入力単語。string ベクトル、文字ベクトル、または文字ベクトルの cell 配列として指定します。words
を文字ベクトルとして指定した場合、関数は引数を 1 つの単語として扱います。
データ型: string
| char
| cell
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name
を引用符で囲みます。
例: knnsearch(eds,words,'K',3)
は、words
の要素に対する 3 つの最近傍を eds
内で見つけます。
K
— 検出する最近傍の数
1 (既定値) | 正の整数
words
内の各要素について検出する最近傍の数。正の整数として指定します。
例: 'K',3
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
IncludeTies
— 等しい距離値をもつ近傍を含めるオプション
false
(既定値) | true
等しい距離値をもつ近傍を返すオプション。true
または false
として指定します。
'IncludeTies'
が false
の場合、関数は編集距離が最も短い K 個の近傍を返します。ここで、K は検出する近傍の数です。この場合、関数は N 行 K 列の行列を出力します。ここで、N は入力単語の数です。K を指定するには、名前と値のペアの引数 'K'
を使用します。
'IncludeTies'
が true
の場合、関数は出力内の下位 K 位の距離に等しい距離をもつ近傍も返します。この場合、関数は N 行 1 列のサイズの cell 配列を出力します。ここで、N は入力単語の数です。cell 配列の要素は、少なくとも K 個の要素をもつベクトルです。この関数は、各ベクトル内の近傍を距離の昇順で並べ替えます。
例: 'IncludeTies',true
データ型: logical
出力引数
idx
— 探索器内の最近傍のインデックス
行列 | ベクトルの cell 配列
探索器内の最近傍のインデックス。行列またはベクトルの cell 配列として返されます。
'IncludeTies'
が false
の場合、関数は編集距離が最も短い K 個の近傍を返します。ここで、K は検出する近傍の数です。この場合、関数は N 行 K 列の行列を出力します。ここで、N は入力単語の数です。K を指定するには、名前と値のペアの引数 'K'
を使用します。
'IncludeTies'
が true
の場合、関数は出力内の下位 K 位の距離に等しい距離をもつ近傍も返します。この場合、関数は N 行 1 列のサイズの cell 配列を出力します。ここで、N は入力単語の数です。cell 配列の要素は、少なくとも K 個の要素をもつベクトルです。この関数は、各ベクトル内の近傍を距離の昇順で並べ替えます。
データ型: double
| cell
d
— 近傍までの編集距離
行列 | ベクトルの cell 配列
近傍までの編集距離。行列またはベクトルの cell 配列として返されます。
'IncludeTies'
が false
の場合、関数は編集距離が最も短い K 個の近傍を返します。ここで、K は検出する近傍の数です。この場合、関数は N 行 K 列の行列を出力します。ここで、N は入力単語の数です。K を指定するには、名前と値のペアの引数 'K'
を使用します。
'IncludeTies'
が true
の場合、関数は出力内の下位 K 位の距離に等しい距離をもつ近傍も返します。この場合、関数は N 行 1 列のサイズの cell 配列を出力します。ここで、N は入力単語の数です。cell 配列の要素は、少なくとも K 個の要素をもつベクトルです。この関数は、各ベクトル内の近傍を距離の昇順で並べ替えます。
データ型: double
| cell
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)