lingo 1.8.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/.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
|
+
################################################################################
|