2015-12-13 65 views
1

我在Octave/Matlab中創建MinHash和LSH。但我試圖從一個給定的文檔中得到一個k個大小的集合(單元數組或數組),我不知道該怎麼做。從文本文件(八度)創建一組帶狀皰疹

我現在所擁有的就是這個簡單的代碼:

doc = fopen(document); 
i = 1; 
while (! feof(doc)) 
    txt{i} = strread(fgetl(doc), '%s'); 
    i++; 
endwhile 
fclose(doc); 

這一切從文件的每一行,這是一個說法,我想要做的功能的話創建一​​個單元陣列。

+0

而且什麼問題或問題? – Andy

+0

問題是創建一個MinHash和局部敏感散列來查找類似的項目(使用Jaccard相似性),並且爲此我需要從文檔創建一組帶有參數的帶狀皰疹。我想返回一個帶有k大小的瓦片的集合,例如5個瓦片意味着每個單元格將有5個單詞。 – nkt09

+0

請解釋在這種情況下術語帶狀皰疹的含義。一個特定的輸入/輸出例子會有所幫助。 –

回答

0

此代碼可能會訣竅。 它從單元格數組中讀取並創建指定大小的瓦片(n-grams)。

function S = shingles(txt, shingle_size) 
    l = size(txt)(2) - shingle_size + 1; 
    for i = 1:l 
    t=''; 
    for j = i:(i + shingle_size - 2) 
     t = strcat(t,txt{j},' '); 
    end 
    t = strcat(t, txt{i + shingle_size - 1}); 
    S{i} = t; 
    end 

您可以測試與下面的示例代碼:

txt={'a','b','c'} 
shingles(txt, 2) 
S = 
{ 
    [1,1] = ab 
    [1,2] = bc 
} 
相關問題