mito_natto 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 266536ad3d1965cba99b90d7c9ea0181f381132c
4
+ data.tar.gz: bd8f0aa19008d1a74cf7369bafca078df17e3677
5
+ SHA512:
6
+ metadata.gz: 82be9bc39593d2ae7bc23d41d53950d246c09ac979d2a41f0e626190fcbbdaea42df8d500cdaaec1b7d686f43e5d27c3421ad8ac20d9ca5b12922c890c6cc812
7
+ data.tar.gz: 51b3ca957fbca839d5e7ddbb84a6904cc123c3994afb29f5f350c7fa00fb6afd1afc1c9d72e4c0e4535a883a02432d507c7596f6b2457adaabc88b889b72dcee
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mito_natto.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 akira-kuriyama
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,62 @@
1
+ # MitoNatto
2
+
3
+ Natto( https://bitbucket.org/buruzaemon/natto )をラップして少し使いやすくしたライブラリです。
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'mito_natto'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install mito_natto
18
+
19
+ ## Usage
20
+
21
+ ```
22
+ # parseメソッドをよぶと、MitoNattoNodeクラスの配列が返ります
23
+ node_list = MitoNatto.parse('今日はいい天気なので北海道に行きました')
24
+
25
+ node_list.each_with_index do |node|
26
+
27
+ #MitoNattoNodeクラスには以下の様なメソッドがあります
28
+
29
+ p node.surface
30
+ p node.features
31
+
32
+ p node.品詞
33
+ p node.品詞細分類1
34
+ p node.品詞細分類2
35
+ p node.品詞細分類3
36
+ p node.活用形
37
+ p node.活用型
38
+ p node.原形
39
+ p node.読み
40
+ p node.発音
41
+
42
+ #日本語メソッド以外にも英語メソッドもあります
43
+ p node.noun
44
+ p node.noun_detail1
45
+ p node.noun_detail2
46
+ p node.noun_detail3
47
+ p node.inflected_form
48
+ p node.inflected_type
49
+ p node.root_form
50
+ p node.reading
51
+ p node.pronunciation
52
+
53
+ end
54
+ ```
55
+
56
+ ## Contributing
57
+
58
+ 1. Fork it
59
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
60
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
61
+ 4. Push to the branch (`git push origin my-new-feature`)
62
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ require "mito_natto/version"
3
+
4
+ require 'natto'
5
+ require 'mito_natto_node'
6
+
7
+ module MitoNatto
8
+
9
+ def self.parse(text)
10
+ node_list = []
11
+ if text == nil || text == ''
12
+ return node_list
13
+ end
14
+
15
+ natto_mecab.parse(text) do |node|
16
+ next if node.surface == nil
17
+ mito_natto_node = MitoNattoNode.new
18
+ mito_natto_node.mecab_node = node
19
+ node_list.push(mito_natto_node)
20
+ end
21
+ node_list
22
+ end
23
+
24
+ private
25
+ def self.natto_mecab
26
+ natto_mecab ||= Natto::MeCab.new
27
+ end
28
+
29
+ end
@@ -0,0 +1,3 @@
1
+ module MitoNatto
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ require "mito_natto/version"
3
+
4
+ require 'natto'
5
+
6
+ class MitoNattoNode
7
+
8
+ attr_accessor :mecab_node
9
+
10
+ def surface
11
+ mecab_node.surface
12
+ end
13
+
14
+ def features
15
+ @features ||= mecab_node.feature.split(',')
16
+ end
17
+
18
+ def method_missing(method_name)
19
+ [ELEMENTS_JA, ELEMENTS_EN].each do |elements|
20
+ if elements.include?(method_name.to_s)
21
+ return features[elements.find_index(method_name.to_s)]
22
+ end
23
+ end
24
+ super
25
+ end
26
+
27
+ def respond_to?(method_name)
28
+ [ELEMENTS_JA, ELEMENTS_EN].each do |elements|
29
+ if elements.include?(method_name.to_s)
30
+ return true
31
+ end
32
+ end
33
+ super
34
+ end
35
+
36
+ private
37
+
38
+ ELEMENTS_JA = %w(品詞 品詞細分類1 品詞細分類2 品詞細分類3 活用形 活用型 原形 読み 発音).freeze
39
+ ELEMENTS_EN = %w(noun noun_detail1 noun_detail2 noun_detail3 inflected_form inflected_type root_form reading pronunciation).freeze
40
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mito_natto/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'mito_natto'
8
+ spec.version = MitoNatto::VERSION
9
+ spec.authors = ['akira-kuriyama']
10
+ spec.email = ['marronshepherd2@gmail.com']
11
+ spec.description = %q{Nattoをラップして少し使いやすくしたライブラリです}
12
+ spec.summary = %q{Nattoをラップして少し使いやすくしたライブラリ}
13
+ spec.homepage = 'https://github.com/akira-kuriyama/mito_natto.git'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = '>= 2.0.0'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec', '~> 2.0'
26
+
27
+ spec.required_ruby_version = '>= 1.9.3'
28
+
29
+ spec.add_runtime_dependency 'natto', '~> 0.9.6'
30
+
31
+
32
+ end
@@ -0,0 +1,199 @@
1
+ # coding: utf-8
2
+ require 'rspec'
3
+ require 'mito_natto'
4
+
5
+ describe MitoNatto do
6
+
7
+ describe 'parse' do
8
+
9
+ context '引数がnilの場合' do
10
+ it do
11
+ node_list = MitoNatto.parse nil
12
+ expect(node_list).to eq([])
13
+ end
14
+ end
15
+
16
+ context '引数が空文字の場合' do
17
+ it do
18
+ node_list = MitoNatto.parse ''
19
+ expect(node_list).to eq([])
20
+ end
21
+ end
22
+
23
+ context '引数が空ではない場合' do
24
+ it do
25
+ surface_result = %w[今日 は いい 天気 な ので 北海道 に 行き まし た 。]
26
+ features_result = {
27
+ '今日' =>
28
+ {
29
+ '品詞' => '名詞',
30
+ '品詞細分類1' => '副詞可能',
31
+ '品詞細分類2' => '*',
32
+ '品詞細分類3' => '*',
33
+ '活用形' => '*',
34
+ '活用型' => '*',
35
+ '原形' => '今日',
36
+ '読み' => 'キョウ',
37
+ '発音' => 'キョー'
38
+
39
+ },
40
+ 'は' =>
41
+ {
42
+ '品詞' => '助詞',
43
+ '品詞細分類1' => '係助詞',
44
+ '品詞細分類2' => '*',
45
+ '品詞細分類3' => '*',
46
+ '活用形' => '*',
47
+ '活用型' => '*',
48
+ '原形' => 'は',
49
+ '読み' => 'ハ',
50
+ '発音' => 'ワ'
51
+
52
+ },
53
+ 'いい' =>
54
+ {
55
+ '品詞' => '形容詞',
56
+ '品詞細分類1' => '自立',
57
+ '品詞細分類2' => '*',
58
+ '品詞細分類3' => '*',
59
+ '活用形' => '形容詞・イイ',
60
+ '活用型' => '基本形',
61
+ '原形' => 'いい',
62
+ '読み' => 'イイ',
63
+ '発音' => 'イイ'
64
+
65
+ },
66
+ '天気' =>
67
+ {
68
+ '品詞' => '名詞',
69
+ '品詞細分類1' => '一般',
70
+ '品詞細分類2' => '*',
71
+ '品詞細分類3' => '*',
72
+ '活用形' => '*',
73
+ '活用型' => '*',
74
+ '原形' => '天気',
75
+ '読み' => 'テンキ',
76
+ '発音' => 'テンキ'
77
+
78
+ },
79
+ 'な' =>
80
+ {
81
+ '品詞' => '助動詞',
82
+ '品詞細分類1' => '*',
83
+ '品詞細分類2' => '*',
84
+ '品詞細分類3' => '*',
85
+ '活用形' => '特殊・ダ',
86
+ '活用型' => '体言接続',
87
+ '原形' => 'だ',
88
+ '読み' => 'ナ',
89
+ '発音' => 'ナ'
90
+
91
+ },
92
+ 'ので' =>
93
+ {
94
+ '品詞' => '助詞',
95
+ '品詞細分類1' => '接続助詞',
96
+ '品詞細分類2' => '*',
97
+ '品詞細分類3' => '*',
98
+ '活用形' => '*',
99
+ '活用型' => '*',
100
+ '原形' => 'ので',
101
+ '読み' => 'ノデ',
102
+ '発音' => 'ノデ'
103
+
104
+ },
105
+ '北海道' =>
106
+ {
107
+ '品詞' => '名詞',
108
+ '品詞細分類1' => '固有名詞',
109
+ '品詞細分類2' => '地域',
110
+ '品詞細分類3' => '一般',
111
+ '活用形' => '*',
112
+ '活用型' => '*',
113
+ '原形' => '北海道',
114
+ '読み' => 'ホッカイドウ',
115
+ '発音' => 'ホッカイドー'
116
+
117
+ },
118
+ 'に' =>
119
+ {
120
+ '品詞' => '助詞',
121
+ '品詞細分類1' => '格助詞',
122
+ '品詞細分類2' => '一般',
123
+ '品詞細分類3' => '*',
124
+ '活用形' => '*',
125
+ '活用型' => '*',
126
+ '原形' => 'に',
127
+ '読み' => 'ニ',
128
+ '発音' => 'ニ'
129
+
130
+ },
131
+ '行き' =>
132
+ {
133
+ '品詞' => '動詞',
134
+ '品詞細分類1' => '自立',
135
+ '品詞細分類2' => '*',
136
+ '品詞細分類3' => '*',
137
+ '活用形' => '五段・カ行促音便',
138
+ '活用型' => '連用形',
139
+ '原形' => '行く',
140
+ '読み' => 'イキ',
141
+ '発音' => 'イキ'
142
+
143
+ },
144
+ 'まし' =>
145
+ {
146
+ '品詞' => '助動詞',
147
+ '品詞細分類1' => '*',
148
+ '品詞細分類2' => '*',
149
+ '品詞細分類3' => '*',
150
+ '活用形' => '特殊・マス',
151
+ '活用型' => '連用形',
152
+ '原形' => 'ます',
153
+ '読み' => 'マシ',
154
+ '発音' => 'マシ'
155
+
156
+ },
157
+ 'た' =>
158
+ {
159
+ '品詞' => '助動詞',
160
+ '品詞細分類1' => '*',
161
+ '品詞細分類2' => '*',
162
+ '品詞細分類3' => '*',
163
+ '活用形' => '特殊・タ',
164
+ '活用型' => '基本形',
165
+ '原形' => 'た',
166
+ '読み' => 'タ',
167
+ '発音' => 'タ'
168
+ }
169
+ }
170
+ node_list = MitoNatto.parse('今日はいい天気なので北海道に行きました')
171
+ node_list.each_with_index do |node, index|
172
+ expect(node.surface).to eq(surface_result[index])
173
+ expect(node.品詞).to eq(features_result[node.surface]['品詞'])
174
+ expect(node.品詞細分類1).to eq(features_result[node.surface]['品詞細分類1'])
175
+ expect(node.品詞細分類2).to eq(features_result[node.surface]['品詞細分類2'])
176
+ expect(node.品詞細分類3).to eq(features_result[node.surface]['品詞細分類3'])
177
+ expect(node.活用形).to eq(features_result[node.surface]['活用形'])
178
+ expect(node.活用型).to eq(features_result[node.surface]['活用型'])
179
+ expect(node.原形).to eq(features_result[node.surface]['原形'])
180
+ expect(node.読み).to eq(features_result[node.surface]['読み'])
181
+ expect(node.発音).to eq(features_result[node.surface]['発音'])
182
+
183
+ expect(node.noun).to eq(features_result[node.surface]['品詞'])
184
+ expect(node.noun_detail1).to eq(features_result[node.surface]['品詞細分類1'])
185
+ expect(node.noun_detail2).to eq(features_result[node.surface]['品詞細分類2'])
186
+ expect(node.noun_detail3).to eq(features_result[node.surface]['品詞細分類3'])
187
+ expect(node.inflected_form).to eq(features_result[node.surface]['活用形'])
188
+ expect(node.inflected_type).to eq(features_result[node.surface]['活用型'])
189
+ expect(node.root_form).to eq(features_result[node.surface]['原形'])
190
+ expect(node.reading).to eq(features_result[node.surface]['読み'])
191
+ expect(node.pronunciation).to eq(features_result[node.surface]['発音'])
192
+
193
+ expect(node.features).to eq(features_result[node.surface].values)
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
199
+
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mito_natto
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - akira-kuriyama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: natto
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.6
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.6
69
+ description: Nattoをラップして少し使いやすくしたライブラリです
70
+ email:
71
+ - marronshepherd2@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - lib/mito_natto.rb
82
+ - lib/mito_natto/version.rb
83
+ - lib/mito_natto_node.rb
84
+ - mito_natto.gemspec
85
+ - spec/mito_natto_spec.rb
86
+ homepage: https://github.com/akira-kuriyama/mito_natto.git
87
+ licenses:
88
+ - MIT
89
+ metadata: {}
90
+ post_install_message:
91
+ rdoc_options: []
92
+ require_paths:
93
+ - lib
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: 1.9.3
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ requirements: []
105
+ rubyforge_project:
106
+ rubygems_version: 2.0.7
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: Nattoをラップして少し使いやすくしたライブラリ
110
+ test_files:
111
+ - spec/mito_natto_spec.rb