Main Content

knnsearch

편집 거리로 최근접이웃 찾기

R2019a 이후

설명

예제

idx = knnsearch(eds,words)는 편집 거리 탐색기 eds에서 words의 각 요소에 대한 최근접이웃의 인덱스를 찾습니다.

예제

[idx,d] = knnsearch(eds,words)words의 요소와 최근접이웃 사이의 편집 거리도 반환합니다.

예제

[idx,d] = knnsearch(eds,words,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 추가로 지정합니다.

예제

모두 축소

편집 거리 탐색기를 만듭니다.

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"로 변경하려면 한 번의 편집(치환)이 필요합니다. 단어 "Analysis""Analytics"로 변경하려면 두 번 편집(치환과 삽입)이 필요합니다.

편집 거리 탐색기를 만듭니다.

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

"Math""Analysis"에 가장 가까운 단어 2개를 각각 찾고 편집 거리를 구합니다.

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형 벡터, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. words를 문자형 벡터로 지정할 경우 이 함수는 인수를 단일 단어로 처리합니다.

데이터형: string | char | cell

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 각 이름과 값을 쉼표로 구분하고 Name을 따옴표로 묶으십시오.

예: knnsearch(eds,words,'K',3)eds에서 words의 요소에 대한 최근접이웃 3개를 찾습니다.

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 크기의 셀형 배열을 출력합니다. 여기서 N은 입력 단어의 개수입니다. 셀형 배열의 요소는 최소 K개의 요소를 가진 벡터입니다. 함수는 각 벡터의 이웃을 거리 오름차순으로 정렬합니다.

예: 'IncludeTies',true

데이터형: logical

출력 인수

모두 축소

탐색기 내 최근접이웃의 인덱스로, 행렬로 반환되거나 벡터로 구성된 셀형 배열로 반환됩니다.

'IncludeTies'false이면 함수는 편집 거리가 가장 짧은 K개 이웃을 반환합니다. 여기서 K는 찾을 이웃의 개수입니다. 이 경우 함수는 N×K 행렬을 출력합니다. 여기서 N은 입력 단어의 개수입니다. K를 지정하려면 'K' 이름-값 쌍 인수를 사용합니다.

'IncludeTies'true이면 함수는 K번째 최소 거리와 동일한 거리를 갖는 이웃도 출력값으로 반환합니다. 이 경우 함수는 N×1 크기의 셀형 배열을 출력합니다. 여기서 N은 입력 단어의 개수입니다. 셀형 배열의 요소는 최소 K개의 요소를 가진 벡터입니다. 함수는 각 벡터의 이웃을 거리 오름차순으로 정렬합니다.

데이터형: double | cell

이웃에 대한 편집 거리로, 행렬로 반환되거나 벡터로 구성된 셀형 배열로 반환됩니다.

'IncludeTies'false이면 함수는 편집 거리가 가장 짧은 K개 이웃을 반환합니다. 여기서 K는 찾을 이웃의 개수입니다. 이 경우 함수는 N×K 행렬을 출력합니다. 여기서 N은 입력 단어의 개수입니다. K를 지정하려면 'K' 이름-값 쌍 인수를 사용합니다.

'IncludeTies'true이면 함수는 K번째 최소 거리와 동일한 거리를 갖는 이웃도 출력값으로 반환합니다. 이 경우 함수는 N×1 크기의 셀형 배열을 출력합니다. 여기서 N은 입력 단어의 개수입니다. 셀형 배열의 요소는 최소 K개의 요소를 가진 벡터입니다. 함수는 각 벡터의 이웃을 거리 오름차순으로 정렬합니다.

데이터형: double | cell

버전 내역

R2019a에 개발됨