我有一個詞彙(字符串的矢量)和一個充滿句子的文件。我想要構造一個矩陣來顯示每個句子包含每個單詞的頻率。我目前的執行速度非常慢,我相信這可以更快。一個約十個單詞的句子需要幾分鐘的時間。構建單詞矩陣時八度非常慢
你能解釋一下爲什麼這樣以及如何加快速度?
備註: 我使用稀疏矩陣,因爲它不適合內存。 詞彙大小約爲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;
謝謝,這個作品完美。 –