我有一个词汇表(字符串向量)和一个充满句子的文件。我想构建一个矩阵,显示每个句子包含每个单词的频率。我目前的实现速度非常慢,我相信这可以更快。大概十个字的一句话,大概需要一分钟。
你能解释一下为什么会这样以及如何加快速度吗?
注意:我使用稀疏矩阵,因为它不适合内存。词汇量大约为 10.000 个单词。运行程序不会耗尽我的工作记忆,所以这不是问题。
这是相关的代码。未提及的变量之前已初始化,如 totalLineCount、vocab 和 vocabCount。
% initiate sentence structure
wordSentenceMatrix = sparse(vocabCount, totalLineCount);
% fill the sentence structure
fid = fopen(fileLocation, 'r');
lineCount = 0;
while ~feof(fid),
line = fgetl(fid);
lineCount = lineCount + 1;
line = strsplit(line, " ");
% go through each word and increase the corresponding value in the matrix
for j=1:size(line,2),
for k=1:vocabCount,
w1 = line(j);
w2 = vocab(k);
if strcmp(w1, w2),
wordSentenceMatrix(k, lineCount) = wordSentenceMatrix(k, lineCount) + 1;
end;
end;
end;
end;