読書記録ChangeLog

日記内を検索 / / / ランダム RSS

2005-05-10 / cl.itemlist版kwnmz /

似たアイテムの抽出機能の準備としてkwnmzのcl.itemlist版みたいのを作
成しました。予想していたよりまともな出力な希ガし増す。キーワードを抜き
出すのは簡単なのですが似てるエントリとなると計算量が大きなやり方しか
思いつきません。どげんしょ。
<a href="2005-05-09-4.html">[2005-05-09-4]</a> start
スチールユニットシェルフ/37.8448195419321
無印良品/29.4227547757594
棚/26.1241477551067
包装/24.0599546931792
段/20.3110164573468
<a href="2005-05-09-3.html">[2005-05-09-3]</a> start
バター/60.1798640795376
炒め/49.5725006458482
醤油/33.4680493354686
料理/13.8850290106785
かけただけ/12.6149398473107
<a href="2005-05-09-2.html">[2005-05-09-2]</a> start
会話/46.8350616693358
ウケ/31.8448195419321
技術/22.0444599198475
る/15.5822041054746
ボケ/12.6149398473107
<a href="2005-05-09-1.html">[2005-05-09-1]</a> start
はてな/48.0013800191732
ダイアリー/39.6580005166786
リスト/23.346149499438
[Blog][ChangeLogMemo]/23.2298796946214
記事/21.515989054386
[...]
<a href="2005-05-07-2.html">[2005-05-07-2]</a> start
三分/55.149886732948
構図/50.4597593892428
割/42.8527286397614
法/35.4402093805891
撮る/30.8790352572702

kakasi -w < cl.itemlist > cl.wakati
perl idf.pl < cl.wakati > idf.txt
ruby tf.rb > tf-idf.txt

#すでに作ってあるidf.txtからidfを読み込み
# {word,idf}のハッシュidfを作成
idf = Hash.new
idf_file = open("idf.txt")
while idf_file.gets
  w,t,i = chomp.split(/ /)
  idf[w]=i
end
#cl.itemlistを分かち書きしたcl.wakatiを読み込んでtf*idfを計算する。
wakati = open("cl.wakati")
while wakati.gets
  tf_idf = Hash.new
  id,subject,body = chomp.split(/\t/)
  #エントリ単位のハッシュを作成(サブジェクト)
  #サブジェクトに含まれるワードの重みを5倍にする。
  subject.split(/ /).each do |i|
    idf[i] = 0.0 unless idf[i]
    tf_idf[i] = 0.0 unless tf_idf[i]
    tf_idf[i] = Float(tf_idf[i]) + 5 * Float(idf[i])
  end
  #エントリ単位のハッシュを作成(本文)
  body.split(/ /).each do |i|
    idf[i] = 0.0 unless idf[i]
    tf_idf[i] = 0.0 unless tf_idf[i]
    tf_idf[i] = Float(tf_idf[i]) + Float(idf[i])
  end
  tf_idf = tf_idf.sort{|a,b| Float(b[1]) <=> Float(a[1])}
  print "#{id} start\n"
  #tf*idfトップの5ワードを取り出す。
  for i in [1,2,3,4,5]
    key,val = tf_idf.shift
    print "#{key}/#{val}\n"
  end
end

固定リンク [2005-05-10-11] このエントリーをはてなブックマークに追加 MM/memo投稿

[ コメント |

これまでの訪問者は 人です。