2015-12-13 30 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 
} 
相关问题