lingo 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/COPYING +663 -0
- data/ChangeLog +754 -0
- data/README +322 -0
- data/Rakefile +100 -0
- data/TODO +28 -0
- data/bin/lingo +5 -0
- data/bin/lingoctl +6 -0
- data/de.lang +121 -0
- data/de/lingo-abk.txt +74 -0
- data/de/lingo-dic.txt +56822 -0
- data/de/lingo-mul.txt +3209 -0
- data/de/lingo-syn.txt +14841 -0
- data/de/test_dic.txt +24 -0
- data/de/test_mul.txt +17 -0
- data/de/test_mul2.txt +2 -0
- data/de/test_singleword.txt +2 -0
- data/de/test_syn.txt +4 -0
- data/de/test_syn2.txt +1 -0
- data/de/user-dic.txt +10 -0
- data/en.lang +113 -0
- data/en/lingo-dic.txt +55434 -0
- data/en/lingo-mul.txt +456 -0
- data/en/user-dic.txt +5 -0
- data/info/Objekte.png +0 -0
- data/info/Typen.png +0 -0
- data/info/database.png +0 -0
- data/info/db_small.png +0 -0
- data/info/download.png +0 -0
- data/info/gpl-hdr.txt +27 -0
- data/info/kerze.png +0 -0
- data/info/language.png +0 -0
- data/info/lingo.png +0 -0
- data/info/logo.png +0 -0
- data/info/meeting.png +0 -0
- data/info/types.png +0 -0
- data/lib/lingo.rb +321 -0
- data/lib/lingo/attendee/abbreviator.rb +119 -0
- data/lib/lingo/attendee/debugger.rb +111 -0
- data/lib/lingo/attendee/decomposer.rb +101 -0
- data/lib/lingo/attendee/dehyphenizer.rb +167 -0
- data/lib/lingo/attendee/multiworder.rb +301 -0
- data/lib/lingo/attendee/noneword_filter.rb +103 -0
- data/lib/lingo/attendee/objectfilter.rb +86 -0
- data/lib/lingo/attendee/sequencer.rb +190 -0
- data/lib/lingo/attendee/synonymer.rb +105 -0
- data/lib/lingo/attendee/textreader.rb +237 -0
- data/lib/lingo/attendee/textwriter.rb +196 -0
- data/lib/lingo/attendee/tokenizer.rb +218 -0
- data/lib/lingo/attendee/variator.rb +185 -0
- data/lib/lingo/attendee/vector_filter.rb +158 -0
- data/lib/lingo/attendee/wordsearcher.rb +96 -0
- data/lib/lingo/attendees.rb +289 -0
- data/lib/lingo/cli.rb +62 -0
- data/lib/lingo/config.rb +104 -0
- data/lib/lingo/const.rb +131 -0
- data/lib/lingo/ctl.rb +173 -0
- data/lib/lingo/database.rb +587 -0
- data/lib/lingo/language.rb +530 -0
- data/lib/lingo/modules.rb +98 -0
- data/lib/lingo/types.rb +285 -0
- data/lib/lingo/utilities.rb +40 -0
- data/lib/lingo/version.rb +27 -0
- data/lingo-all.cfg +85 -0
- data/lingo-call.cfg +15 -0
- data/lingo.cfg +78 -0
- data/lingo.rb +3 -0
- data/lir.cfg +72 -0
- data/porter/stem.cfg +311 -0
- data/porter/stem.rb +150 -0
- data/spec/spec_helper.rb +0 -0
- data/test.cfg +79 -0
- data/test/attendee/ts_abbreviator.rb +35 -0
- data/test/attendee/ts_decomposer.rb +31 -0
- data/test/attendee/ts_multiworder.rb +390 -0
- data/test/attendee/ts_noneword_filter.rb +19 -0
- data/test/attendee/ts_objectfilter.rb +19 -0
- data/test/attendee/ts_sequencer.rb +43 -0
- data/test/attendee/ts_synonymer.rb +33 -0
- data/test/attendee/ts_textreader.rb +58 -0
- data/test/attendee/ts_textwriter.rb +98 -0
- data/test/attendee/ts_tokenizer.rb +32 -0
- data/test/attendee/ts_variator.rb +24 -0
- data/test/attendee/ts_vector_filter.rb +62 -0
- data/test/attendee/ts_wordsearcher.rb +119 -0
- data/test/lir.csv +3 -0
- data/test/lir.txt +12 -0
- data/test/lir2.txt +12 -0
- data/test/mul.txt +1 -0
- data/test/ref/artikel.mul +1 -0
- data/test/ref/artikel.non +159 -0
- data/test/ref/artikel.seq +270 -0
- data/test/ref/artikel.syn +16 -0
- data/test/ref/artikel.vec +928 -0
- data/test/ref/artikel.ven +928 -0
- data/test/ref/artikel.ver +928 -0
- data/test/ref/lir.csv +328 -0
- data/test/ref/lir.mul +1 -0
- data/test/ref/lir.non +274 -0
- data/test/ref/lir.seq +249 -0
- data/test/ref/lir.syn +94 -0
- data/test/test_helper.rb +113 -0
- data/test/ts_database.rb +269 -0
- data/test/ts_language.rb +396 -0
- data/txt/artikel-en.txt +157 -0
- data/txt/artikel.txt +170 -0
- data/txt/lir.txt +1317 -0
- metadata +211 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Noneword_filter
|
8
|
+
#
|
9
|
+
class TestAttendeeNoneword_filter < AttendeeTestCase
|
10
|
+
|
11
|
+
def test_basic
|
12
|
+
@input = [wd('Eins|IDF'), wd('Zwei|?'), wd('Drei|IDF'), wd('Vier|?'), ai('EOF|')]
|
13
|
+
@expect = ['vier', 'zwei', ai('EOF|')]
|
14
|
+
meet({})
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
#
|
19
|
+
################################################################################
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Objectfilter
|
8
|
+
#
|
9
|
+
class TestAttendeeObjectfilter < AttendeeTestCase
|
10
|
+
|
11
|
+
def test_basic
|
12
|
+
@input = [wd('Eins|IDF'), wd('zwei|?'), wd('Drei|IDF'), wd('vier|?'), ai('EOF|')]
|
13
|
+
@expect = [wd('Eins|IDF'), wd('Drei|IDF'), ai('EOF|')]
|
14
|
+
meet({'objects'=>'obj.form =~ /^[A-Z]/'})
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
#
|
19
|
+
################################################################################
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Sequencer
|
8
|
+
#
|
9
|
+
class TestAttendeeSequencer < AttendeeTestCase
|
10
|
+
|
11
|
+
def test_basic
|
12
|
+
@input = [
|
13
|
+
# AS
|
14
|
+
wd('Die|IDF', 'die|w'),
|
15
|
+
wd('helle|IDF', 'hell|a'),
|
16
|
+
wd('Sonne|IDF', 'sonne|s'),
|
17
|
+
tk('.|PUNC'),
|
18
|
+
# AK
|
19
|
+
wd('Der|IDF', 'der|w'),
|
20
|
+
wd('schöne|IDF', 'schön|a'),
|
21
|
+
wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
|
22
|
+
ai('EOF|')
|
23
|
+
]
|
24
|
+
@expect = [
|
25
|
+
# AS
|
26
|
+
wd('Die|IDF', 'die|w'),
|
27
|
+
wd('sonne, hell|SEQ', 'sonne, hell|q'),
|
28
|
+
wd('helle|IDF', 'hell|a'),
|
29
|
+
wd('Sonne|IDF', 'sonne|s'),
|
30
|
+
tk('.|PUNC'),
|
31
|
+
# AK
|
32
|
+
wd('Der|IDF', 'der|w'),
|
33
|
+
wd('sonnenuntergang, schön|SEQ', 'sonnenuntergang, schön|q'),
|
34
|
+
wd('schöne|IDF', 'schön|a'),
|
35
|
+
wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
|
36
|
+
ai('EOF|')
|
37
|
+
]
|
38
|
+
meet({'stopper'=>'PUNC,OTHR', 'source'=>'sys-mul'})
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
#
|
43
|
+
################################################################################
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Synonymer
|
8
|
+
#
|
9
|
+
class TestAttendeeSynonymer < AttendeeTestCase
|
10
|
+
|
11
|
+
def test_basic
|
12
|
+
@input = [wd('abtastzeiten|IDF', 'abtastzeit|s')]
|
13
|
+
@expect = [wd('abtastzeiten|IDF', 'abtastzeit|s', 'abtastfrequenz|y', 'abtastperiode|y')]
|
14
|
+
meet({'source'=>'sys-syn', 'check'=>'-,MUL'})
|
15
|
+
# @expect.each_index {|i| assert_equal(@expect[i], @output[i]) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_first
|
19
|
+
@input = [wd('Aktienanleihe|IDF', 'aktienanleihe|s')]
|
20
|
+
@expect = [wd('Aktienanleihe|IDF', 'aktienanleihe|s', 'aktien-anleihe|y',
|
21
|
+
'reverse convertible bond|y', 'reverse convertibles|y')]
|
22
|
+
meet({'source'=>'sys-syn,tst-syn', 'check'=>'-,MUL', 'mode'=>'first'})
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_all
|
26
|
+
@input = [wd('Kerlchen|IDF', 'kerlchen|s')]
|
27
|
+
@expect = [wd('Kerlchen|IDF', 'kerlchen|s', 'kerlchen|y', 'zwerg-nase|y')]
|
28
|
+
meet({'source'=>'sys-syn,tst-syn', 'check'=>'-,MUL', 'mode'=>'all'})
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
#
|
33
|
+
################################################################################
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Textreader
|
8
|
+
#
|
9
|
+
class TestAttendeeTextreader < AttendeeTestCase
|
10
|
+
|
11
|
+
def test_lir_file
|
12
|
+
@expect = [
|
13
|
+
ai('LIR-FORMAT|'), ai('FILE|test/lir.txt'),
|
14
|
+
ai('RECORD|00237'),
|
15
|
+
'020: GERHARD.',
|
16
|
+
'025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
17
|
+
'056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
18
|
+
ai('RECORD|00238'),
|
19
|
+
'020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
20
|
+
'025: das DFG-Projekt GERHARD.',
|
21
|
+
ai('RECORD|00239'),
|
22
|
+
'020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
23
|
+
'056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
24
|
+
ai('EOF|test/lir.txt')
|
25
|
+
]
|
26
|
+
meet({'files'=>'test/lir.txt', 'lir-record-pattern'=>'^\[(\d+)\.\]'})
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_lir_file_another_pattern
|
30
|
+
@expect = [
|
31
|
+
ai('LIR-FORMAT|'), ai('FILE|test/lir2.txt'),
|
32
|
+
ai('RECORD|00237'),
|
33
|
+
'020: GERHARD.',
|
34
|
+
'025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
35
|
+
'056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
36
|
+
ai('RECORD|00238'),
|
37
|
+
'020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
38
|
+
'025: das DFG-Projekt GERHARD.',
|
39
|
+
ai('RECORD|00239'),
|
40
|
+
'020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
41
|
+
'056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
42
|
+
ai('EOF|test/lir2.txt')
|
43
|
+
]
|
44
|
+
meet({'files'=>'test/lir2.txt', 'lir-record-pattern'=>'^\021(\d+)\022'})
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_normal_file
|
48
|
+
@expect = [
|
49
|
+
ai('FILE|test/mul.txt'),
|
50
|
+
'Die abstrakte Kunst ist schön.',
|
51
|
+
ai('EOF|test/mul.txt')
|
52
|
+
]
|
53
|
+
meet({'files'=>'test/mul.txt'})
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
#
|
58
|
+
################################################################################
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Textwriter
|
8
|
+
#
|
9
|
+
class TestAttendeeTextwriter < AttendeeTestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@data = [
|
13
|
+
ai('FILE|test/test.txt'),
|
14
|
+
wd('Dies|IDF'),
|
15
|
+
wd('ist|IDF'),
|
16
|
+
wd('eine|IDF'),
|
17
|
+
wd('Zeile|IDF'),
|
18
|
+
tk('.|PUNC'),
|
19
|
+
ai('EOL|test/test.txt'),
|
20
|
+
wd('Dies|IDF'),
|
21
|
+
wd('ist|IDF'),
|
22
|
+
wd('eine|IDF'),
|
23
|
+
wd('zweite|IDF'),
|
24
|
+
wd('Zeile|IDF'),
|
25
|
+
tk('.|PUNC'),
|
26
|
+
ai('EOL|test/test.txt'),
|
27
|
+
ai('EOF|test/test.txt')
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_basic
|
32
|
+
@input = @data
|
33
|
+
@expect = [ "Dies,ist,eine,Zeile,.\n", "Dies,ist,eine,zweite,Zeile,.\n" ]
|
34
|
+
meet({'ext'=>'tst', 'sep'=>','}, false)
|
35
|
+
|
36
|
+
@output = File.readlines('test/test.tst', encoding: Lingo::ENC)
|
37
|
+
assert_equal(@expect, @output)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_complex
|
41
|
+
@input = @data
|
42
|
+
@expect = [ "Dies-ist-eine-Zeile-.\n", "Dies-ist-eine-zweite-Zeile-.\n" ]
|
43
|
+
meet({'ext'=>'yip', 'sep'=>'-'}, false)
|
44
|
+
|
45
|
+
@output = File.readlines('test/test.yip', encoding: Lingo::ENC)
|
46
|
+
assert_equal(@expect, @output)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_crlf
|
50
|
+
@input = @data
|
51
|
+
@expect = [ "Dies\n", "ist\n", "eine\n", "Zeile\n", ".\n", "Dies\n", "ist\n", "eine\n", "zweite\n", "Zeile\n", ".\n" ]
|
52
|
+
meet({'sep'=>"\n"}, false)
|
53
|
+
|
54
|
+
@output = File.readlines('test/test.txt2', encoding: Lingo::ENC)
|
55
|
+
assert_equal(@expect, @output)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_lir_file
|
59
|
+
@input = [
|
60
|
+
ai('LIR-FORMAT|'), ai('FILE|test/lir.txt'),
|
61
|
+
ai('RECORD|00237'),
|
62
|
+
'020: GERHARD.',
|
63
|
+
'025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
64
|
+
"056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.\r",
|
65
|
+
ai('RECORD|00238'),
|
66
|
+
'020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
67
|
+
"025: das DFG-Projekt GERHARD.\r",
|
68
|
+
ai('RECORD|00239'),
|
69
|
+
'020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
70
|
+
"056: \"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.\r",
|
71
|
+
ai('EOF|test/lir.txt')
|
72
|
+
]
|
73
|
+
@expect = [
|
74
|
+
"00237*020: GERHARD. 025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressour\
|
75
|
+
cen. 056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.\r\n",
|
76
|
+
"00238*020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen. 025: das D\
|
77
|
+
FG-Projekt GERHARD.\r\n",
|
78
|
+
"00239*020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter. 056: \"Das Buch ist ein praxisbezogenes VADEMECUM\
|
79
|
+
für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.\r\n"
|
80
|
+
]
|
81
|
+
meet({'ext'=>'csv', 'lir-format'=>nil}, false)
|
82
|
+
|
83
|
+
@output = File.readlines('test/lir.csv', encoding: Lingo::ENC)
|
84
|
+
assert_equal(@expect, @output)
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_nonewords
|
88
|
+
@input = [ai('FILE|test/text.txt'), 'Nonwörter', 'Nonsense', ai('EOF|test/text.txt')]
|
89
|
+
@expect = [ "Nonwörter\n", "Nonsense" ]
|
90
|
+
meet({'ext'=>'non', 'sep'=>"\n"}, false)
|
91
|
+
|
92
|
+
@output = File.readlines('test/text.non', encoding: Lingo::ENC)
|
93
|
+
assert_equal(@expect, @output)
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
#
|
98
|
+
################################################################################
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
################################################################################
|
4
|
+
#
|
5
|
+
# Attendee Tokenizer
|
6
|
+
#
|
7
|
+
class TestAttendeeTokenizer < AttendeeTestCase
|
8
|
+
|
9
|
+
def test_basic
|
10
|
+
@input = ["Dies ist ein Test."]
|
11
|
+
@expect = [tk('Dies|WORD'), tk('ist|WORD'), tk('ein|WORD'), tk('Test|WORD'), tk('.|PUNC')]
|
12
|
+
meet({})
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_complex
|
16
|
+
@input = ["1964 www.vorhauer.de bzw. nasenbär, ()"]
|
17
|
+
@expect = [
|
18
|
+
tk('1964|NUMS'),
|
19
|
+
tk('www.vorhauer.de|URLS'),
|
20
|
+
tk('bzw|WORD'),
|
21
|
+
tk('.|PUNC'),
|
22
|
+
tk('nasenbär|WORD'),
|
23
|
+
tk(',|PUNC'),
|
24
|
+
tk('(|OTHR'),
|
25
|
+
tk(')|OTHR')
|
26
|
+
]
|
27
|
+
meet({})
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
#
|
32
|
+
################################################################################
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Variator
|
8
|
+
#
|
9
|
+
class TestAttendeeVariator < AttendeeTestCase
|
10
|
+
|
11
|
+
def test_basic
|
12
|
+
@input = [wd('fchwarz|?'), wd('fchilling|?'), wd('iehwarzfchilling|?'), wd('fchiiiirg|?')]
|
13
|
+
@expect = [
|
14
|
+
wd('*schwarz|IDF', 'schwarz|s', 'schwarz|a'),
|
15
|
+
wd('*schilling|IDF', 'schilling|s'),
|
16
|
+
wd('*schwarzschilling|KOM', 'schwarzschilling|k', 'schwarz|a+', 'schilling|s+', 'schwarz|s+'),
|
17
|
+
wd('fchiiiirg|?')
|
18
|
+
]
|
19
|
+
meet({'source'=>'sys-dic'})
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
#
|
24
|
+
################################################################################
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Vector_filter
|
8
|
+
#
|
9
|
+
class TestAttendeeVector_filter < AttendeeTestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@input = [
|
13
|
+
ai('FILE|test'),
|
14
|
+
wd('Testwort|IDF', 'substantiv|s', 'adjektiv|a', 'verb|v', 'eigenname|e', 'mehrwortbegriff|m'),
|
15
|
+
wd('unknown|?'),
|
16
|
+
ai('EOF|test')
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_basic
|
21
|
+
@expect = [ai('FILE|test'), 'substantiv', ai('EOF|test')]
|
22
|
+
meet({})
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_lexicals
|
26
|
+
@expect = [ai('FILE|test'), 'adjektiv', 'eigenname', 'substantiv', 'verb', ai('EOF|test')]
|
27
|
+
meet({'lexicals'=>'[save]'})
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_sort_term_abs
|
31
|
+
@expect = [ai('FILE|test'), '1 adjektiv', '1 eigenname', '1 substantiv', '1 verb', ai('EOF|test')]
|
32
|
+
meet({'lexicals'=>'[save]', 'sort'=>'term_abs'})
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_sort_term_rel
|
36
|
+
@expect = [ai('FILE|test'), '0.50000 adjektiv', '0.50000 eigenname', '0.50000 substantiv', '0.50000 verb', ai('EOF|test')]
|
37
|
+
meet({'lexicals'=>'[save]', 'sort'=>'term_rel'})
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_sort_sto_abs
|
41
|
+
@expect = [ai('FILE|test'), 'adjektiv {1}', 'eigenname {1}', 'substantiv {1}', 'verb {1}', ai('EOF|test')]
|
42
|
+
meet({'lexicals'=>'[save]', 'sort'=>'sto_abs'})
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_sort_sto_rel
|
46
|
+
@expect = [ai('FILE|test'), 'adjektiv {0.50000}', 'eigenname {0.50000}', 'substantiv {0.50000}', 'verb {0.50000}', ai('EOF|test')]
|
47
|
+
meet({'lexicals'=>'[save]', 'sort'=>'sto_rel'})
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_nonword
|
51
|
+
@expect = [ai('FILE|test'), 'unknown', ai('EOF|test')]
|
52
|
+
meet({'lexicals'=>'\?'})
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_nonword_sort_term_abs
|
56
|
+
@expect = [ai('FILE|test'), '1 unknown', ai('EOF|test')]
|
57
|
+
meet({'lexicals'=>'\?', 'sort'=>'term_abs'})
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
#
|
62
|
+
################################################################################
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
#
|
7
|
+
# Attendee Wordsearcher
|
8
|
+
#
|
9
|
+
class TestAttendeeWordsearcher < AttendeeTestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@test_synonyms = [
|
13
|
+
lx('experiment|y'), lx('kontrolle|y'), lx('probelauf|y'),
|
14
|
+
lx('prüfung|y'), lx('test|y'), lx('testlauf|y'),
|
15
|
+
lx('testversuch|y'), lx('trockentest|y'), lx('versuch|y')
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_basic
|
20
|
+
@input = [tk('Dies|WORD'), tk('ist|WORD'), tk('ein|WORD'), tk('Test|WORD'), tk('.|PUNC'), ai('EOL|')]
|
21
|
+
@expect = [
|
22
|
+
wd('Dies|IDF', 'dies|w'),
|
23
|
+
wd('ist|IDF', 'sein|v'),
|
24
|
+
wd('ein|IDF', 'einen|v', 'ein|w'),
|
25
|
+
wd('Test|IDF', 'test|s', 'testen|v'),
|
26
|
+
tk('.|PUNC'),
|
27
|
+
ai('EOL|')
|
28
|
+
]
|
29
|
+
meet({'source'=>'sys-dic,sys-syn,sys-mul'})
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_mode
|
33
|
+
@input = [tk('Dies|WORD'), tk('ist|WORD'), tk('ein|WORD'), tk('Test|WORD'), tk('.|PUNC'), ai('EOL|')]
|
34
|
+
@expect = [
|
35
|
+
wd('Dies|IDF', 'dies|w'),
|
36
|
+
wd('ist|IDF', 'sein|v'),
|
37
|
+
wd('ein|IDF', 'einen|v', 'ein|w'),
|
38
|
+
wd('Test|IDF', 'test|s', 'testen|v'),
|
39
|
+
tk('.|PUNC'),
|
40
|
+
ai('EOL|')
|
41
|
+
]
|
42
|
+
meet({'source'=>'sys-syn,sys-dic', 'mode'=>'first'})
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_two_sources_mode_first
|
46
|
+
@input = [
|
47
|
+
tk('Hasennasen|WORD'),
|
48
|
+
tk('Knaller|WORD'),
|
49
|
+
tk('Lex-Lingo|WORD'),
|
50
|
+
tk('A-Dur|WORD'),
|
51
|
+
ai('EOL|')
|
52
|
+
]
|
53
|
+
@expect = [
|
54
|
+
wd('Hasennasen|?'),
|
55
|
+
wd('Knaller|IDF', 'knaller|s'),
|
56
|
+
wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
|
57
|
+
wd('A-Dur|IDF', 'a-dur|s'),
|
58
|
+
ai('EOL|')
|
59
|
+
]
|
60
|
+
meet({'source'=>'sys-dic,tst-dic', 'mode'=>'first'})
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_two_sources_mode_first_flipped
|
64
|
+
@input = [
|
65
|
+
tk('Hasennasen|WORD'),
|
66
|
+
tk('Knaller|WORD'),
|
67
|
+
tk('Lex-Lingo|WORD'),
|
68
|
+
tk('A-Dur|WORD'),
|
69
|
+
ai('EOL|')
|
70
|
+
]
|
71
|
+
@expect = [
|
72
|
+
wd('Hasennasen|?'),
|
73
|
+
wd('Knaller|IDF', 'knaller|s'),
|
74
|
+
wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
|
75
|
+
wd('A-Dur|IDF', 'b-dur|s'),
|
76
|
+
ai('EOL|')
|
77
|
+
]
|
78
|
+
meet({'source'=>'tst-dic,sys-dic', 'mode'=>'first'})
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_select_two_sources_mode_all
|
82
|
+
@input = [
|
83
|
+
tk('Hasennasen|WORD'),
|
84
|
+
tk('Knaller|WORD'),
|
85
|
+
tk('Lex-Lingo|WORD'),
|
86
|
+
tk('A-Dur|WORD'),
|
87
|
+
ai('EOL|')
|
88
|
+
]
|
89
|
+
@expect = [
|
90
|
+
wd('Hasennasen|?'),
|
91
|
+
wd('Knaller|IDF', 'knaller|s'),
|
92
|
+
wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
|
93
|
+
wd('A-Dur|IDF', 'a-dur|s', 'b-dur|s'),
|
94
|
+
ai('EOL|')
|
95
|
+
]
|
96
|
+
meet({'source'=>'sys-dic,tst-dic', 'mode'=>'all'})
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_select_two_sources_mode_def
|
100
|
+
@input = [
|
101
|
+
tk('Hasennasen|WORD'),
|
102
|
+
tk('Knaller|WORD'),
|
103
|
+
tk('Lex-Lingo|WORD'),
|
104
|
+
tk('A-Dur|WORD'),
|
105
|
+
ai('EOL|')
|
106
|
+
]
|
107
|
+
@expect = [
|
108
|
+
wd('Hasennasen|?'),
|
109
|
+
wd('Knaller|IDF', 'knaller|s'),
|
110
|
+
wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
|
111
|
+
wd('A-Dur|IDF', 'a-dur|s', 'b-dur|s'),
|
112
|
+
ai('EOL|')
|
113
|
+
]
|
114
|
+
meet({'source'=>'sys-dic,tst-dic'})
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
#
|
119
|
+
################################################################################
|