-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathChangeLog
1027 lines (784 loc) · 44.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# markup: rd
= Revision history for Lingo
== 1.10.2 [2019-02-05]
* Fixed regression introduced in 1.9.0 where source form was assumed to be a
Lingo::Language::Token (issue reported by Leonhard Maylein).
== 1.10.1 [2019-02-01]
* Fixed regression introduced in 1.8.6 where renamed constant in
Lingo::Attendee::VectorFilter was not reflected in Lingo::Srv
(issue #16 by svelsae).
== 1.10.0 [2018-06-16]
* <b>Dropped support for Ruby 2.0.</b>
* Updated dependency versions.
== 1.9.0 [2016-09-13]
* <b>Dropped support for Ruby 1.9.</b>
* Removed support for deprecated options and attendee names (+old+ → +new+):
* Lingo::Language::Grammar<b></b>:
+compositum+ → +compound+
* Lingo::Attendee::TextReader<b></b>:
+lir-record-pattern+ → +records+
* Lingo::Config<b></b>:
+multiworder+ → +multi_worder+,
+objectfilter+ → +object_filter+,
+textreader+ → +text_reader+,
+textwriter+ → +text_writer+,
+vectorfilter+ → +vector_filter+,
+wordsearcher+ → +word_searcher+
* Lingo::Attendee::TextWriter learned format directives for +ext+ option
(currently supported are: <tt>%c</tt> = config name, <tt>%l</tt> = language
name, <tt>%d</tt> = current date, <tt>%t</tt> = current time).
* Lingo::Attendee::Sequencer remembers word form of sequences.
* Updated and extended English system dictionary and suffix list.
* Fixed errors with XML input (issue #15 by Thomas Berger).
== 1.8.7 [2015-08-07]
* Added Lingo::Attendee::LsiFilter to correlate semantically related terms
(LSI[https://en.wikipedia.org/wiki/Latent_semantic_indexing]) over the
"corpus" of all files processed during a single program invocation; requires
lsi4r[https://blackwinter.github.com/lsi4r] which in turn requires
rb-gsl[https://blackwinter.github.com/rb-gsl]. [EXPERIMENTAL: Interface may
be changed or removed in next release.]
* Added Lingo::Attendee::HalFilter to correlate semantically related terms
(HAL[https://en.wikipedia.org/wiki/Hyperspace_Analogue_to_Language]) over
individual documents; requires hal4r[https://blackwinter.github.com/hal4r]
which in turn requires rb-gsl[https://blackwinter.github.com/rb-gsl].
[EXPERIMENTAL: Interface may be changed or removed in next release.]
* Added Lingo::Attendee::AnalysisFilter and associated +lingoctl+ tooling.
* Multiword dictionaries can now identify hyphenated variants (e.g.
<tt>automatic data-processing</tt>); set <tt>hyphenate: true</tt> in the
dictionary config.
* Lingo::Attendee::Tokenizer no longer considers hyphens at word edges as part
of the word. As a consequence, Lingo::Attendee::Dehyphenizer has been
dropped.
* Dropped Lingo::Attendee::NonewordFilter; use Lingo::Attendee::VectorFilter
with option <tt>lexicals: '\?'</tt> instead.
* Lingo::Attendee::TextReader and Lingo::Attendee::TextWriter learned
+encoding+ option to read/write text that is not UTF-8 encoded;
configuration files and dictionaries still need to be UTF-8, though.
* Lingo::Attendee::TextReader and Lingo::Attendee::TextWriter learned to
read/write Gzip-compressed files (file extension +.gz+ or +.gzip+).
* Lingo::Attendee::Sequencer learned to recognize +0+ in the pattern to match
number tokens.
* Fixed Lingo::Attendee::TextReader to recognize BOM in input files; does not
apply to input read from +STDIN+.
* Fixed regression introduced in 1.8.6 where Lingo::Attendee::Debugger would
no longer work immediately behind Lingo::Attendee::TextReader.
* Fixed +lingoctl+ copy commands when overwriting existing files.
* Refactored Lingo::Database::Crypter into a module.
* JRuby 9000 compatibility.
== 1.8.6 [2015-02-09]
* Lingo::Attendee::VectorFilter learned +pos+ option to print position and
byte offset with each word.
* Lingo::Attendee::VectorFilter learned +tfidf+ option to sort results based
on their tf–idf[https://en.wikipedia.org/wiki/Tf–idf] score; the document
frequencies are calculated over the "corpus" of all files processed during
a single program invocation.
* Lingo::Attendee::VectorFilter learned +tokens+ option to filter on
Lingo::Language::Token in addition to Lingo::Language::Word.
* Lingo::Attendee::VectorFilter no longer supports +debug+ (as well as
+prompt+ and +preamble+); use Lingo::Attendee::DebugFilter instead.
* Lingo::Attendee::TextReader no longer removes line endings; option +chomp+
is obsolete.
* Lingo::Attendee::TextReader passes byte offset to the following attendee.
* Lingo::Attendee::Tokenizer records token's position and byte offset.
* Lingo::Attendee::Tokenizer learned <tt>skip-tags</tt> option to skip over
specified tags' contents.
* Lingo::Attendee subclasses warn when invalid or obsolete options or names
are used.
* Changed German infix substitution +/en+ to +ch/chen+ in order to prevent
overly aggressive identifications.
* Internal refactoring and API changes.
== 1.8.5 [2014-10-02]
* Dictionary values (projections) are no longer sorted; hence, order of
definition affects processing.
* Lexicals in Lingo::Language::Word are no longer sorted; in particular,
compound parts keep their original order.
* Lexicals in Lingo::Language::Word are no longer cleaned from duplicates.
* Compiled dictionaries are updated whenever the Lingo version or their
configuration changes, not only when the source file's size or modification
time changes.
* Lingo::Attendee::Synonymer learned <tt>compound-parts</tt> option to also
generate synonyms for compound parts when set to +true+.
* Lingo::Attendee::TextReader learned better PDF-to-text conversion using the
+pdftotext+ command; specify <tt>filter: pdftotext</tt> in the config.
* Lingo::Attendee::VectorFilter learned +dict+ option to print words in
dictionary format (viz. Lingo::Database::Source::WordClass).
* Lingo::Attendee::VectorFilter learned +preamble+ option to print current
configuration to the beginning of the log file (<tt>debug: 'true'</tt>);
set <tt>preamble: false</tt> to disable.
* Multiword dictionaries compiled from base forms can now generate inflected
adjectives based on the gender of the head noun; set <tt>inflect: true</tt>
in the dictionary config.
* Lingo::Database::Source::WordClass supports gender information being encoded
in the dictionary as well as shorthand notation for multiple word
classes/genders.
* Lingo::Database::Source::WordClass supports compounds being encoded in the
dictionary (appending <tt>+</tt> to their parts' word classes is
recommended).
* Lingo::Database::Source removes leading and trailing whitespace from
dictionary lines.
* Lingo::Database::Crypter uses OpenSSL to encrypt/decrypt dictionaries.
Note: Can't decrypt dictionaries encrypted with the old scheme anymore.
* Lingo::Attendee::Tokenizer learned subset of MediaWiki syntax.
* Eliminated pathological behaviour of the +URLS+ rule in
Lingo::Attendee::Tokenizer.
* Fixed regression introduced in 1.8.2 where <tt>combine: all</tt> would no
longer work in Lingo::Attendee::MultiWorder.
* Updated and extended Russian dictionaries. (Yulia Dorokhova, Thomas Müller)
* +lingoctl+ no longer overwrites existing files without confirmation.
* +lingoctl+ learned +archive+ command.
* Dictionary cleanup.
== 1.8.4 [2013-10-18]
* Lingo::Attendee::Sequencer accepts regular expression patterns.
* Lingo::Attendee::Sequencer substitutes +0+ in the format string for the
matched pattern.
* Lingo::Attendee::NonewordFilter learned +dict+ option to print nonewords
in dictionary format.
* Added progress reporting to Lingo::Attendee::TextReader for +STDIN+.
* <tt>lingoctl demo</tt> reports successful initialization.
* Russian localization for Lingo::Web. (Yulia Dorokhova, Thomas Müller)
* Lingo::Web learned parameter +hl+ to set UI language.
* Lingo::Web displays the configuration in use.
* Lingo::Srv accepts array of query strings in addition to single query
string.
* Meeting config takes precedence over language config.
* When dictionary entries are rejected during conversion, the location of the
reject file will be shown.
* LIR record number defaults to match string in absence of capture group.
* Optionally prevent Lingo from sorting any results by setting the
+LINGO_NO_SORT+ environment variable.
== 1.8.3 [2012-09-20]
* Fixed regression introduced in 1.8.2 where reading input from +STDIN+ was no
longer possible.
* Fixed regression introduced in 1.8.2 where Lingo would no longer run on Ruby
1.9.2.
* Fixed length limit handling for multibyte characters in SDBM store.
* Fixed encoding issue in SDBM store.
* Fixed issue with BOM in config files.
* Modified character handling to accept *any* Unicode letter (_Alphabetic_)
and digit (<i>Decimal Number</i>).
* Modified Lingo::Attendee::Tokenizer to use only hard-coded tokenization
rules.
* Modified Lingo::Attendee::VectorFilter option +lexicals+ to be
case-sensitive.
* Improved overall performance and memory usage; Lingo::Attendee::Sequencer
changed the order sequences are inserted into the stream.
* Eliminated performance penalty caused by Lingo::Attendee::Abbreviator.
* Added Russian language support. (Yulia Dorokhova, Thomas Müller)
* Added +fields+ option to Lingo::Attendee::TextReader to cut off field
labels; defaults to +true+ in record (LIR) mode.
* Added +skip+ option to Lingo::Attendee::TextReader to skip lines matching
the given pattern.
* Added +src+ option to Lingo::Attendee::VectorFilter to print "source" part
of compounds.
* Added +lingosrv+ and +lingoweb+ executables. The former provides a simple
HTTP endpoint with JSON output; the latter serves a demo web interface.
* Refactored internal caching.
* Made dependency on Ruby version >= 1.9.2 explicit.
* Removed reporting facility (options <tt>--perfmon</tt> and
<tt>--status</tt>).
* Learned <tt>--profile</tt> option to collect profiling information while
running.
* Deprecated Lingo::Language::Grammar option +compositum+ (now +compound+),
Lingo::Config option +textreader+ (now +text_reader+), and
Lingo::Attendee::TextReader option +lir-record-pattern+ (now +records+);
they will be removed in Lingo 1.9.
== 1.8.2 [2012-04-19]
* Performance improvements regarding Lingo::Attendee::VectorFilter (as well
as Lingo::Attendee::NonewordFilter) memory usage; set <tt>sort: false</tt>
in the config.
* Added Lingo::Attendee::Stemmer (implementing Porter's algorithm for suffix
stripping).
* Added progress reporting to Lingo::Attendee::TextReader; set <tt>progress:
true</tt> in the config.
* Added directory and glob processing to Lingo::Attendee::TextReader (new
options +glob+ and +recursive+).
* Renamed Lingo::Attendee::TextReader option +lir-record-pattern+ to
+records+.
* Fixed Lingo::Attendee::Debugger to forward all objects so it can be
inserted between any two attendees in the config.
* Fixed regression introduced in 1.8.0 where Lingo would not use existing
compiled dictionary when source file is not present.
* Fixed "invalid byte sequence in UTF-8" on Windows for SDBM store.
* Enabled pluggable (compiled) dictionaries and storage backends.
* Extensive internal refactoring and cleanup. (Finished for now.)
== 1.8.1 [2012-02-19]
* Introduced alternative storage backends, mainly to circumvent SDBM's record
size limit.
* Warn when truncating a record for SDBM now.
* Added benchmarks for storage backends.
* Added demo and sample commands to +lingoctl+ and introduced aliases.
* Added default plugin path.
* Fixed Gem dependencies.
* Updated the German system dictionary.
* Extended the README with test setup and literature.
* Internal refactoring and some housekeeping.
== 1.8.0 [2012-01-01]
* Ruby 1.8 officially no longer supported! Use Lingo 1.7.x instead.
* Executable may be run from outside installation root directory now.
See README for further details.
* Search path for dictionaries and configuration files; plugin system.
* Lingo::Attendee::TextReader can read from +STDIN+ if no files given;
leave out the +files+ parameter in the config for this to trigger.
* Status/performance details as well as progress information are now
printed on +STDERR+ instead of +STDOUT+ in order to not mix with regular
output. Learned <tt>--log</tt> option to write such information to a file.
* Additional internal refactorings. (To be continued...)
== 1.7.1 [2011-10-24]
* Lingo::Attendee::MultiWorder actually finds the *longest* matching multiword
group.
* Multiword entries in Lingo::Database::Source::SingleWord dictionaries now
respect <tt>def-wc</tt>; new parameter <tt>def-mul-wc</tt> to control
the word class for multiword entries (defaults to <tt>def-wc</tt>). Use
<tt>def-mul-wc: 'm'</tt> in your <tt>.lang</tt> to restore the previous
behaviour.
* Added Lingo::Attendee::Formatter for configurable output formatting as an
alternative to Lingo::Attendee::TextWriter.
* Added basic input filters to enable indexing of HTML/XML (and PDF) files.
* Updated the system dictionary.
* Switched license to Affero GPL.
== 1.7.0 [2010-12-15]
* More Ruby 1.9 compatibility.
* Extended Lingo::Attendee::VectorFilter to double as enhanced
Lingo::Attendee::NonewordFilter.
* Fixed Lingo::Attendee::Sequencer to recognize additional word classes beyond
the first.
* Fixed Lingo::Attendee::Sequencer to not prematurely flush the buffer, which
led to a decreased recognition rate.
* Housekeeping.
== 1.6.12 [2010-11-22]
* Ruby 1.9 compatibility, finally.
* Added <tt>lingoweb.rb</tt>, a plain & simple web frontend for Lingo.
* Added DIFF-LCS gem directly to Lingo distribution.
== 1.6.11 [2010-02-04]
* Redirect Lingo output to <tt>/dev/null</tt> during testing. Indicate error
with appropriate exit code.
* Replace usage of command-line diff with cross-plattform Ruby implementation
(requires diff-lcs[https://rubygems.org/gems/diff-lcs]).
* Provide alternatives to standard zip command on windows platforms.
* Use +UNK+ itself if it doesn't have any lexicals.
* Use compo form instead of word form when lexicalizing compound entry for
multiword dictionaries.
* Lingo::Language::LexicalHash#[] must use target (not source) form.
* Optionally, try to find matches for all lexicals a word has.
* Made '-' a +PRINTABLE_CHAR+.
* Allow synonyms to be considered for multiword matching.
* Don't use compound parts.
* Introduced some (more or less arbitrary) line length limit. We can only
store values of a certain length anyway (with SDBM). Entries exceeding this
limit will be rejected and logged in the <tt>.rev</tt> file.
== 1.6.10 [2009-11-09]
* Prevent "infinite" backtracking in regular expressions.
== 1.6.9 [2009-08-13]
* Updated configs.
== 1.6.8 [2009-06-01]
* Partly reverted Ruby 1.9 compatibility where it clashed with the 1.8 series.
== 1.6.7 [2009-05-21]
* Initiale Bereitstellung von Lingo in Subversion
* BUGFIX: Token wurden durch den Caching-Mechanismus in ihrer Schreibweise
verändert (Groß-/Kleinschreibung).
* Englische Wörterbücher, ein Beispiel-Artikel und eine Konfiguration für das
Englische wurden aufgenommen. Aufruf mit <tt>lingo.rb -c lingo-en.cfg -l en
<datei></tt>.
* Integration der Testumgebung für Entwickler.
* Die Attendees in den Lingo-Konfigurationsdateien werden automatisch
verkettet. Dies erspart mühsame Verlinkung von Hand und macht die
Konfiguration lesbarer.
* Modified parameters for Tokenizer and building of databases to handle UTF-8
correctly. Printable characters from the ASCII charset and every UTF
character greater than x80 is now recognized as a non word breaking
character. so now diacritical characters are handled well.
* Added a command line option <tt>-p</tt> for lingo.rb for making detailed
performance mesurements possible for each single attendee.
* Allow Lingo.new to be called from a different directory. (Still need to
Dir.chdir to #talk because of the dictionaries...).
* Allow Textreader to read from STDIN.
* Allow Lingo to be called from an external library or program; pass a string
and get an array back.
* Allow Textwriter to write to STDOUT.
* Match suffixes case-insensitively.
* Don't exclude synonyms that are eponymous with the original word.
* Don't stop variating hyphenated words if any component was taken as-is.
* Basic Ruby 1.9 compatibility.
* Words should be counted per record, not per document, in LIR mode.
* Added Porter stemmer.
== 1.6.6 [2007-08-18]
* <b>Englische Wörterbücher ergänzt</b>
Lingo kann nun auch Englisch. Dazu muss beim Aufruf von Lingo die Option
<tt>-l en</tt> angegeben werden. Ein englischer Artikel ist unter
txt/artikel-en.txt zu finden.
== 1.6.5 [2006-09-18]
* <b>Eckige Klammern als darstellbare Zeichen eingebaut</b>
== 1.6.4 [2006-05-29]
* <b>Neuer Attendee Dehyphenizer</b>
Zur Behandlung von Bindestrichen am Zeilenende wurde der Dehyphenizer
eingeführt.
== 1.6.3 [2006-05-23]
* <b>GPL-Wörterbuch</b>
Das Systemwörterbuch ist vollständig unter GPL gestellt.
== 1.6.2 [2006-05-12]
* <b>Pfad- und Dateibehandlung</b>
Kleine Fehlerbehebung in der Pfadgenerierung im Textwriter.
* <b>Return-Codes</b>
Bei Aufruf der Hilfe oder bei Fehlersituationen, die intern abgefangen
werden, wird der Return-Code 1 gesetzt, um somit bessere Steuerung in
der Batchverarbeitung zu ermöglichen.
== 1.6.1 [2006-03-22]
* <b>Fehlerkorrektur im Multiworder</b>
Der Multiworder hat sich in einem seltenen Spezialfall nicht korrekt
verhalten. Das ist bereinigt.
== 1.6.0 [2006-03-20]
* <b>Wörterbücher umbenannt</b>
Die standardmäßig mitgelieferten Wörterbücher sind umbenannt worden in
lingo-xxx.txt und haben als einheitlichen Separator zwischen Schlüssel
und Werten das '='-Zeichen.
* <b>Bereinigungen durchgeführt</b>
Aus dem Code sind viele alte Programmschnipsel entfernt worden.
== 1.6.0rc2b [2006-03-20]
* <b>Wörterbücher umbenannt</b>
Die standardmäßig mitgelieferten Wörterbücher sind umbenannt worden in
lingo-xxx.txt und haben als einheitlichen Separator zwischen Schlüssel
und Werten das '='-Zeichen.
* <b>Bereinigungen durchgeführt</b>
Aus dem Code sind viele alte Programmschnipsel entfernt worden.
== 1.6.0rc2a [2006-03-13]
* <b>Fehlerkorrektur Multiworder</b>
Ein klitzekleiner Fehler hat sich doch durch die übereifrig schnelle
Bereitstellung der neuen Version eingeschlichen. Ist korrigiert und in
die Testroutinen mit aufgenommen.
* <b>Punkt-Behandlung vollständig überarbeitet (Abbreviator wieder im
Einsatz!) => TEIL 2</b>
...hatte ich doch vergessen zu erwähnen, dass als Voraussetzung für das
Funktionieren der neu eingeführten Punkt-Behandlung ZWINGEND die
Tokenizer-Regel 'ABRS' in der <tt>de.lang</tt> auskommentiert werden muss.
== 1.6.0rc2 [2006-03-09]
* <b>Vorsicht bei CFG-Dateien!</b>
Multiworder und Sequencer vertragen beide einen 'stopper'-Parameter, der in
der Regel mit 'PUNCT,OTH_C' vorbelegt ist. Dies soll Token identifizieren,
die durch die Regel gleichen Namens im Tokenizer erkannt wurden. Diese
Regeln sind jedoch umbenannt worden (weiß nicht mit welcher Version) in
'PUNC' und 'OTHR'. Daher bitte die entsprechenden Einträge ändern auf
'PUNC,OTHR'.
* <b>Punkt-Behandlung vollständig überarbeitet (Abbreviator wieder im
Einsatz!)</b>
Die Behandlung des Zeichen '.' wurde komplett neu designet. Das Zeichen '.'
kommt grundsätzlich in drei verschiedenen Kontexten vor:
1. Als Punkt hinter einer Zahl (1. = Erster, 2. = Zweiter,...)
2. Als Abkürzungspunkt
3. Der Satzendepunkt
Der 1. Fall ist sehr sicher durch eine Tokenizer-Regel zu identifizieren
und wird daher hier nicht weiter betrachtet. Dabei wird kein Punkt-Token
erzeugt, sondern der Punkt im Stammwort mitgegeben (z.B. <1.>).
Zwischen dem 2. und dem 3. Fall macht der Tokenizer keine Unterscheidung
mehr. Der Punkt wird als eigenständiges Token erkannt und in den
Verarbeitungsstrom weitergereicht. Der Abbreviator versucht nun
Abkürzungen anhand von Punkt-Token zu erkennen. Taucht ein Punkt im
Zeichenstrom auf, dann wird das vorhergehende Word im Abkürzungswörterbuch
nachgeschlagen. Wird das Wort dort gefunden, wird das Punkt-Token aus dem
Zeichenstrom entfernt und die Abkürzung als identifiziert weitergereicht.
Bleibt neben dem Satzendepunkt noch der Abkürzungspunkt z.B. in
Personennamen (John F. Kennedy). Diese müssen vom Multiworder zuverlässig
als Teil einer Mehrwortgruppe erkannt und ggf. ebenfalls entfernt werden.
Die zusätzlich aufgebohrtet Testroutinen zeigten ein zuverlässiges
Verhalten.
== 1.6.0rc1 [2006-02-27]
* <b>Grundlegende architektonische Überarbeitung</b>
Die über ein Jahr gewachsene Struktur von Lingo wurde grundlich
überarbeitet. Detailliertere Dokumentation folgt.
* <b>Abbreviator entfernt</b>
Den Attendee Abbreviator gibt es nicht mehr. Seine Funktion wird vom
Wordsearcher mit übernommen. Wenn ein Wort nicht erkannt wird, so prüft
der Wordsearcher das Wort erneut mit abschließendem Punkt, wenn das
nächste Token im Zeichenstrom tatsächlich ein Punkt ist. In diesem Fall
wird das Punkt-Token aus dem Datenstrom entfernt.
* <b>Ocr_variator heißt jetzt Variator</b>
Kleine kosmetische Anpassung. Der Ocr-Bezug stimmt zwar historisch gesehen
noch, mit der eigentlichen Funktion hat es jedoch nichts zu tun.
* <b>Decomposer mit zusätzlicher Validitätsprüfung und Kennzeichnung</b>
Der Decomposer kann bei Bedarf Komposita einer zusätzlichen Prüfung
unterziehen. Ist der Schlüssel
<tt>de.lang:language/dictionary/compound/skip-sequences</tt> angegeben, der
z.B. in der Form <tt>skip-sequences: [ VS ]</tt> definiert wird, wird
zusätzlich geprüft, ob das Kompositum mit seinen Teilen diesen Wortklassen
entspricht. Hiernach werden Komposita verworfen, die aus
Verb-Substantiv-Kombination bestehen. Die Angabe des Parameters ist
optional. Zusätzlich werden bei Angabe des Schlüssels
<tt>de.lang:language/dictionary/compound/append-wordclass</tt>, der i.d.R.
einen ein Zeichen langen String enthält, die durch Zerlegung erkannten
Wortstämme markiert, in dem ihre Wortklasse das über diesen Schlüssel
definierte Zeichen angehangen bekommt.
* <b>Install.rb nicht mehr notwendig</b>
Die Umwandlung von Text-Dateien in SDBM-Dateien erfolgt nicht mehr über
Install, sondern durch 'jeden' Lingoaufruf implizit. Beim öffnen der
SDBM-Datei wird automatisch die Aktualität geprüft und bei Bedarf eine
erneute Übersetzung angestartet.
== 1.5.0 [2005-12-08]
* <b>Sprachkonfiguration aktualisiert</b>
Die Konfigurationsdatei de.lang ist an produktive Erfahrungen angepasst
worden. Insbesondere werden jetzt alle Sonderzeichen der Zeichensätze
ISO-8859-1 und Windows-1252 vollständig erkannt, ohne dass laufend Zeichen
nachgepflegt werden müssen.
* <b>Cachable arbeitet jetzt mit Duplikaten</b>
Objekte, die in den Cache von Datasource, Dictionary oder Grammer
übernommen wurden, wurden auch immer als Referenz ausgelesen. Die hatte
zur Folge, dass wenn Cacheinhalte im späteren Verlauf der Lingo-Kette
verändert wurden, diese Veränderung auch alle nachfolgen aus dem Cache
gelesenen Objekte betraf. D.h.: Wird das Wort <von|?> in den Cache
geschrieben, so werden alle nachfolgenden Suchanfragen aus dem Cache
bedient. So weit so gut. Wenn ein Attendee nach Cacheauslesen der Meinung
ist, er müsste für das Objekt das Attribut z.B. auf 'MU?' (Teil einer
Mehrwortgruppe) ändern, dann wurde dadurch auch das Element im Cache
geändert. Nachfolgende Suchanfragen erhielten somit <von|MU?> als Antwort.
Ab jetzt werden nur noch Kopien des Originals in den Cache übernommen,
so das eine versehentliche Veränderung ausgeschlossen wird.
* <b>String hat attr-Methode</b>
Die Methode _select_ der Klasse _Dictionary_ gibt die gefundenen Lexicals
sortiert zurück. Bei der Verarbeitung von Mehrwortwörterbüchern kann
jedoch auch z.B. '*5' als Antwort gegeben werden, was dem Multiworder
mitteilt, dass es eine Mehrwortgruppe der Länge 5 gibt, die mit genau
den drei nachgefragten Wörtern beginnt und der Multiworder eine weitere
Abfrage machen soll. Klappt alles wunderbar, nur dass _select_ nicht in
der Lage ist ein Array aus Lexicals und Strings anhand des attr-Wertes zu
sortieren. Jetzt hat hat die Klasse String eines attr-Wert '' bekommen
und die Sortierung funktioniert wieder.
* <b>Neues Synonym-Wörterbuch</b>
Ein sehr gut gepflegtes Synonym-Wörterbuch ist als Beispiel mit
aufgenommen worden. Wie beim Mehrwortwörterbuch system_mul.txt
sind jedoch nur Einträge mit dem Anfangsbuchstabe 'a' enthalten.
== 1.5.0rc2 [2005-12-06]
* <b>Fehlerkorrekturen und Anpassungen</b>
- Multiworder verarbeitet wieder mehrere Wörterbücher.
- Synonyme mit '_' statt ' ' für LIR-Format wieder entfernt.
- Abbreviator mit initialem Wörterbuch versehen
- System_dic mit Stopwörtern versehen
- Bei install.rb `...` durch system()-Aufruf getauscht
- Browser bei install.rb über Parameter -b konfigurierbar
- Kleinere Anpassungen
== 1.5.0rc [2005-11-27]
* <b>Kompositumerkennung redesigned</b>
Neben den Klassen für Datenzugriff auf unterster Ebene (Datasource) und
dem Wörterbuchzugriff (Dictionary) gibt es nun auch eine Klasse für
grammatikalische Spezialitäten (Grammar), welche die Kompositumerkennung
aufgenommen hat.
* <b>Testroutinen ausgebaut</b>
Alle bisher per Mail gemeldeten Fehlersituationen sind in die Testroutinen
eingebaut worden, so dass sie bei zukünftigen Versionen direkt mit getestet
werden. Also weiterhin fleißig per Mail z.B. an error@lex-lingo.de melden.
* <b>_Stopworder_ getilgt</b>
Der _Stopworder_ hat seine Schuldigkeit getan. Sein Konzept ist von
gestern. Weil er auch durch normale Wörterbuchsuche abbildbar ist, wird
hier auf die weitere Pflege verzichtet. <b>Bitte in den Konfig-Dateien
berücksichtigen! und WICHTIG: Stopwörter im Wörterbuch ggf.
nachpflegen!</b>
* <b>Neuer Attendee _Abbreviator_</b>
Bisher hat der Tokenizer per Konfiguration eine Liste von Abkürzungen
mitgeteilt bekommen, die er in einer Textzeile als Token erkennen und
in den Datenstrom einfliessen lassen sollte. Die Pflege dieser
Konfigurationsdaten fiel vollends aus dem sonst stringenten
Wörterbuchkonzept heraus. Daher wurde dies Funktion in den Abbreviator
ausgelagert, der sich die bekannten Abkürzungen aus einem eigenen
Wörterbuch holt. <b>Bitte in den Konfig-Dateien berücksichtigen!</b>
* <b>Datenformate in <tt>de.lang</tt> vereinfacht</b>
Die Datenformate für den _Tokenizer_ und die _Suffix_e haben sich in der
Sprachkonfigurationsdatei de.lang geändert. Sofern eine alte de.lang-Datei
mit dieser Version zusammen laufen soll, <b>bitte in den Konfig-Dateien
berücksichtigen!</b>
* <b>Attendees überarbeitet</b>
Das Verhalten der Attendees wurde homogenisiert. Als zusätzliche Klasse
wurde der BufferedAttendee eingeführt, der den Eingabe-Strom zwischen
speichern kann und den angestauten Buffer mit einem mal verarbeiten kann.
Dies ist insbesondere förderlich für die Attendees Multiworder und
Sequencer, die eine Kette von Objekten untersuchen müssen.
* <b>Dokumentation erstellt</b>
Für alle Attendees gibt es jetzt reichlich Dokumentation, die mit
doc/index.html aufgerufen werden kann. Weitere Dokumentation muss
noch folgen...
== 1.4.2 [2005-10-11]
* <b>Bugfix im _Sequencer_</b>
Der _Sequencer_ sorgte für Fehlfunktionen, wenn er aus dem _Multiworder_
Worter unerwarteten Typs erhielt.
== 1.4.1 [2005-09-29]
* <b>_Synonymer_ verarbeitet jetzt WIRKLICH mehrere Wörterbücher</b>
Aus einem mir bislang unbekannten Grund sind die in der letzten Version
gemachten Änderungen nicht übernommen worden. Ist bereinigt.
* <b><i>Vector_filter</i> mit geändertem +sort+-Parameter</b>
Der +sort+-Parameter konnte vormals die Werte +normal+, +count+ und +term+
annehmen. Die Werte +count+ und +term+ wurden durch die Bezeichnungen
+term_abs+ und +term_rel+ ersetzt. Zusätzlich hinzugekommen sind die Werte
+sto_abs+ und +sto_rel+, welche mit den o.g. korrespondieren, der Zahlenwert
jedoch in geschweiften Klammern hinter dem Wort stehen. Dies ist notwendig
für das _LIR_-Format.
* <b>Für zukünftige Meldungen!</b>
Besteht ein Änderungsbedarf aufgrund eines Fehlers oder der Wunsch einer
Funktionserweiterung? Mailt mir eure Wünsche an <tt>rfc@lex-lingo.de</tt>
== 1.4.0 [2005-09-25]
* <b>Neuer Attendee _Sequencer_</b>
Der _Sequencer_ erkennt Mehrwortgruppen, die nicht über ein Wörterbuch
vorgegeben werden müssen, sondern über ihre Wortklassen erkannt werden.
Steht z.B. in <tt>de.lang:language/attendees/sequencer/sequences:
[ [AS, "2, 1"], [AK, "2, 1"] ]</tt> so werden Wortfolgen der Art
Adjektiv-Subjektiv und Adjektiv-Kompositum erkannt und in der in
Gänsefüsschen angegebenen Form als Indexeintrag bereitgestellt. So wird
'geniale Indexierung' als 'indexierung, genial' in Form eines zusätzlichen
Wortes in den Ausgabestrom eingefügt mit Attribut +SEQ+ und der Wortklasse
+q+.
* <b>Bugfixing Kompositum-Caching</b>
Beim zweiten Auftreten eines Kompositums wurde das Kompositum als nicht
erkanntes Wort weiterverarbeitet. Der Fehler im Chahing-Mechanismus ist
behoben, so dass die _LIR_-Verarbeitung wieder korrekt läuft.
* <b>_Synonymer_ verarbeitet mehrere Wörterbücher</b>
Mit Angabe des Parameters <tt>mode=all</tt> kann der _Synonymer_ jetzt
auch mehrere Wörterbücher verarbeiten.
== 1.3.1 [2005-08-18]
* <b>Neuer Attendee _Objectfilter_</b>
Als Basis für eine eher allgemeinere und flexiblere Filter-Möglichkeit im
Vergleich zum <i>Noneword_filter</i> kann der _Objectfilter_ alle Arten von
Selektion vornehmen. Das Attribut +objects+ ist eine Ruby-Bedingung, die,
wenn sie als +false+ ausgewertet wird, dass aktuelle Objekt filtert.
== 1.3.0 [2005-08-03]
* <b>Neuer Attendee _Compositizer_</b>
Die Kompositumzerlegung war bisher im Attendee _Wordsearcher_ enthalten.
Dadurch wurden für die Zerlegung immer die gleichen Wörterbücher benutzt,
die auf für die Wortsuche verwendet wurden. Durch die Trennung ist eine
separate Angabe von Wörterbüchern möglich.
* <b>Testing</b>
Ausführliche Testroutinen sind erstellt worden, welche die Folge-Releases
deutlich stabiler machen werden. Innerhalb einer Sekunde sind sämtlich
Attendees durchgetestet. Die durchgeführten Tests basieren auf
Fehlermeldungen und Anregungen aus vergangenen E-Mails. Sie können
jederzeit erweitert werden. In diesem Zusammenhand ist auf die Basisklasse
aller Attendees (vorher Lingo) neu erstellt worden. In Verbindung mit der
Einführung von YAML als Konfigurationssprache wurden diese automatischen
Tests erst möglich.
* <b>YAML</b>
Bei YAML unbedingt darauf achten, dass keine TABs verwendet werden. YAML
ist da sehr empfindlich.
== 1.2.1 [2005-07-03]
* <b>Fehlerkorrektur _LIR_-Absturz</b>
Bei der Suche nach Mehrwortsynonymen wurden auch interne Steuercodes
an weitere Attendees weitergeben, die damit nichts anfangen konnten.
_Synonymer_ filter jetzt bei der Suche interne Steuercodes heraus.
== 1.2.0 [2005-07-02]
* <b><i>Vector_Filter</i> mit Term-Frequenz</b>
Wird beim Attendee <i>Vector_filter</i> das Attribut <tt>sort='term'</tt>
angegeben, wird statt der absoluten Zahl (wie bei <tt>sort='count'</tt>)
die Term-Frequenz eines Wortes ermittelt. Die Term-Frequenz bezieht sich
auf die Anzahl Worte in der Datei. Diese wiederum können über das Attribut
<tt>no-count</tt> gesteuert werden. Das Attribut entscheidet darüber,
welche Wort-Typen nicht in die Gesamtwortanzahl der Worte in der Datei
berücksichtigt werden. Default hierfür ist <tt>no-count='PUNCT,OTH_C'</tt>.
* <b>Kompositum-Zerlegung mit weiterer Einschränkung</b>
Ein weiterer Parameter ist für die Kompositumzerlegung hinzugekommen. Als
Attribute des Tags <tt>XML:dictionary/compound</tt> können jetzt angegeben
werden:
Attribut Default Funktion
========================================================================
min-word-size 8 Prüft nur Wörter ab dieser Größe auf Kompositum
Die folgenden Attribute werden auf gefundene Komposita angewendet. Das
Kompositum muss diese Prüfung bestehen, um gewertet zu werden.
min-avg-part-size 4 Die durchschnittliche Größe aller Wortteile muss
mindestens diesen Wert haben
min-part-size 1 Jeder Wortteil muss mindestens so groß sein
max-parts 4 Es darf höchstens so viele Wortteile geben.
* <b>Install-Routine um Linux-Kommandos erweitert</b>
Die Install-Routine sollte jetzt alle Aufgaben sowohl auf Windows wie auch
Linux komplett abschließen können.
* <b>Zu lange Datensätze</b>
Trotz anderweitiger Meinung haben Klaus und ich gemeint, Datensätze größer
1024 Bytes werden nicht benötigt. Kam halt anders. SDBM kann keine Sätze
größer 1k speichern, weshalb die Informationen derzeit ziemlich q&d auf 1k
getrimmt werden.
== 1.1.1 [2005-06-18]
* <b>Test-Routinen erweitert</b>
Insbesondere die Sortierung von Lexicals wurde noch einmal intensiv unter
die Lupe genommen. Dabei sind ein paar kleine Dinge noch begradigt worden.
* <b>Install-Routine bereinigt</b>
Install.rb soll in Richtung Plattformunabhängigkeit weiterentwickelt
werden, so dass auch Linux nicht zu kurz kommt. Da fehlen noch ein paar
Kommandos, aber die Routine wird euch zu gegebener Zeit fragen :o)
!!Einzelne Datenbanken können jetzt angesprochen werden!!
Mit 'install -data -r rdk' werden z.B. alle Datenbanken, die rdk im Namen
enthalten, gelöscht und mit 'install -data rdk' auch wieder hergestellt.
Das sollte die Pflege der Datenbanken deutlich erleichtern.
* <b>VORSICHT: KNOWN ERROR</b>
Die Datenbanken werden im Verzeichnis de/store gespeichert. Unter Linux
scheint das Erstellen des Verzeichnisses noch nicht die richtigen Rechte
mitzugeben. Teste ich noch unter Linux, bis dahin bitte das Unterverzeichnis
vor dem Aufruf von Install von Hand anlegen!
== 1.1.0 [2005-06-18]
* <b>Umstellung der Versionsnummernsystematik</b>
Damit auch Patches und Bugfixes nicht als herrenloses Archiv ausgetauscht
werden müssen und jeden besser in Erinnerung verbleibt, wann welche
Funktionserweiterung dazu kam, gelten für die Veränderungen in den
Versionsnummern folgende Regeln:
X.0.0 Die erste Stelle kennzeichnet einen grundlegenden architektonischen
Umbau von Lingo, wie z.B. den Wechsel von Rubyling auf Lingo. Im
Zweifel zählt hierzu auch eine zehnmalige Funktionserweiterung :o)
0.X.0 Die zweite Stelle kennzeichnet eine Funktionserweiterung, wie z.B.
die Verarbeitung von Mehrwortgruppen.
0.0.X Die letzte Stelle ist für Bugfixes vorbehalten.
Gegebenenfalls kann der Versionsnummer noch ein kleiner Buchstabe folgen,
der anzeigt, dass sich lediglich an der Dokumentation etwas geändert hat.
Gestartet wird mit der 1.1.0 (Erweiterung um Mehrworterkennung), die im
wesentlichen der Vorversion (alte Systematik) entspricht.
== 1.0.4 [2005-06-17]
* <b>Datenbankformat und -zugriff vereinheitlicht</b>
Bisher gab es drei verschiedene Datenformate für Wörterbücher, Synonyme
und Mehrwortgruppen. Alle drei Typen finden sich nun in einem universellen
Format wieder.
Ebenso wurde der Zugriff auf die Daten modifiziert. Wurden vorher je nach
Typ einmal eine Liste der erkannten Grundformen (Lexical) als Ergebnis
erzeugt und ein anderes mal nur eine Zeichenkette zurück gegeben, werden
jetzt alle Zugriffe auf die Daten als Lexical-Liste generiert. Dies hatte
Auswirkungen auf die Synonymerkennung, da bisher die die Wortklasse 'y'
aus dem Programm und nicht aus den Datendateien kam.
* <b>Multiworder verarbeitet mehrere Datenbanken</b>
Die Verarbeitung von mehreren Datenbanken für einen Zugriff wird
normalerweise in der Klasse Dictionary erledigt. Da der Multiworder
jedoch die Funktionen der Dictionary-Klasse nicht benötigt, greift er
direkt auf die Klasse DataSource zu, welche diese Funktion nicht besitzt.
Daher musste die Verarbeitung mehrerer Datendateien im Multiworder selbst
erfolgen.
== 1.0.3 [2005-05-21]
* <b>Multiworder fertig!</b>
Mit dem neuen Attendee Multiworder werden Mehrwortgruppen locker und
schnell erkannt. Erkannte Gruppen werden als als zusätzliches (Dummy-)Wort
mit in den Datenstrom eingespeist. Die Geschwindigkeit wird dadurch
erreicht, dass die Mehrwortgruppen in Ihren jeweiligen Grundformen
gespeichert werden. Das ist genau dass, was der Multiworder frei Haus
geliefert bekommt. Das klappt wunderbar, wenn für den Multiworder-Lauf
und die Ersterstellung des Mehrwörterbuches die gleichen Wörterbücher
verwendet werden. Soll heißen, wenn zu einem späteren Zeitpunkt
zusätzliche Wörterbücher hinzu gezogen werden, kann eine erneute
Erstellung der Mehrwörterbuches Sinn machen, um die Erkennungsquote zu
verbessern. Diese Version arbeitet mit einem abgespeckten Mehrwörterbuch.
* <b>Install.rb weiter ausgebaut</b>
Die einzelnen Installationsphasen können jetzt auch einzeln aufgerufen
werden. Mit den Optionen -data, -test und -docu können die jeweiligen
Phasen wiederholt werden. Mit der zusätzlichen Option -r kann auch alles
wieder rückgängig gemacht werden.
== 1.0.2 [2005-04-30]
* <b>Install.rb</b>
Nach dem Download sollte als erstes ruby install.rb aufgerufen werden.
Dadurch werden notwendige Vorarbeiten erledigt, z.B. Erstellung der
Dokumentatio in /doc oder der Datenbasis in /de
* <b>Forget MySQL</b>
Als erstes filebasiertes Datenzugriffssystem wurde SDBM integriert. Darüber
wird MySQL überflüssig. Alle relevanten Daten liegen im Unterverzeichnis
/de. Siehe auch de.xml:<datasource>. Vor der ersten Nutzung sollten die
SDBM-Dateien mit ruby dbm.rb erzeugt werden. (wird durch install.rb
erledigt)
* <b>Sortierung im Vector_filter verbessert</b>
Bei sort='count' wird jetzt nicht nur nach Häufigkeit sortiert sondern
auch innerhalb der Häufigkeit nach Alphabet.
== 1.0.1 [2005-04-26]
* <b>Kompatibilität zur LIR</b>
LIR-Formate können jetzt gelesen und CSV-Format geschrieben werden.
Anpassungen in Textreader und Textwriter. Siehe auch lir.xml
* <b>Bug-Fix in Synonymer</b>
Schweren Fehler entfernt. Wordklassen, die nicht geprüft werden sollten,
wurden kastriert.
* <b>Kompositumverarbeitung im Vector_filter</b>
Neben der Kompositum-Grundform werden jetzt auch die Grundformen der
Wort-Teile mit eingesackt.
== 1.0.0 [2005-04-26]
* <b>Dokumentation erstellt</b>
Sie ist zwar noch teilweise verteilt, aber sie ist da, z.B. in
doc/index.html oder in Config.doc. Einigermaßen fertig (war ich nach
der Erstellung). Bitte um Feedback was besser geht und was fehlt.
* <b>Attendees überarbeitet</b>
Sehen jetzt noch einfacher aus. Brauchen nur noch die Methoden
init - Zur Bereitstellung von Parametern und Konfiguration für die
anderen Meth.
control - Zur Verarbeitung von Kommandos
process - Zur Ver- und Bearbeitung von zugestellten Objekten
* <b>Dictionary aufgesplittet</b>
Da es mittlerweile drei Attendees gibt, die Datenbankzugriff brauchen, ist
das Dictionary eine Hauptklasse geworden. Dazu gibt es eine rudimentärere
Klasse, auf die das Dictionary sich für den Datenzugriff stützt: Datasource.
Diese Klasse nutzt die vollen Möglichkeiten eines eigenen Datencaches,
welches die Performance noch einmal deutlich verbessert hat.
* <b>Konfiguration aufgesplittet</b>
Ja ja, mein Lieblingsthema, aber ohne eine saubere Konfigurationsmöglichkeit
ist Lingo leider nix Wert. Gibt jetzt
lingo.xml - Zur Konfiguration der Kommandozeilenoptionen
de.xml - Enthält die sprachrelevante Konfiguration
<ablauf>.xml - Enthält die Lingo-Konfiguration, z.B. rubyling.xml oder
ocr.xml
Mit ruby lingo.rb -c <ablauf> kann jeweils eine andere Konfig. gezogen
werden.
== 0.9.8 [2005-04-16]
* <b>Class Config überarbeiten</b>
Klar, immer die wichtigen Dinge zuerst. Die über die Kommandozeile
erwarteten Parameter sind über lingo.xcl konfigurierbar. In Lingo.xml
kann man auf die Kommandozeilen-Parameter als Variable zurückgreifen.
Doku anschauen, lohnt sich...
== 0.9.0 [2005-04-01]
* <b>Noneword_variator</b>
Auftragsarbeit von Klaus eingebaut.
== 0.8.0b [2005-03-30]
* <b>Lingo ist Rubyling, nur besser</b>
Rubyling ist tot, es lebe Lingo! Rubyling wurde vollständig modularisiert.
* <b>Konfiguration mit Lingo.xml</b>
Konfiguration vollständig überarbeitet. Lingo.cfg heißt jetzt lingo.xml.
Mit dieser Endung ist sie leichter mit SciTe editierbar. Die Klasse
LingoConfig kann jetzt (fast) generische XML-Syntax verarbeiten. Die Werte
werden auf sehr einfache Weise im Code bereitgestellt. Hinzu kommt, dass
die Aufruf-Parameter ebenfalls über diesen Weg zur Verfügung stehen.
Dokumentation muss folgen :o)
== 1.4.1 [2005-03-18] (Rubyling)
* <b>Load_wbs.rb stabilisiert</b>
Programm zeigte keine Reaktion mehr auf Laptop nach Standby. Daher stoppen
und starten des MySQL-Dienstes eingebaut. Load_wbs.rb von Archiv rubyling_de
nach rubyling verschoben (Version aus rubyling_de im nächsten Release
entfernen!)
* <b>Rubyling Parameter korrigiert</b>
Für Programmtests waren Parameter im Programm verdrahtet. Kommandozeile
wurde ignoriert.
== 1.4.0 [2005-03-18] (Rubyling)
* <b>Interne Klassenhierarchie umgebaut</b>
In der Datei word.rb sind nun die Klassen unterschieden nach Token, Lexical
und Word inkl. weiterer Hilfsklassen.
* <b>Synonymverarbeitung eingebaut</b>
Erkannte Worte werden zusätzlich auf Synonyme hin geprüft. Die Liste der
Grundformen des Wortes wird dann um die gefundenen Synonyme erweitert. Die
Synonym-Wörterbücher sind wie gewohnt in ruby.cfg unter database/synonym
konfigurierbar. Derzeit wird openthesaurus als einziges Wörterbuch benutzt.
Um openthesaurus zu nutzen, sei das Archiv rubyling_de (v1.0) wärmstens
empfohlen.
* <b>Nicht erkannte Wörter</b>
Als zusätzliche Datei wird jetzt auch noch eine Endung .non erzeugt, die
alle nicht erkannten Wörter beinhaltet
* <b>Schnelle Installation</b>
Die Umgebung von Rubyling ist jetzt auf drei Archive verteilt. Bitte weitere
Änderungen an den Daten in den Archiven vornehmen und in dieser RELEASE.TXT
dokumentieren. Alle Archive sind so aufgebaut, dass sie im Verzeichnis
rubyling entpackt werden können.
Archiv Ziel Inhalt
--------------------------------------------------------------------------
rubyling(v1.4) /rubyling Programm, Konfiguration und Dokumentation
rubyling_de(v1.0) /rubyling/de Wörterbücher und Programm zum DB-Aufbau
rubyling_txt(v1.0) /rubyling/txt Texte zum testen
== 1.3.0 [2005-02] (Rubyling)
* <b>Inline-Dokumentation erstellt</b>
Mit Prozedur make_doc.cmd HTML-Seiten erstellen, dann doc\index.html
aufrufen