基于向量空间的tfidf方法 matlab代码
时间: 2024-05-04 20:17:56 浏览: 92
以下是一个基于向量空间的tfidf方法的Matlab代码:
```matlab
% 输入文档集合
documents = {'This is the first document.', ...
'This is the second document.', ...
'This is the third document.', ...
'This is the fourth document.', ...
'This is the fifth document.'};
% 创建词汇表
vocab = unique(lower(strsplit(sprintf('%s ', documents{:}))));
vocab = vocab(~cellfun('isempty',vocab));
% 计算每个文档中每个单词的tf
tf = zeros(length(vocab), length(documents));
for i = 1:length(documents)
words = lower(strsplit(documents{i}));
for j = 1:length(vocab)
tf(j, i) = sum(strcmp(words, vocab(j))) / length(words);
end
end
% 计算每个单词的idf
idf = log(length(documents) ./ sum(tf > 0, 2));
% 计算tf-idf矩阵
tfidf = tf .* repmat(idf, [1, length(documents)]);
% 显示tf-idf矩阵
disp(tfidf);
```
该代码将输入文档集合中的每个文档拆分成单词,并创建一个词汇表。然后,它计算每个文档中每个单词的词频(tf),并使用这些值计算每个单词的逆文档频率(idf)。最后,它将tf和idf相乘以计算tf-idf矩阵,并将其显示在屏幕上。
阅读全文