[問題]關於TF-IDF字詞權重程式碼
小妹我最近在網路上下載計算字詞權重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
→
03/23 20:53, , 1F
03/23 20:53, 1F
→
03/24 00:12, , 2F
03/24 00:12, 2F
→
03/25 14:34, , 3F
03/25 14:34, 3F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章
7
20