Class: TfIdf::Utility

Inherits:
Object
  • Object
show all
Defined in:
lib/utility.rb

Overview

ユーティリティクラス

Constant Summary collapse

N =

(仮の)インデックス数

20000000000

Class Method Summary collapse

Class Method Details

.create_dicObject

df.dicからidf.dicを生成する



18
19
20
21
22
23
24
# File 'lib/utility.rb', line 18

def self.create_dic
  dfs = self.df_load()
  idfs = self.create_idf(dfs)
  self.idf_save(idfs)
  puts "complete."
  puts "size=#{idfs.size} average=#{idfs.average}"
end

.create_idf(dfs) ⇒ Object

DFsオブジェクトからIDFsオブジェクトを生成する

dfs

DFsオブジェクト



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/utility.rb', line 37

def self.create_idf(dfs)
  idfs = IDFs.new
  total = 0
  dfs.all.each_pair { |k, v|
    idf = TfIdf::Utility.get_inverse(v)
    idfs.set(k, idf)
    total += idf
  }
  idfs.size = dfs.all.size
  idfs.average = total / idfs.size
  return idfs
end

.df_loadObject

df.dicを読み込む



51
52
53
54
55
56
57
58
59
# File 'lib/utility.rb', line 51

def self.df_load()
  df_dic  = File.dirname(__FILE__) + '/../dic/#{Version.ruby}/df.dic'
  unless File::exists?(df_dic)
    raise
  end
  File::open(df_dic) { |f|
    return Marshal.load(f)
  }
end

.get_inverse(df_value) ⇒ Object

DF値からiDF値を取得する IDF = log(N / DF)

df_value

DF値



29
30
31
# File 'lib/utility.rb', line 29

def self.get_inverse(df_value)
  return df_value > 0 ? Math::log(N / df_value) : 0
end

.idf_save(idfs) ⇒ Object

idf.dicを保存する



62
63
64
65
66
67
# File 'lib/utility.rb', line 62

def self.idf_save(idfs)
  idf_dic  = File.dirname(__FILE__) + '/../dic/#{Version.ruby}/idf.dic'
  File::open(idf_dic, 'wb') { |f|
    Marshal.dump(idfs, f)
  }
end