rhabarber 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ Changelog
File without changes
@@ -0,0 +1,2 @@
1
+ Test
2
+ Zeile2
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift('U:\rhabarber\lib')
2
+
3
+ require 'tokenizer'
4
+
5
+
6
+ options = Tokenizer::OptParse.parse(ARGV)
7
+
8
+ t = Tokenizer::Tokenizer.new(options)
9
+
10
+
11
+ while str = gets
12
+
13
+ puts t.tokenize(str)
14
+
15
+ end
@@ -0,0 +1 @@
1
+ Changelog
@@ -0,0 +1,5 @@
1
+ require 'tokenizer/tokenizer'
2
+
3
+ require 'tokenizer/version'
4
+
5
+ require 'tokenizer/opt_parse'
@@ -0,0 +1,41 @@
1
+ require 'optparse'
2
+ require 'tokenizer/version.rb'
3
+
4
+ module Tokenizer
5
+
6
+ class OptParse
7
+
8
+ def OptParse.parse(args)
9
+
10
+ @@options = {}
11
+ parser = OptParse.create_parser # Klassen- keine Instanzmethode
12
+
13
+ begin
14
+ parser.parse(args)
15
+ rescue OptionParser::InvalidArgument
16
+ rescue OptionParser::InvalidOption => e
17
+ STDERR.puts 'Falsche 0pt1on' # #{e.message}
18
+ exit(1)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def self.create_parser
25
+
26
+ OptionParser.new do|args| # || -> Block als Parameter; liefert Instanz von der Klasse; auch return OptionParser.new do|args|
27
+
28
+ args.banner = 'Usage: tokenize ARGS'
29
+ args.on('-h', '--help', 'Show this summary!') do
30
+ puts args; exit
31
+ end
32
+ args.on('-v', '--version', 'Show this version!') do
33
+ puts VERSION; exit
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ # :title: My first tokenizer
2
+
3
+ # :main: readme.rdoc
4
+
5
+ module Tokenizer
6
+
7
+ # guess what...
8
+
9
+ class Tokenizer
10
+
11
+ # regexp
12
+
13
+ WL = /\s+/
14
+
15
+ def initialize (l=:de)
16
+
17
+ @l = l
18
+
19
+ end #initialize
20
+
21
+ def tokenize(str)
22
+
23
+ tokens = []
24
+ tokens = str.split(WL)
25
+
26
+ return tokens
27
+
28
+ end #tokenize
29
+
30
+ puts "neuer Test"
31
+
32
+ end
33
+ end
@@ -0,0 +1,3 @@
1
+ module Tokenizer
2
+ VERSION = '0.0.1'
3
+ end
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ Test
2
+ Zeile2
@@ -0,0 +1,284 @@
1
+ require 'test/unit'
2
+ require 'tokenizer'
3
+
4
+ class TestTokenizerDev < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @de_tokenizer = Tokenizer::Tokenizer.new(:de)
8
+ end
9
+
10
+ def test_tokenization_001
11
+ input = 'ich ging? du, und ich nicht (konnte nicht)? Warum?!!'
12
+ etalon = %w{ ich ging ? du , und ich nicht ( konnte nicht ) ? Warum ? ! !}
13
+ compare(etalon, input)
14
+ end
15
+
16
+
17
+ def test_tokenization_002
18
+ input = "Die deutschen Umlaute und Sonderzeichen, wie in Mäuse, Scheiß und Tütchen, sind blöd!"
19
+ etalon = %w{Die deutschen Umlaute und Sonderzeichen , wie in Mäuse , Scheiß und Tütchen , sind blöd !}
20
+ compare(etalon, input)
21
+ end
22
+
23
+
24
+ def test_tokenization_003
25
+ input = "Abkürzungen, wie z.B. usw. und d.h. können zu Problemem führen."
26
+ etalon = %w{Abkürzungen , wie z.B. usw. und d.h. können zu Problemem führen .}
27
+ compare(etalon, input)
28
+ end
29
+
30
+ def test_tokenization_004
31
+ input = "Es gibt mehr als 1.023.345 Menschen in Deutschland, die keine Tausenderpunkte verstehen."
32
+ etalon = %w{Es gibt mehr als 1.023.345 Menschen in Deutschland , die keine Tausenderpunkte verstehen .}
33
+ compare(etalon, input)
34
+ end
35
+
36
+ def test_tokenization_005
37
+ input = "Cocktails, wie Apfel-Martini, Rum-Kirsche-Cola und andere, bereiten nicht nur Menschen Probleme."
38
+ etalon = %w{ Cocktails , wie Apfel-Martini , Rum-Kirsche-Cola und andere , bereiten nicht nur Menschen Probleme . }
39
+ compare(etalon, input)
40
+ end
41
+
42
+ def test_tokenization_006
43
+ input = 'Es gibt viele verschiedene Zeichen, die noch in Texten vorkommen können wie - zum Beispiel - diese hier "text" oder (text).'
44
+ etalon = %w{Es gibt viele verschiedene Zeichen , die noch in Texten vorkommen können wie - zum Beispiel - diese hier " text " oder ( text ) .}
45
+ compare(etalon, input)
46
+ end
47
+
48
+ def test_tokenization_007
49
+ input = "Abkürzungen sind immer ein Problem, da auch Leerzeichen dazwischen stehen können, wie z. B. hier."
50
+ etalon = ["Abkürzungen", "sind", "immer", "ein", "Problem", ",", "da", "auch", "Leerzeichen", "dazwischen", "stehen", "können", ",", "wie", "z. B.", "hier", "."]
51
+ compare(etalon, input)
52
+ end
53
+
54
+ def test_tokenization_008
55
+ input = "Außerdem kann es nach Abkürzungen und Satzenden auch mit Großschreibung weiter gehen, bei z.B. Aufzählungen."
56
+ etalon = %w{Außerdem kann es nach Abkürzungen und Satzenden auch mit Großschreibung weiter gehen , bei z.B. Aufzählungen .}
57
+ compare(etalon, input)
58
+ end
59
+
60
+ def test_tokenization_009
61
+ input = "Ein weiteres Problem sind solche Getrennt- und Zusammenschreibungen."
62
+ etalon = %w{Ein weiteres Problem sind solche Getrenntschreibungen und Zusammenschreibungen .}
63
+ compare(etalon, input)
64
+ end
65
+
66
+ def test_tokenization_010
67
+ input = "In manchen Texten gibt es auch Worttrennung am Zeilen- ende."
68
+ etalon = %w{In manchen Texten gibt es auch Worttrennung am Zeilenende .}
69
+ compare(etalon, input)
70
+ end
71
+
72
+ def test_tokenization_011 #Ellipsis
73
+ input = "Der Satz endet in einer Ellips..."
74
+ etalon = %w{ Der Satz endet in einer Ellips... } #die elliptischen Punkte sollten nicht vom Wort getrennt werden
75
+ compare(etalon, input)
76
+ end
77
+
78
+ def test_tokenization_012 #Fehlende Leerzeichen
79
+ input = "Der Satz endet.Das Leerzeichen fehlt."
80
+ etalon = %w{ Der Satz endet . Das Leerzeichen fehlt . } #/\.\s(?=[A-Z])/ wuerde die Saetze nicht trennen
81
+ compare(etalon, input)
82
+ end
83
+
84
+ def test_tokenization_013 #Bindestriche
85
+ input = "Das Bindeglied - manisch-depressives Verhalten, binden-verbinden"
86
+ etalon = %w{ Das Bindeglied - manisch-depressives Verhalten , binden - verbinden}
87
+ compare(etalon, input)
88
+ end
89
+
90
+ def test_tokenization_014 #Abkuerzungen
91
+ input = "Der Satz enthielt z.B. Fehler"
92
+ etalon = %w{ Der Satz enthielt z.B. Fehler } #/\.\s(?=[A-Z])/ wuerde hinter Punkt den Satz beenden
93
+ compare(etalon, input)
94
+ end
95
+
96
+ def test_tokenization_015 #Fehlende Grossbuchstaben
97
+ input = "Der Satz endet. der Satz beginnt"
98
+ etalon = %w{ Der Satz endet . der Satz beginnt } #/\.\s(?=[A-Z])/ wuerde die Saetze nicht trennen
99
+ compare(etalon, input)
100
+ end
101
+
102
+ def test_tokenization_016 #Franzoesisch
103
+ input = "L'art de l'univers, c'est un art"
104
+ etalon = %w{ L' art de l' univers , c'est un art } #Kontrovers!
105
+ compare(etalon, input)
106
+ end
107
+
108
+ def test_tokenization_017 #James Bond
109
+ input = "Bond,... James Bond."
110
+ etalon = %w{ Bond , ... James Bond . } #Kontrovers!
111
+ compare(etalon, input)
112
+ end
113
+
114
+ def test_tokenization_018 #Inches
115
+ input = "The square had four 9\" sides"
116
+ etalon = %w{ The square had four 9" sides }
117
+ compare(etalon, input)
118
+ end
119
+
120
+ def test_tokenization_019 #Abkuerzung zugleich Lexikon-Eintrag
121
+ input = "In fig. 3, a fig can be seen. Fig. no. 4 shows no fig."
122
+ etalon = %w{ In fig. 3 , a fig can be seen . Fig. no. 4 shows no fig . } #fig sowohl als Abkuerzung als auch als Wort
123
+ compare(etalon, input)
124
+ end
125
+
126
+ def test_tokenization_020 #Leerzeichen-getrennte Zusammengehörigkeiten
127
+ input = "They booked the flight New York-Los Angeles"
128
+ etalon = ["They", "booked", "the", "flight", "New York", "-", "Los Angeles"] #oder mit Bindestrich verbunden
129
+ compare(etalon, input)
130
+ end
131
+
132
+ def test_tokenization_021 #Ordinale
133
+ input = "Der 1. Platz ging an den Sieger"
134
+ etalon = %w{ Der 1. Platz ging an den Sieger }
135
+ compare(etalon, input)
136
+ end
137
+
138
+ def test_tokenization_022 #Klitika
139
+ input = "Er war's, stimmt's?"
140
+ etalon = %w{ Er war es , stimmt es ? } #Kontrovers! Benoetigt komplexere Analyse
141
+ compare(etalon, input)
142
+ end
143
+
144
+ def test_tokenization_023 #Datums- und Zeitangaben
145
+ input = "Es passierte am 13. Januar 2011 um 12:13 Uhr"
146
+ etalon = [ "Es", "passierte", "am", "13. Januar 2011", "um", "12:13 Uhr"]
147
+ compare(etalon, input)
148
+ end
149
+
150
+ def test_tokenization_024 #Eingebettete Saetze
151
+ input = "\"This is all?\" George asked."
152
+ etalon = %w{ This is all ? George asked . } #kann zu ungrammatischen Saetzen fuehren
153
+ compare(etalon, input)
154
+ end
155
+
156
+ def test_tokenization_025 #Eingebettete Saetze 2
157
+ input = "\"Das ist alles?\" fragte sie."
158
+ etalon = %w{ Das ist alles ? fragte sie . } #ungrammatischer Satz "fragte sie."
159
+ compare(etalon, input)
160
+ end
161
+
162
+
163
+ def test_tokenization_026
164
+ input = "Die deutschen Umlaute und Sonderzeichen, wie in Mäuse, Scheiß und Tütchen, sind blöd!"
165
+ etalon = %w{ Die deutschen Umlaute und Sonderzeichen , wie in Mäuse , Scheiß und Tütchen , sind blöd ! }
166
+ compare(etalon, input)
167
+ end
168
+
169
+ def test_tokenization_027
170
+ input = "Abkürzungen, wie z.B. usw. und d.h. können zu Problemem führen."
171
+ etalon = %w{ Abkürzungen , wie z.B. usw. und d.h. können zu Problemem führen . }
172
+ compare(etalon, input)
173
+ end
174
+
175
+ def test_tokenization_028
176
+ input = "Es gibt mehr als 1.023.345 Menschen in Deutschland, die keine Tausenderpunkte verstehen."
177
+ etalon = %w{ Es gibt mehr als 1.023.345 Menschen in Deutschland , die keine Tausenderpunkte verstehen . }
178
+ compare(etalon, input)
179
+ end
180
+
181
+ def test_tokenization_029
182
+ input = "Cocktails, wie Apfel-Martini, Rum-Kirsche-Cola und andere, bereiten nicht nur Menschen Probleme."
183
+ etalon = %w{ Cocktails , wie Apfel-Martini , Rum-Kirsche-Cola und andere , bereiten nicht nur Menschen Probleme . }
184
+ compare(etalon, input)
185
+ end
186
+
187
+ def test_tokenization_030 #Ellipsis
188
+ input = "Der Satz endet in einer Ellips..."
189
+ etalon = %w{ Der Satz endet in einer Ellips... } #die elliptischen Punkte sollten nicht vom Wort getrennt werden
190
+ compare(etalon, input)
191
+ end
192
+
193
+ def test_tokenization_031 #Fehlende Leerzeichen
194
+ input = "Der Satz endet.Das Leerzeichen fehlt."
195
+ etalon = %w{ Der Satz endet . Das Leerzeichen fehlt . } #/\.\s(?=[A-Z])/ wuerde die Saetze nicht trennen
196
+ compare(etalon, input)
197
+ end
198
+
199
+ def test_tokenization_032 #Bindestriche
200
+ input = "Das Bindeglied - manisch-depressives Verhalten, binden-verbinden"
201
+ etalon = %w{ Das Bindeglied - manisch-depressives Verhalten , binden - verbinden}
202
+ compare(etalon, input)
203
+ end
204
+
205
+ def test_tokenization_033 #Abkuerzungen
206
+ input = "Der Satz enthielt z.B. Fehler"
207
+ etalon = %w{ Der Satz enthielt z.B. Fehler } #/\.\s(?=[A-Z])/ wuerde hinter Punkt den Satz beenden
208
+ compare(etalon, input)
209
+ end
210
+
211
+ def test_tokenization_034 #Fehlende Grossbuchstaben
212
+ input = "Der Satz endet. der Satz beginnt"
213
+ etalon = %w{ Der Satz endet . der Satz beginnt } #/\.\s(?=[A-Z])/ wuerde die Saetze nicht trennen
214
+ compare(etalon, input)
215
+ end
216
+
217
+ def test_tokenization_035 #Franzoesisch
218
+ input = "L'art de l'univers, c'est un art"
219
+ etalon = %w{ L' art de l' univers , c'est un art } #Kontrovers!
220
+ compare(etalon, input)
221
+ end
222
+
223
+ def test_tokenization_036 #James Bond
224
+ input = "Bond,... James Bond."
225
+ etalon = %w{ Bond , ... James Bond . } #Kontrovers!
226
+ compare(etalon, input)
227
+ end
228
+
229
+ def test_tokenization_037 #Inches
230
+ input = "The square had four 9\" sides"
231
+ etalon = %w{ The square had four 9" sides }
232
+ compare(etalon, input)
233
+ end
234
+
235
+ def test_tokenization_039 #Abkuerzung zugleich Lexikon-Eintrag
236
+ input = "In fig. 3, a fig can be seen. Fig. no. 4 shows no fig."
237
+ etalon = %w{ In fig. 3 , a fig can be seen . Fig. no. 4 shows no fig . } #fig sowohl als Abkuerzung als auch als Wort
238
+ compare(etalon, input)
239
+ end
240
+
241
+ def test_tokenization_040 #Leerzeichen-getrennte Zusammengehörigkeiten
242
+ input = "They booked the flight New York-Los Angeles"
243
+ etalon = ["They", "booked", "the", "flight", "New York", "-", "Los Angeles"] #oder mit Bindestrich verbunden
244
+ compare(etalon, input)
245
+ end
246
+
247
+ def test_tokenization_041 #Ordinale
248
+ input = "Der 1. Platz ging an den Sieger"
249
+ etalon = %w{ Der 1. Platz ging an den Sieger }
250
+ compare(etalon, input)
251
+ end
252
+
253
+ def test_tokenization_042 #Klitika
254
+ input = "Er war's, stimmt's?"
255
+ etalon = %w{ Er war es , stimmt es ? } #Kontrovers! Benoetigt komplexere Analyse
256
+ compare(etalon, input)
257
+ end
258
+
259
+ #Datums- und Zeitangaben
260
+ def test_tokenization_043
261
+ input = "Es passierte am 13. Januar 2011 um 12:13 Uhr"
262
+ etalon = ["Es", "passierte", "am", "13. Januar 2011", "um", "12:13 Uhr"]
263
+ compare(etalon, input)
264
+ end
265
+
266
+ #Eingebettete Sätze
267
+ def test_tokenization_044
268
+ input = '"This is all?" George asked.'
269
+ etalon = %w{ This is all ? George asked . } #kann zu ungrammatischen Saetzen fuehren
270
+ compare(etalon, input)
271
+ end
272
+
273
+ def test_tokenization_046 #Eingebettete Saetze 2
274
+ input = '"Das ist alles?" fragte sie.'
275
+ etalon = %w{Das ist alles ? fragte sie .} #ungrammatischer Satz "fragte sie."
276
+ compare(etalon, input)
277
+ end
278
+
279
+ private
280
+ def compare(exp_result, input)
281
+ act_result = @de_tokenizer.tokenize(input)
282
+ assert_equal(exp_result, act_result)
283
+ end
284
+ end
@@ -0,0 +1,34 @@
1
+ $LOAD_PATH.unshift('U:\rhabarber\lib')
2
+
3
+ require 'tokenizer/tokenizer'
4
+ require 'test/unit'
5
+
6
+ class TestTokenizer < Test::Unit::TestCase
7
+
8
+ def setup
9
+
10
+ @t = Tokenizer::Tokenizer.new(:de)
11
+
12
+ end #setup
13
+
14
+
15
+ def test_has_method
16
+
17
+ assert_equal(true,@t.respond_to?(:tokenize)) # assert(@t.respond_to?(:tokenize))
18
+
19
+ end #test_has_method
20
+
21
+ def test_array
22
+
23
+ assert_instance_of(Array, @t.tokenize("x y z"))
24
+
25
+ end
26
+
27
+ def test_empty_array
28
+
29
+ assert_equal(false,@t.tokenize("x y z").empty?)
30
+
31
+ end #test_empty_array
32
+
33
+
34
+ end #TestVersion
@@ -0,0 +1,22 @@
1
+ $LOAD_PATH.unshift('U:\rhabarber\lib')
2
+
3
+ require 'tokenizer'
4
+ require 'test/unit'
5
+
6
+ class TestVersion < Test::Unit::TestCase
7
+
8
+ def test_version
9
+
10
+ assert(Tokenizer::VERSION.is_a?(String), "Falsche Klasse")
11
+ assert_equal(false,Tokenizer::VERSION.empty?)
12
+
13
+ end #test_version
14
+
15
+ def setup
16
+
17
+ @t = Tokenizer::Tokenizer.new(:de)
18
+
19
+ end #setup
20
+
21
+
22
+ end #TestVersion
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rhabarber
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ma Ba
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-08 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rdoc
16
+ requirement: &9790584 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.9.1
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *9790584
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &9789468 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
32
+ version: 0.8.7
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *9789468
36
+ - !ruby/object:Gem::Dependency
37
+ name: yard
38
+ requirement: &9788364 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *9788364
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: &9787368 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *9787368
58
+ description: A simple multilingual tokenizer for NLP tasks. This tool provides a CLI
59
+ and a library for linguistic tokenization which is an anavoidable step for many
60
+ HLT (human language technology) tasks in the preprocessing phase for further syntactic,
61
+ semantic and other higher level processing goals. Use it for tokenization of German,
62
+ English and French texts.
63
+ email: missmariabartels@aol.de
64
+ executables:
65
+ - tokenize
66
+ extensions: []
67
+ extra_rdoc_files:
68
+ - changelog.rdoc
69
+ - license.rdoc
70
+ - readme.rdoc
71
+ files:
72
+ - lib/tokenizer/opt_parse.rb
73
+ - lib/tokenizer/tokenizer.rb
74
+ - lib/tokenizer/version.rb
75
+ - lib/tokenizer.rb
76
+ - lib/version.rb
77
+ - README.rdoc
78
+ - LICENSE.rdoc
79
+ - CHANGELOG.rdoc
80
+ - test/test_de_tokenizer_dev.rb
81
+ - test/test_tokenizer.rb
82
+ - test/test_version.rb
83
+ - bin/tokenize
84
+ - changelog.rdoc
85
+ - license.rdoc
86
+ - readme.rdoc
87
+ homepage: ''
88
+ licenses: []
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: 1.8.7
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubyforge_project: tokenizer
107
+ rubygems_version: 1.7.2
108
+ signing_key:
109
+ specification_version: 3
110
+ summary: Tokenizer is a linguistic tool intended to split a text into tokens.
111
+ test_files:
112
+ - test/test_de_tokenizer_dev.rb
113
+ - test/test_tokenizer.rb
114
+ - test/test_version.rb