作者Jolinda (Jolinda)
看板MATLAB
标题[问题]关於TF-IDF字词权重程式码
时间Sun Mar 23 17:27:57 2014
小妹我最近在网路上下载计算字词权重tf-idf的程式码
我在matlab输入一个简单的term-document矩阵
假设有一篇文章有1000个Terms,t1出现10次、t2出现100次、t3出现30次
算出来的tf-idf值应该分别是 0.0282、0及0.009
但下面程式码算出来都是 5.809、5.809、5.809
是不是TF那边出甚麽问题呢?
程式码如下:
function Y = tfidf( X )
X = tf(X);
I = idf(X);
for j=1:size(X, 2)
X(:, j) = X(:, j)*I(j);
end
Y = X;
function X = tf(X)
for i=1:size(X, 1)
x = X(i, :);
sumX = sum( x );
if sumX ~= 0
X(i, :) = x / sum(x);
else
X(i, :) = 0;
end
end
function I = idf(X)
[m, n]=size(X);
I = zeros(n, 1);
for j=1:n
nz = nnz( X(:, j) );
if nz
I(j) = log( m / nz );
end
希望能得到解答~~万分感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.44.139.121
1F:→ celestialgod:so no data? how to test? 03/23 20:53
2F:→ Jolinda:data:X(1000x1) 前面三行的值分别为10、100、30,其余为0 03/24 00:12
3F:→ Jolinda:已解决 03/25 14:34