tokenizer_project_uni-trier_j-v 0.0.1

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