tfidf_ja 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -10,7 +10,7 @@ tfidf_jaには以下の特徴があります。
10
10
  * IPADIC辞書に収録されている日本語の形態素(約32万語)を使用し、TF値をYahoo!のインデックス数としてあらかじめ算出。
11
11
  * 算出したTF値からIDF値を算出し、IDF辞書としてライブラリに包含し、ライブラリ使用時の算出コストを減らしています。
12
12
  * 形態素解析
13
- * {igo-ruby}[https://rubygems.org/gems/igo-ruby]を使用した形態素解析を行なった上で、TF-IDFを算出することも可能です。
13
+ * {igo-ruby}[https://rubygems.org/gems/igo-ruby]を使用した形態素解析を行なった上で、TF-IDFを算出することをおすすめします。
14
14
 
15
15
  == インストール方法
16
16
 
@@ -26,59 +26,11 @@ tfidf_jaには以下の特徴があります。
26
26
  ti = TfIdf::Ja.new
27
27
  p ti.tfidf(['この', '文章', 'から', 'TFIDF', '値', 'を', '取得', 'する'])
28
28
 
29
- === 形態素解析を行なったあと、TF-IDFを取得
30
-
31
- require 'rubygems'
32
- require 'tfidf_ja'
33
- require 'tfidf_ja/igo_extension'
34
-
35
- dir = './ipadic' # igo-rubyに渡す辞書ファイルのディレクトリ
36
- tie = TfIdf::IgoExtension.new(dir)
37
- p tie.tfidf('この文章を形態素解析し、TFIDF値を取得する')
38
-
39
29
  === インスタンスを使い回し
40
30
 
41
31
  インスタンスを使い回すことにより、TF-IDF値は加算されていきます。
42
32
  複数のテキストから連続して算出する場合に便利です。
43
33
 
44
- tie = TfIdf::IgoExtension.new(dir)
45
- tie.tfidf('この文章を形態素解析し、TFIDF値を取得する').each_pair { |k, v|
46
- puts "#{k}=>#{v}"
47
- }
48
- # =>
49
- 解析=>7.33823815006559
50
- 値=>7.61579107203583
51
- TFIDF=>13.3689578610795
52
- 形態素=>13.0477195694085
53
- 文章=>7.2152399787301
54
- 取得=>7.24992553671799
55
-
56
- # インスタンスを使い回し
57
- tie.tfidf('インスタンスを使い回し、再度TFIDF値を取得する').each_pair { |k, v|
58
- puts "#{k}=>#{v}"
59
- }
60
- # =>
61
- 解析=>7.33823815006559
62
- 値=>15.2315821440717 # 両方のテキストに出現する形態素のTFIDFは大きくなる
63
- TFIDF=>26.737915722159 # 両方のテキストに出現する形態素のTFIDFは大きくなる
64
- 形態素=>13.0477195694085
65
- 文章=>7.2152399787301
66
- インスタンス=>11.7873551106461 # 両方のテキストに出現する形態素のTFIDFは大きくなる
67
- 取得=>14.499851073436 # 両方のテキストに出現する形態素のTFIDFは大きくなる
68
-
69
- リセットする場合はresetメソッドを使用します。
70
-
71
- # resetメソッドでリセット
72
- tie.reset
73
- tie.tfidf('インスタンスを使い回し、再度TFIDF値を取得する').each_pair { |k, v|
74
- puts "#{k}=>#{v}"
75
- }
76
- # =>
77
- 値=>7.61579107203583
78
- TFIDF=>13.3689578610795
79
- インスタンス=>11.7873551106461
80
- 取得=>7.24992553671799
81
-
82
34
  == 付録
83
35
  === 公開場所
84
36
 
data/Rakefile CHANGED
@@ -28,7 +28,7 @@ Jeweler::Tasks.new do |gem|
28
28
  # gem.add_development_dependency 'rspec', '> 1.2.3'
29
29
 
30
30
  # gems dependency
31
- gem.add_runtime_dependency 'igo-ruby', '> 0.1'
31
+ # gem.add_runtime_dependency 'igo-ruby', '> 0.1'
32
32
 
33
33
  # include files
34
34
  gem.files = Rake::FileList.new('lib/**/*.rb', '[A-Z]*', 'dic/idf.dic')
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
data/lib/dictionary.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
  #
3
- # Copyright:: Copyright (c) kyow, 2010
3
+ # Copyright:: Copyright (c) kyow, 2011
4
4
  # Authors:: K.Nishi
5
5
 
6
6
  module TfIdf
data/test/test.rb CHANGED
@@ -3,11 +3,8 @@
3
3
  #Copyright:: Copyright (c) kyow, 2011
4
4
  #Authors:: K.Nishi
5
5
 
6
- #require '../lib/tfidf_ja'
7
- #require '../lib/tfidf_ja/igo_extension'
8
6
  require 'rubygems'
9
7
  require 'tfidf_ja'
10
- require 'tfidf_ja/igo_extension'
11
8
 
12
9
  def output(h)
13
10
  h.each { |item|
@@ -16,19 +13,11 @@ def output(h)
16
13
  end
17
14
 
18
15
  tfidf = TfIdf::Ja.new
16
+ puts "-->1回目"
19
17
  output tfidf.tfidf(['この', '文章', 'から', 'TFIDF', '値', 'を', '取得', 'する'])
18
+ puts "-->2回目"
20
19
  output tfidf.tfidf(['文章', 'を', '連続', 'で', '渡す', 'と', 'TFIDF', '値', 'を', '追加', 'で', '算出', 'する'])
21
20
 
22
-
23
- # 以下はigo-rubyが必要
24
- dir = '../../ipadic'
25
- tie = TfIdf::IgoExtension.new(dir)
26
- puts s = "この文字列を形態素解析してTFIDF値を取得する"
27
- output tie.tfidf(s)
28
-
29
- puts s = "連続してインスタンスを使うと前回解析したTFIDF計算結果を加味する"
30
- output tie.tfidf(s)
31
-
32
- tie.reset
33
- puts s = "TfIdf::IgoExtension.resetでリセットする"
34
- output tie.tfidf(s)
21
+ puts "-->リセット"
22
+ tfidf.reset
23
+ output tfidf.tfidf(['TFIDF', '#', 'rest', 'で', 'リセット', 'する'])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfidf_ja
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 23
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - K.Nishi
@@ -15,12 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-11 00:00:00 +09:00
18
+ date: 2011-02-21 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
22
+ type: :development
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
26
  - - ~>
@@ -32,11 +32,11 @@ dependencies:
32
32
  - 0
33
33
  version: 2.1.0
34
34
  name: rspec
35
- requirement: *id001
36
- type: :development
37
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
38
36
  prerelease: false
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ - !ruby/object:Gem::Dependency
38
+ type: :development
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -48,11 +48,11 @@ dependencies:
48
48
  - 0
49
49
  version: 1.0.0
50
50
  name: bundler
51
- requirement: *id002
52
- type: :development
53
- - !ruby/object:Gem::Dependency
51
+ version_requirements: *id002
54
52
  prerelease: false
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
53
+ - !ruby/object:Gem::Dependency
54
+ type: :development
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
56
  none: false
57
57
  requirements:
58
58
  - - ~>
@@ -64,11 +64,11 @@ dependencies:
64
64
  - 1
65
65
  version: 1.5.1
66
66
  name: jeweler
67
- requirement: *id003
68
- type: :development
69
- - !ruby/object:Gem::Dependency
67
+ version_requirements: *id003
70
68
  prerelease: false
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ - !ruby/object:Gem::Dependency
70
+ type: :development
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ">="
@@ -78,23 +78,8 @@ dependencies:
78
78
  - 0
79
79
  version: "0"
80
80
  name: rcov
81
- requirement: *id004
82
- type: :development
83
- - !ruby/object:Gem::Dependency
81
+ version_requirements: *id004
84
82
  prerelease: false
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - ">"
89
- - !ruby/object:Gem::Version
90
- hash: 9
91
- segments:
92
- - 0
93
- - 1
94
- version: "0.1"
95
- name: igo-ruby
96
- requirement: *id005
97
- type: :runtime
98
83
  description: "\n tfidf_ja computes TF-IDF with a dictionary.\n This gem include a Japanese IDF dictionary that were prepared in Yahoo! API.\n "
99
84
  email: 24signals@gmail.com
100
85
  executables: []
@@ -114,7 +99,6 @@ files:
114
99
  - dic/idf.dic
115
100
  - lib/dictionary.rb
116
101
  - lib/tfidf_ja.rb
117
- - lib/tfidf_ja/igo_extension.rb
118
102
  - lib/utility.rb
119
103
  - spec/spec_helper.rb
120
104
  - spec/tfidf_ja_spec.rb
@@ -154,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
138
  requirements: []
155
139
 
156
140
  rubyforge_project:
157
- rubygems_version: 1.3.7
141
+ rubygems_version: 1.5.0
158
142
  signing_key:
159
143
  specification_version: 3
160
144
  summary: Computes TF-IDF with Japanese dictionary.
@@ -1,45 +0,0 @@
1
- # coding: utf-8
2
- #
3
- # Copyright:: Copyright (c) kyow, 2011
4
- # Authors:: K.Nishi
5
-
6
- $:.unshift(File.dirname(__FILE__))
7
-
8
- require 'rubygems'
9
- require 'igo-ruby'
10
-
11
- module TfIdf
12
- #
13
- # 形態素解析に{igo-ruby}[https://rubygems.org/gems/igo-ruby]を使用するための拡張クラス
14
- #
15
- class IgoExtension
16
- # コンストラクタ
17
- def initialize(dir)
18
- @tagger = Igo::Tagger.new(dir)
19
- @tfidf = TfIdf::Ja.new
20
- end
21
-
22
- # インスタンスのリセット
23
- def reset
24
- @tfidf.reset
25
- end
26
-
27
- # igo-rubyを利用して形態素解析を行ない、その結果のTF-IDFを返却する
28
- # text:: 形態素解析を行なうテキスト
29
- # return:: key=形態素、value=TF-IDFのハッシュテーブル
30
- def tfidf(text)
31
- t = @tagger.parse(text)
32
- words = []
33
-
34
- # 品詞が"名詞"の形態素を選択
35
- t.each{ |m|
36
- part = m.feature.split(',')[0]
37
- if(part == '名詞')
38
- words.push(m.surface)
39
- end
40
- }
41
-
42
- return @tfidf.tfidf(words)
43
- end
44
- end
45
- end