tfidf_ja 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +1 -49
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/dictionary.rb +1 -1
- data/test/test.rb +5 -16
- metadata +22 -38
- data/lib/tfidf_ja/igo_extension.rb +0 -45
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
|
-
|
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
|
+
0.2.0
|
data/lib/dictionary.rb
CHANGED
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
|
-
|
24
|
-
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
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-
|
18
|
+
date: 2011-02-21 00:00:00 +09:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
-
|
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
|
-
|
36
|
-
type: :development
|
37
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *id001
|
38
36
|
prerelease: false
|
39
|
-
|
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
|
-
|
52
|
-
type: :development
|
53
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: *id002
|
54
52
|
prerelease: false
|
55
|
-
|
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
|
-
|
68
|
-
type: :development
|
69
|
-
- !ruby/object:Gem::Dependency
|
67
|
+
version_requirements: *id003
|
70
68
|
prerelease: false
|
71
|
-
|
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
|
-
|
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.
|
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
|