作者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
→ celestialgod:so no data? how to test? 03/23 20:53
→ Jolinda:data:X(1000x1) 前面三行的值分別為10、100、30,其餘為0 03/24 00:12
→ Jolinda:已解決 03/25 14:34