[問題]關於TF-IDF字詞權重程式碼

看板MATLAB作者 (Jolinda)時間11年前 (2014/03/23 17:27), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
小妹我最近在網路上下載計算字詞權重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
so no data? how to test?
03/23 20:53, 1F

03/24 00:12, , 2F
data:X(1000x1) 前面三行的值分別為10、100、30,其餘為0
03/24 00:12, 2F

03/25 14:34, , 3F
已解決
03/25 14:34, 3F
文章代碼(AID): #1JBgaVsu (MATLAB)
文章代碼(AID): #1JBgaVsu (MATLAB)