Index: app/conf/Makefile
===================================================================
--- app/conf/Makefile	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ app/conf/Makefile	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,8 @@
+main:
+
+copy:
+ifdef UTT_CONF_DIR
+	cp *.conf ${UTT_CONF_DIR}
+endif
+
+clean:
Index: app/conf/cor.conf
===================================================================
--- app/conf/cor.conf	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ app/conf/cor.conf	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,7 @@
+# Plik konfiguracyjny dla komponentu cor.
+
+# kazda linia ma postac:
+# nazwa_parametru [=] wartosc
+
+# PRZYKLAD: analizuj tylko slowa
+# p = W
Index: app/conf/gue.conf
===================================================================
--- app/conf/gue.conf	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ app/conf/gue.conf	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,8 @@
+# Plik konfiguracyjny dla komponentu gue.
+
+# kazda linia ma postac:
+# nazwa_parametru [=] wartosc
+
+# PRZYKLAD: analizuj tylko slowa
+# p = W
+
Index: app/conf/lem.conf
===================================================================
--- app/conf/lem.conf	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ app/conf/lem.conf	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,7 @@
+# Plik konfiguracyjny dla komponentu lem.
+
+# kazda linia ma postac:
+# nazwa_parametru [=] wartosc
+
+# PRZYKLAD: analizuj tylko slowa
+# p = W
Index: nawszelkiwypadek/tools/cor_dic/makeLabels.pl
===================================================================
--- nawszelkiwypadek/tools/cor_dic/makeLabels.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/cor_dic/makeLabels.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+use locale;
+
+print "lcase	a ± b c æ d e ê f g h i j k l ³ m n ñ o ó p q r s ¶ t u v w x y z Œ ¿ é ö ü ä\n";
+print "ucase	A ¡ B C Æ D E Ê F G H I J K L £ M N Ñ O Ó P Q R S Š T U V W X Y Z ¬ ¯\n";
+print "letter	lcase ucase\n";
+print "digit	0 1 2 3 4 5 6 7 8 9\n";
+print "signs    , . @ \/ \'\n _";
+print "sem	~ ; - \\ \n";
+print "all	letter digit signs sem\n";
Index: nawszelkiwypadek/tools/cor_dic/prep.pl
===================================================================
--- nawszelkiwypadek/tools/cor_dic/prep.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/cor_dic/prep.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,67 @@
+#! /usr/bin/perl
+
+use locale;
+use strict;
+
+my $file = shift;
+
+if ($file eq "") {
+    print "Podaj nazwê pliku.\n";
+    exit(0);
+}
+
+
+`makeLabels.pl > labels.sym`;
+
+`lexmakelab labels`;
+
+print "Pobieram informacje ze s³ownika..........................";
+
+`cut -d \\; -f 1 <$file > temp1`;
+
+`sort -u < temp1 > temp2`;
+
+print "OK\n";
+
+print "Kompilujê automat........................................";
+
+`lexcomplex -l labels.lab -S labels.scl <temp2 > temp1`;
+
+print "OK\n";
+
+print "Usuwam epsilon-przejscia.................................";
+
+`fsmrmepsilon temp1> temp2`;
+
+print "OK\n";
+
+print "Determinizujê automat....................................";
+
+`fsmdeterminize temp2 > temp1`;
+
+print "OK\n";
+
+print "Minimalizujê automat.....................................";
+
+`fsmminimize temp1> temp2`;
+
+print "OK\n";
+
+print "Konwertujê automat do formatu fsa........................";
+
+`fsmprint -i labels.lab temp2> temp1`;
+
+`../fsm2aut temp1> temp2`;
+
+`../aut2fsa < temp2> cor.dic`;
+
+print "OK\n";
+
+print "Czyszczê pliki pomocnicze................................";
+
+`rm temp2`;
+`rm temp1`;
+`rm labels.*`;
+
+print "OK\n";
+
Index: nawszelkiwypadek/tools/dist/Makefile
===================================================================
--- nawszelkiwypadek/tools/dist/Makefile	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/dist/Makefile	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,47 @@
+# main makefile
+
+BIN=bin
+SRC=src
+DIR=$(shell pwd)
+##############################
+# CONFIGURATION
+
+# UTT_BIN_DIR - directory for executables
+# UTT_SHARE_DIR - directory for data and stuff
+# UTT_DOC_DIR - directory for documentation
+
+# example (site installation)
+# UTT_BIN_DIR=/usr/local/bin
+# UTT_DOC_DIR=/usr/share/doc/utt
+
+UTT_BIN_DIR=~/utt/bin
+UTT_SHARE_DIR=~/.utt
+UTT_DOC_DIR=~/utt/doc
+UTT_LIB_DIR=$(UTT_SHARE_DIR)/lib
+##############################
+
+install: make_dirs install_dta install_lib #install_doc install_components
+	@echo "Installation completed successfully!"
+
+install_components:
+	cp -r bin/* $(UTT_BIN_DIR)/
+
+install_dta:
+	if [ -d data ]; then cp -r data/* $(UTT_SHARE_DIR)/; fi
+
+install_doc:
+	cp -r doc/* $(UTT_DOC_DIR)/
+
+install_lib:
+	cp -r lib/* $(UTT_LIB_DIR)/
+
+make_dirs:
+	#if [ -d $(UTT_BIN_DIR) ]; then true; else mkdir -p $(UTT_BIN_DIR); fi
+	if [ -d $(UTT_SHARE_DIR) ]; then true; else mkdir -p $(UTT_SHARE_DIR); fi
+	if [ -d $(UTT_LIB_DIR) ]; then true; else mkdir -p $(UTT_LIB_DIR); fi
+	#if [ -d $(UTT_DOC_DIR) ]; then true; else mkdir -p $(UTT_DOC_DIR); fi
+
+uninstall:
+	rm -r $(UTT_SHARE_DIR)
+	#rm -r $(UTT_BIN_DIR)
+	#rm -r $(UTT_DOC_DIR)
Index: nawszelkiwypadek/tools/dist/README
===================================================================
--- nawszelkiwypadek/tools/dist/README	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/dist/README	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,5 @@
+Instalacja:
+
+1) Przeniesc katalog .utt do swojego katalogu domowego.
+2) Dopisac do $PATH sciezke do katalogu bin.
+
Index: nawszelkiwypadek/tools/fsm2aut
===================================================================
--- nawszelkiwypadek/tools/fsm2aut	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/fsm2aut	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+my $currstate=-1;
+my @states;
+my @final;
+my $tn=0;
+
+while(<>)
+{
+  if(/^\s*([0-9]+)\s+([0-9]+)\s+(.)(\s*)?$/)
+  {
+    push @{$states[$1]}, ($3, $2);
+    $#states=$2 if $#states<$2;
+    $tn++;
+  }
+  elsif(/^\s*([0-9]+)\s*$/)
+  {
+    $final[$1]=1;
+    $#states=$1 if $#states<$1;
+  }
+  else
+  {
+    die("Input error.");
+  }
+}
+
+print scalar(@states)," ",$tn," char void\n";
+
+my $i=0;
+my $width=int(log(@states+1)/log(10));
+foreach $stateref (@states)
+{
+  $f = ($final[$i]?"+":"-");
+  printf "%${width}d %s",$i++,$f;
+  while(@$stateref)
+  {
+    $c=shift @$stateref;
+    $s=shift @$stateref;
+    print " $c $s";
+  }
+  print "\n";
+}
+
+  
Index: nawszelkiwypadek/tools/gue_dic/README
===================================================================
--- nawszelkiwypadek/tools/gue_dic/README	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/README	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,28 @@
+How to prepare gue dictionary?
+
+1. Preparing input file.
+
+Lines in input file should look like this:
+
+prefix*suffix~weight;description
+
+where:
+prefix - is the prefix of a word
+suffix - is the suffix of a word
+weight - is the weight saying how importand information in this line is
+description - is a description of the word
+	(in any format - description will be in output of gue)
+
+
+2. Compiling a dictionary.
+
+Let's say we have input file named "dict.in".
+Commands compiling dictionary:
+
+prep_user_dict.pl < dict.in > dict.temp
+compile_user_dict.pl dict.temp
+
+Those should create file called "gue.bin" which is dictionary
+for gue component.
+
+Good luck.
Index: nawszelkiwypadek/tools/gue_dic/attr.pm
===================================================================
--- nawszelkiwypadek/tools/gue_dic/attr.pm	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/attr.pm	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,110 @@
+package attr;
+
+use locale;
+use strict;
+
+
+sub match(\@\@)
+{
+    my ($cat1,$avs1)= @{shift @_};
+    my ($cat2,$avs2)= @{shift @_};
+
+    if($cat1 ne $cat2)
+    {
+	return 0; 
+    }
+    else
+    {
+      ATTR:for my $attr (keys %$avs1)
+      {
+	  if($avs2->{$attr})
+	  {
+	      for my $val (keys %{$avs1->{$attr}})
+	      {
+		  next ATTR if $avs2->{$attr}->{$val};
+	      }
+	      return 0;
+	      last ATTR;
+	  }
+      }
+    }
+
+    return 1;
+}
+
+# funkcja parse
+# arg:     deskrypcja
+# warto¶æ: referencja do tablicy [<cat>, <avs>],
+#          gdzie <avs> jest referencja do hasza, zawierajacego pary
+#          atrybut=>hasz warto¶ci (pary warto¶æ=>1), czyli np.
+
+#         [
+#           'ADJ',
+#           {
+#             'KOLEDZY' => {
+#                            '<alojzy>' => 1,
+#                            '<karol>' => 1,
+#                            '<jan>' => 1
+#                          },
+#             'C' => {
+#                      'p' => 1,
+#                      'a' => 1,
+#                      'i' => 1
+#                    },
+#             'N' => {
+#                      'p' => 1
+#                    }
+#           }
+#         ];
+
+sub parse ($)
+{
+    my ($dstr)=@_;
+    my $avs={};
+    my ($cat,$attrlist) = split '/', $dstr;
+  attr:
+    while( $attrlist =~ /([[:upper:]]+)((?:[[:lower:]+?!*-]|<[^>\n]+>)+)/g )
+    {
+	my ($attrstr,$valstr)=($1,$2);
+	my %vals;
+	while($valstr =~ /[[:lower:]+?!*-]|<[^>\n]+>/g)
+	{
+	    my $val = $&;
+	    next attr if $val eq '*';
+	    $val =~ s/^<([[:lower:]])>$/$1/;
+	    $vals{$val}=1;
+	}
+	
+	$avs->{$attrstr} = \%vals; # dlaczego to dziala? %vals jest lokalne
+    }
+    [$cat, $avs];
+}
+
+# funkcja unparse
+# arg:     jak warto¶æ parse
+# warto¶æ: deskrypcja - napis
+
+sub unparse (\@)
+{
+    my ($cat,$avs)= @{shift @_};
+    my $dstr=$cat;
+    my @attrs = keys %$avs;
+    if(@attrs)
+    {
+	$dstr .= '/';
+	for my $attr ( sort @attrs )
+	{
+	    $dstr .= $attr . (join '', sort keys %{$avs->{$attr}});
+	}
+    }
+    $dstr;
+}
+
+
+sub canonize ($)
+{
+    unparse @{parse @_[0]} ;
+}
+
+
+1;
Index: nawszelkiwypadek/tools/gue_dic/canon.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/canon.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/canon.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,9 @@
+#!/usr/bin/perl
+
+use locale;
+use attr;
+
+while (<>) {
+    s/,(.*)$/','.attr::canonize($1)/e;
+    print;
+}
Index: nawszelkiwypadek/tools/gue_dic/compile_user_dict.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/compile_user_dict.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/compile_user_dict.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,197 @@
+#! /usr/bin/env perl
+
+use locale;
+#use strict;
+
+#
+##################################################
+$linesPerFile = 20000;
+
+if (@ARGV < 1) {
+    print "usage: prep_user_dict.pl dictionary_file\n";
+    exit;
+}
+
+$file = shift; # @ARGV;
+
+# Przygotowanie etykiet
+
+`makeLabels.pl > labels.sym`;
+
+`lexmakelab labels`;
+
+# Analiza pliku s³ownika
+
+
+print "Kanonizujê opisy.........................................";
+
+`canon.pl <$file >temp1`;
+
+print "OK\n";
+
+print "Sortujê plik.............................................";
+
+`sort -t \\~ -k1,1 -k2,2nr <temp1 > temp2`;
+
+print "OK\n";
+
+print "Minimalizujê plik s³ownika...............................";
+
+#`rmDup.pl < temp2 > temp1`;
+#`rmDup2.pl < temp1 > temp2`;
+
+`cp temp1 temp2`;
+
+`rm temp1`;
+
+print "OK\n";
+
+print "Czyszczê pliki...........................................";
+
+`sed -r "s/([[:punct:]])/[\\1]/g" < temp2 > temp1`;
+
+`cp temp1 temp2`;
+`rm temp1`;
+
+print "OK\n";
+
+#dzielimy plik na wiele czê¶ci, uruchamiamy lexcomplex dla ka¿dej
+#czê¶ci osobno, nastêpnie ³±czymy to za pomoc± programu fsmunion
+
+print "Dzielê s³ownik na mniejsze czê¶ci........................";
+
+open(IN, "./temp2");
+
+$lineCount = 0;
+$fileCount = 0;
+
+`mkdir LemTEMP`;
+
+open(FILE, ">LemTEMP/slo_0");
+
+while (<IN>) {
+
+    if (++$lineCount >= $linesPerFile) {
+	$fileCount++;
+	$lineCount = 0;
+
+	close(FILE);
+#	print "Tworzê nowy plik tymczasowy: slo_".$fileCount."\n";
+	open(FILE, ">LemTEMP/slo_".$fileCount);
+    }
+
+    print(FILE $_);
+}
+
+print "OK\n";
+
+print "Tworzê automaty po¶rednie";
+
+#32 kropki, fileCount plikow
+$filesPerDot = $fileCount/32;
+$files=$filesPerDot;
+$dots=0;
+
+for ($i=0; $i<=$fileCount; $i++) {
+
+    if ($files >= $filesPerDot) {
+	$files = 0;
+	print ".";
+	$dots++;
+    }
+    $files++;
+
+    $command = "lexcomplex -l labels.lab -S labels.scl < LemTEMP/slo_".$i." > LemTEMP/slownik_".$i.".fsm";
+
+    `$command`;
+
+}
+if ($dots < 32) {
+    for ($i=0; $i<32 - $dots; $i++) {
+	print ".";
+    }
+}
+
+print "OK\n";
+
+`rm LemTEMP/slo_*`;
+
+print "Tworzê automat koñcowy";
+
+#35 kropek...
+$filesPerDot = $fileCount/35;
+$files=$filesPerDot;
+$dots=0;
+
+`cp LemTEMP/slownik_0.fsm slownik1.fsm`;
+
+for ($i=1; $i<=$filecount; $i++) {
+
+    if ($files >= $filesPerDot) {
+	$files = 0;
+	print ".";
+	$dots++;
+    }
+    $files++;
+
+    $command = "fsmunion LemTEMP/slownik_".$i." slownik1.fsm > slownik2.fsm";
+
+    `$command`;
+
+    `mv slownik2.fsm slownik1.fsm`;
+}
+
+if ($dots < 35) {
+    for ($i=0; $i<35 - $dots; $i++) {
+	print ".";
+    }
+}
+
+`fsmunion LemTEMP/* > slownik1.fsm`;
+
+print "OK\n";
+
+print "Usuwam epsilon-przejscia.................................";
+
+`fsmrmepsilon slownik1.fsm > slownik2.fsm`;
+
+`rm slownik1.fsm`;
+
+print "OK\n";
+
+print "Determinizujê automat....................................";
+
+`fsmdeterminize slownik2.fsm > slownik1.fsm`;
+
+`rm slownik2.fsm`;
+
+print "OK\n";
+
+print "Minimalizujê automat.....................................";
+
+`fsmminimize slownik1.fsm > slownik.fsm`;
+
+`rm slownik1.fsm`;
+
+print "OK\n";
+
+print "Konwertujê automat do formatu fsa........................";
+
+`fsmprint -i labels.lab slownik.fsm > slownik.txt`;
+
+`../fsm2aut slownik.txt > slownik.aut`;
+
+`../aut2fsa < slownik.aut > gue.bin`;
+
+print "OK\n";
+
+print "Czyszczê pliki pomocnicze................................";
+
+`rm LemTEMP/*`;
+`rmdir LemTEMP`;
+`rm temp2`;
+`rm slownik.fsm`;
+`rm slownik.txt`;
+`rm slownik.aut`;
+
+print "OK\n";
Index: nawszelkiwypadek/tools/gue_dic/count_prefs.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/count_prefs.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/count_prefs.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,86 @@
+#! /usr/bin/perl
+
+use locale;
+use strict;
+
+my @prefs;
+
+sub addPref {
+
+    my $pref = shift;
+    my $desc = shift;
+    my $i;
+    for ($i=0; $i< @prefs; ++$i) {
+	my @tab = @{$prefs[$i]};
+      	if (${@{$prefs[$i]}}[0] =~ /^$pref/) {
+     	    ${@{$prefs[$i]}}[1]{$desc}++;
+	    return;
+	}
+    }
+    my @new;
+    my %hash;
+
+    $hash{$desc}++;
+    push(@new, $pref);
+    push(@new, \%hash);
+
+    push(@prefs, \@new);
+}
+
+sub printPrefs {
+
+    my $i;
+    for $i (@prefs) {
+	my @tab = @$i;
+#	print $tab[0]."\t";
+	my $pref = $tab[0];
+	my %hash = %{$tab[1]};
+	my @keys = keys(%hash);
+#	print(@keys."\n");
+	my $sum = 0;
+	my $key;
+	for $key (@keys) {
+	    $sum += $hash{$key};
+	}
+	for $key (@keys) {
+	    print $pref."\t";
+	    print $key."\t";
+	    print $hash{$key}."\t";
+	    print $sum."\n";
+	}
+    }
+}
+
+if (@ARGV < 2) {
+    print "USAGE: count_prefs.pl MIN_PREF_LEN MAX_PREF_LEN\n";
+    exit;
+}
+
+my $MIN = shift;
+my $MAX = shift;
+my $PART = shift;
+
+if ($MIN > $MAX) {
+    print "MIN_PREF_LEN > MAX_PREF_LEN! ($MIN > $MAX)\n";
+    exit;
+}
+my $begin = "";
+while (<>) {
+    my $len = $MIN;
+    $_ =~ /(\w+);(.*)$/;
+    my $pref = $1;
+    my $desc = $2;
+    if ($begin eq "")  {
+	$begin = substr($pref, 0, $MIN);
+    }
+    if ($pref !~ /^$begin.*/) {
+ 	printPrefs();
+	undef(@prefs);
+	$begin = "";
+    }
+    while ($len <= $MAX) {
+	addPref(substr($pref, 0, $len++), $desc);
+    }
+}
+
+printPrefs();
Index: nawszelkiwypadek/tools/gue_dic/cut_prefs.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/cut_prefs.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/cut_prefs.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,60 @@
+#! /usr/bin/perl
+
+use locale;
+use strict;
+
+if (@ARGV < 3) {
+    print "USAGE: cut_prefs.pl CUT_OFF TOTAL_PER ABS_CUT\n\n";
+    print "Obcina wpisy ma³o wa¿ne, opis nie jest uwzglêdniany\n";
+    print "je¿eli zachodzi jeden z warunków:\n";
+    print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
+    print "   od \$CUT_OFF*(liczba wystapien poprzedniego opisu)\n";
+    print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
+    print "   od \$TOTAL_PER*(suma wszystkich wystapien)\n";
+    print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
+    print "   od \$ABS_CUT\n";
+    exit;
+}
+
+# jezeli liczba wystapien danego opisu jest mniejsza
+# od $CUT_OFF*(liczba wystapien poprzedniego opisu) - opis nie jest uwzgledniany
+my $CUT_OFF = shift;
+
+# jezeli liczba wystapien danego opisu jest mniejsza
+# od $TOTAL_PER*(suma wszystkich wystapien) - opis nie jest uwzgledniany
+my $TOTAL_PER = shift;
+
+# jezeli liczba wystapien danego opisu jest mniejsza
+# od $ABS_CUT - opis nie jest uwzgledniany
+my $ABS_CUT = shift;
+
+my $pref = "";
+my $oldPref = " ";
+my $countTotal = -1;
+my $count = -1;
+
+while (<>) {
+
+    if (($count == -1) && ($_ =~ /^$oldPref\t.*/)) {
+	next;
+    }
+
+    if ($pref =~ //) {
+	$_ =~ /^(\w+)\t.+\t(\d+)\t(\d+)/;
+	$pref = $1;
+	$count = $2;
+	$countTotal = $3;
+#  	print "\$pref=$pref\t\$count=$count\t\$countTotal=$countTotal\n";
+    }
+    $_ =~ /\w+\t.+\t(\d+)\t\d+/;
+    my $c = $1;
+#     print "\$c=$c\t\$CUT_OFF*\$count=$CUT_OFF*$count\t\$TOTAL_PER*\$countTotal=".$TOTAL_PER*$countTotal."\n";
+    if (($CUT_OFF*$count < $c) && ($TOTAL_PER*$countTotal < $c) && ($ABS_CUT < $c)) {
+	$count = $c;
+	print $_;
+    } else {
+	$count = -1;
+	$oldPref = $pref;
+	$pref = "";
+    }
+}
Index: nawszelkiwypadek/tools/gue_dic/labels.lab
===================================================================
--- nawszelkiwypadek/tools/gue_dic/labels.lab	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/labels.lab	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,95 @@
+<epsilon>	0
+a	1
+±	2
+b	3
+c	4
+æ	5
+d	6
+e	7
+ê	8
+f	9
+g	10
+h	11
+i	12
+j	13
+k	14
+l	15
+³	16
+m	17
+n	18
+ñ	19
+o	20
+ó	21
+p	22
+q	23
+r	24
+s	25
+¶	26
+t	27
+u	28
+v	29
+w	30
+x	31
+y	32
+z	33
+Œ	34
+¿	35
+é	36
+ö	37
+ü	38
+ä	39
+A	40
+¡	41
+B	42
+C	43
+Æ	44
+D	45
+E	46
+Ê	47
+F	48
+G	49
+H	50
+I	51
+J	52
+K	53
+L	54
+£	55
+M	56
+N	57
+Ñ	58
+O	59
+Ó	60
+P	61
+Q	62
+R	63
+S	64
+Š	65
+T	66
+U	67
+V	68
+W	69
+X	70
+Y	71
+Z	72
+¬	73
+¯	74
+0	75
+1	76
+2	77
+3	78
+4	79
+5	80
+6	81
+7	82
+8	83
+9	84
+,	85
+.	86
+@	87
+/	88
+'	89
+_	90
+~	91
+;	92
+-	93
+\	94
Index: nawszelkiwypadek/tools/gue_dic/labels.scl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/labels.scl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/labels.scl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,356 @@
+lcase	1
+lcase	2
+lcase	3
+lcase	4
+lcase	5
+lcase	6
+lcase	7
+lcase	8
+lcase	9
+lcase	10
+lcase	11
+lcase	12
+lcase	13
+lcase	14
+lcase	15
+lcase	16
+lcase	17
+lcase	18
+lcase	19
+lcase	20
+lcase	21
+lcase	22
+lcase	23
+lcase	24
+lcase	25
+lcase	26
+lcase	27
+lcase	28
+lcase	29
+lcase	30
+lcase	31
+lcase	32
+lcase	33
+lcase	34
+lcase	35
+lcase	36
+lcase	37
+lcase	38
+lcase	39
+sem	91
+sem	92
+sem	93
+sem	94
+<sigma>	1
+<sigma>	2
+<sigma>	3
+<sigma>	4
+<sigma>	5
+<sigma>	6
+<sigma>	7
+<sigma>	8
+<sigma>	9
+<sigma>	10
+<sigma>	11
+<sigma>	12
+<sigma>	13
+<sigma>	14
+<sigma>	15
+<sigma>	16
+<sigma>	17
+<sigma>	18
+<sigma>	19
+<sigma>	20
+<sigma>	21
+<sigma>	22
+<sigma>	23
+<sigma>	24
+<sigma>	25
+<sigma>	26
+<sigma>	27
+<sigma>	28
+<sigma>	29
+<sigma>	30
+<sigma>	31
+<sigma>	32
+<sigma>	33
+<sigma>	34
+<sigma>	35
+<sigma>	36
+<sigma>	37
+<sigma>	38
+<sigma>	39
+<sigma>	40
+<sigma>	41
+<sigma>	42
+<sigma>	43
+<sigma>	44
+<sigma>	45
+<sigma>	46
+<sigma>	47
+<sigma>	48
+<sigma>	49
+<sigma>	50
+<sigma>	51
+<sigma>	52
+<sigma>	53
+<sigma>	54
+<sigma>	55
+<sigma>	56
+<sigma>	57
+<sigma>	58
+<sigma>	59
+<sigma>	60
+<sigma>	61
+<sigma>	62
+<sigma>	63
+<sigma>	64
+<sigma>	65
+<sigma>	66
+<sigma>	67
+<sigma>	68
+<sigma>	69
+<sigma>	70
+<sigma>	71
+<sigma>	72
+<sigma>	73
+<sigma>	74
+<sigma>	75
+<sigma>	76
+<sigma>	77
+<sigma>	78
+<sigma>	79
+<sigma>	80
+<sigma>	81
+<sigma>	82
+<sigma>	83
+<sigma>	84
+<sigma>	85
+<sigma>	86
+<sigma>	87
+<sigma>	88
+<sigma>	89
+<sigma>	90
+<sigma>	91
+<sigma>	92
+<sigma>	93
+<sigma>	94
+ucase	40
+ucase	41
+ucase	42
+ucase	43
+ucase	44
+ucase	45
+ucase	46
+ucase	47
+ucase	48
+ucase	49
+ucase	50
+ucase	51
+ucase	52
+ucase	53
+ucase	54
+ucase	55
+ucase	56
+ucase	57
+ucase	58
+ucase	59
+ucase	60
+ucase	61
+ucase	62
+ucase	63
+ucase	64
+ucase	65
+ucase	66
+ucase	67
+ucase	68
+ucase	69
+ucase	70
+ucase	71
+ucase	72
+ucase	73
+ucase	74
+letter	1
+letter	2
+letter	3
+letter	4
+letter	5
+letter	6
+letter	7
+letter	8
+letter	9
+letter	10
+letter	11
+letter	12
+letter	13
+letter	14
+letter	15
+letter	16
+letter	17
+letter	18
+letter	19
+letter	20
+letter	21
+letter	22
+letter	23
+letter	24
+letter	25
+letter	26
+letter	27
+letter	28
+letter	29
+letter	30
+letter	31
+letter	32
+letter	33
+letter	34
+letter	35
+letter	36
+letter	37
+letter	38
+letter	39
+letter	40
+letter	41
+letter	42
+letter	43
+letter	44
+letter	45
+letter	46
+letter	47
+letter	48
+letter	49
+letter	50
+letter	51
+letter	52
+letter	53
+letter	54
+letter	55
+letter	56
+letter	57
+letter	58
+letter	59
+letter	60
+letter	61
+letter	62
+letter	63
+letter	64
+letter	65
+letter	66
+letter	67
+letter	68
+letter	69
+letter	70
+letter	71
+letter	72
+letter	73
+letter	74
+all	1
+all	2
+all	3
+all	4
+all	5
+all	6
+all	7
+all	8
+all	9
+all	10
+all	11
+all	12
+all	13
+all	14
+all	15
+all	16
+all	17
+all	18
+all	19
+all	20
+all	21
+all	22
+all	23
+all	24
+all	25
+all	26
+all	27
+all	28
+all	29
+all	30
+all	31
+all	32
+all	33
+all	34
+all	35
+all	36
+all	37
+all	38
+all	39
+all	40
+all	41
+all	42
+all	43
+all	44
+all	45
+all	46
+all	47
+all	48
+all	49
+all	50
+all	51
+all	52
+all	53
+all	54
+all	55
+all	56
+all	57
+all	58
+all	59
+all	60
+all	61
+all	62
+all	63
+all	64
+all	65
+all	66
+all	67
+all	68
+all	69
+all	70
+all	71
+all	72
+all	73
+all	74
+all	75
+all	76
+all	77
+all	78
+all	79
+all	80
+all	81
+all	82
+all	83
+all	84
+all	85
+all	86
+all	87
+all	88
+all	89
+all	90
+all	91
+all	92
+all	93
+all	94
+digit	75
+digit	76
+digit	77
+digit	78
+digit	79
+digit	80
+digit	81
+digit	82
+digit	83
+digit	84
+signs	85
+signs	86
+signs	87
+signs	88
+signs	89
+signs	90
Index: nawszelkiwypadek/tools/gue_dic/labels.sym
===================================================================
--- nawszelkiwypadek/tools/gue_dic/labels.sym	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/labels.sym	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,7 @@
+lcase	a ± b c æ d e ê f g h i j k l ³ m n ñ o ó p q r s ¶ t u v w x y z Œ ¿ é ö ü ä
+ucase	A ¡ B C Æ D E Ê F G H I J K L £ M N Ñ O Ó P Q R S Š T U V W X Y Z ¬ ¯
+letter	lcase ucase
+digit	0 1 2 3 4 5 6 7 8 9
+signs    , . @ / ' _
+sem	~ ; - \ 
+all	letter digit signs sem
Index: nawszelkiwypadek/tools/gue_dic/makeLabels.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/makeLabels.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/makeLabels.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+use locale;
+
+print "lcase	a ± b c æ d e ê f g h i j k l ³ m n ñ o ó p q r s ¶ t u v w x y z Œ ¿ é ö ü ä\n";
+print "ucase	A ¡ B C Æ D E Ê F G H I J K L £ M N Ñ O Ó P Q R S Š T U V W X Y Z ¬ ¯\n";
+print "letter	lcase ucase\n";
+print "digit	0 1 2 3 4 5 6 7 8 9\n";
+print "signs    , . @ \/ \' _\n";
+print "sem	~ ; - \\ \n";
+print "all	letter digit signs sem\n";
Index: nawszelkiwypadek/tools/gue_dic/prep.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/prep.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/prep.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,213 @@
+#! /usr/bin/perl
+
+use locale;
+
+$linesPerFile = 20000;
+
+if (@ARGV < 1) {
+    print "usage: prep.pl dictionary_file\n";
+    exit;
+}
+
+$file = shift; # @ARGV;
+$kind = shift;
+
+if ($kind eq "") {
+    $kind="suf";
+}
+
+# Przygotowanie etykiet
+
+`makeLabels.pl > labels.sym`;
+
+`lexmakelab labels`;
+
+# Analiza pliku s³ownika
+
+
+print "Kanonizujê opisy.........................................";
+
+`canon.pl <$file >temp2`;
+
+print "OK\n";
+
+print "Analizuje prefiksy.......................................";
+
+`count_prefs.pl 2 4 < temp2 > prefs`;
+`sort -k1,1 -k3,3nr prefs > prefsS`;
+`cut_prefs.pl 0.5 0.01 100 prefsS > prefs`;
+`rm prefsS`;
+
+print "OK\n";
+
+print "Analizujê plik s³ownika";
+
+if ($kind eq "pre") {
+    print "(pre).............................";
+    `stat_pre.pl temp2 > temp1`;
+} else {
+    print "(suf).............................";
+    `stat.pl prefs < temp2 > temp1`;
+}
+
+print "OK\n";
+
+# zmniejszamy plik...
+
+print "Sortujê plik.............................................";
+
+`sort -t \\~ -k1,1 -k2,2nr <temp1 > temp2`;
+
+print "OK\n";
+
+print "Minimalizujê plik s³ownika...............................";
+
+`rmDup.pl < temp2 > temp1`;
+#`rmDup2.pl < temp1 > temp2`;
+
+`cp temp1 temp2`;
+
+`rm temp1`;
+
+print "OK\n";
+
+#dzielimy plik na wiele czê¶ci, uruchamiamy lexcomplex dla ka¿dej
+#czê¶ci osobno, nastêpnie ³±czymy to za pomoc± programu fsmunion
+
+print "Dzielê s³ownik na mniejsze czê¶ci........................";
+
+open(IN, "./temp2");
+
+$lineCount = 0;
+$fileCount = 0;
+
+`mkdir LemTEMP`;
+
+open(FILE, ">LemTEMP/slo_0");
+
+while (<IN>) {
+
+    if (++$lineCount >= $linesPerFile) {
+	$fileCount++;
+	$lineCount = 0;
+
+	close(FILE);
+#	print "Tworzê nowy plik tymczasowy: slo_".$fileCount."\n";
+	open(FILE, ">LemTEMP/slo_".$fileCount);
+    }
+
+    print(FILE $_);
+}
+
+print "OK\n";
+
+print "Tworzê automaty po¶rednie";
+
+#32 kropki, fileCount plikow
+$filesPerDot = $fileCount/32;
+$files=$filesPerDot;
+$dots=0;
+
+for ($i=0; $i<=$fileCount; $i++) {
+
+    if ($files >= $filesPerDot) {
+	$files = 0;
+	print ".";
+	$dots++;
+    }
+    $files++;
+
+    $command = "lexcomplex -l labels.lab -S labels.scl < LemTEMP/slo_".$i." > LemTEMP/slownik_".$i.".fsm";
+
+    `$command`;
+
+}
+if ($dots < 32) {
+    for ($i=0; $i<32 - $dots; $i++) {
+	print ".";
+    }
+}
+
+print "OK\n";
+
+`rm LemTEMP/slo_*`;
+
+print "Tworzê automat koñcowy";
+
+#35 kropek...
+$filesPerDot = $fileCount/35;
+$files=$filesPerDot;
+$dots=0;
+
+`cp LemTEMP/slownik_0.fsm slownik1.fsm`;
+
+for ($i=1; $i<=$filecount; $i++) {
+
+    if ($files >= $filesPerDot) {
+	$files = 0;
+	print ".";
+	$dots++;
+    }
+    $files++;
+
+    $command = "fsmunion LemTEMP/slownik_".$i." slownik1.fsm > slownik2.fsm";
+
+    `$command`;
+
+    `mv slownik2.fsm slownik1.fsm`;
+}
+
+if ($dots < 35) {
+    for ($i=0; $i<35 - $dots; $i++) {
+	print ".";
+    }
+}
+
+`fsmunion LemTEMP/* > slownik1.fsm`;
+
+print "OK\n";
+
+print "Usuwam epsilon-przejscia.................................";
+
+`fsmrmepsilon slownik1.fsm > slownik2.fsm`;
+
+`rm slownik1.fsm`;
+
+print "OK\n";
+
+print "Determinizujê automat....................................";
+
+`fsmdeterminize slownik2.fsm > slownik1.fsm`;
+
+`rm slownik2.fsm`;
+
+print "OK\n";
+
+print "Minimalizujê automat.....................................";
+
+`fsmminimize slownik1.fsm > slownik.fsm`;
+
+`rm slownik1.fsm`;
+
+print "OK\n";
+
+print "Konwertujê automat do formatu fsa........................";
+
+`fsmprint -i labels.lab slownik.fsm > slownik.txt`;
+
+`../fsm2aut slownik.txt > slownik.aut`;
+
+`../aut2fsa < slownik.aut > gue.bin`;
+
+print "OK\n";
+
+print "Czyszczê pliki pomocnicze................................";
+
+`rm LemTEMP/*`;
+`rmdir LemTEMP`;
+`rm temp2`;
+`rm slownik.fsm`;
+`rm slownik.txt`;
+`rm slownik.aut`;
+
+print "OK\n";
Index: nawszelkiwypadek/tools/gue_dic/prep_user_dict.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/prep_user_dict.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/prep_user_dict.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,31 @@
+#! /usr/bin/env perl
+
+use locale;
+use strict;
+
+##################################################
+# Skrypt transformuje s³ownik u¿ytkownika        #
+# do s³ownika rozumianego przez gue.             #
+# Format wej¶ciowy:                              #
+# pref*kon~waga;opis                             #
+# Format wyj¶ciowy:                              #
+# nok_pref~waga;opis                             #
+#                                                #
+# Prefiks mo¿e byæ pusty, koñcówka te¿           #
+##################################################
+
+while (<>) {
+    /^(\w*)\*(\w*)(~.*)$/;
+    my $pref = $1;
+    my $kon = $2;
+    my $desc = $3;
+
+    print reverse(split("",$kon));
+
+    if ($pref != "") {
+	print "_$pref";
+    }
+    print "$desc\n";
+
+
+}
Index: nawszelkiwypadek/tools/gue_dic/rmDup.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/rmDup.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/rmDup.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+# Usuwa zbêdne powtórzenia scie¿ek
+
+use locale;
+
+#if (@ARGV < 1) {
+#    print "USAGE: remDup.pl num\n\tGdzie \"num\" jest ilo¶ci± powtórzeñ, które zostawiamy\n";
+#    exit(0);
+#}
+
+
+
+#ilo¶æ powtórzeñ, które zostawiamy
+$max = 10;
+
+# przyjmujemy, ze na wej¶ciu znajduje siê plik posortowany,
+# po koñcówkach oraz po prawdopodobieñstwie
+
+$line = <>;
+
+while (($line !~ m/^$/) || ($line =~ m/^\n$/)) {
+
+    $count = 0;
+
+    while ($line =~ m/^\n$/) {
+	$line = <>;
+    }
+
+    $line =~ /^([^~]+)~.*/;
+    $theEnd = $1;
+    $end = $1;
+
+    while (($end =~ m/$theEnd/) && ($count++ < $max)) {
+	print $line;
+	$line = <>;
+	$line =~ /^([^~]+)~.*/;
+	$end = $1;
+    }
+
+    # tutaj mamy dwie mo¿liwo¶ci:
+    # 1. wypisali¶my ju¿ max lini - musimy wywaliæ kolejne linie, które
+    # zawieraj± koñcówkê theEnd,
+    # 2. pasuj±cych lini by³o mniej ni¿ max, wtedy nic nie musimy robiæ
+    # - w zmiennej line znajduje siê kolejna linia...
+
+    if ($count == $max + 1) {
+	while ($oldEnd =~ m/$theEnd/) {
+	    $line = <>;
+	    $line =~ /^([^~]+)~.*/;
+	    $oldEnd = $1;
+	}
+    }
+
+}
Index: nawszelkiwypadek/tools/gue_dic/stat.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/stat.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/stat.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,165 @@
+#! /usr/bin/perl
+
+use locale;
+
+######################################################
+# na wej¶ciu znajduje siê plik zawieraj±cy linie     #
+# postaci:                                           #
+# slowo;opis                                         #
+#                                                    #
+# na wyj¶ciu ma siê znaleŒæ plik zawieraj±cy linie:  #
+# koñcówka(rev);prawdopodobieñstwo;opis              #
+# gdzie:                                             #
+# - koñcówka(rev) jest koñcówk± wyrazu zapisan±      #
+#   w odwrotnej kolejno¶ci, dla ka¿dego wyrazu       #
+#   w s³owniku wypisujemy koñcówki o d³ugo¶ciach     #
+#   od 1 do d³ugo¶ci wyrazu,                         #
+# - prawdopodobieñstwo jest prawdopodobieñstwem      #
+#   wyst±pienia danego opisu dla danej koñcówki      #
+#   (obliczonym na podstwie statystycznej analizy    #
+#   s³ownika), np: 250 oznacza, ze opis popjawia sie #
+#   1 raz na 4 wyst±pienia koñcówki.                 #
+#   Zapisana zostaje odwrotno¶æ prawdopodobieñstwa   #
+#   aby scie¿ka najbardziej prawdopodobna mia³a      #
+#   najmniejszy koszt.                               #
+######################################################
+
+######
+#STALE
+#
+# Jak bardzo prawdopodobna musi byæ dana ¶cie¿ka, aby
+# braæ j± pod uwagê? (w promilach)
+$MIN_PROB = 0;
+#
+# Maksymalna ilo¶æ powtórzeñ danej koñcówki (brane od
+# najbardziej prawdopodbnej w dó³
+$MAX_PATH = 10;
+#
+# Znak odzielajacy koncowke od prefiksu
+$PREF_SIGN = '_';
+######
+# Zmienne globalne
+# 
+# Tablica okreslajaca, ktore prefiksy nalezy uwzlednic
+# w wyjsciowym pliku.
+# Klucz - ciag znakow prefiks$PREF_SIGNopis.
+#  Wartosc: 1 - jezeli nalezy uwzglednic, 0 w przeciwnym przypadku
+my %prefs;
+#
+# maksymalna dlugosc analizowanego prefiksu
+my $MAX_PREF = 0;
+######
+
+###########################################################
+# FUNKCJE
+
+# wczytuje prefiksy do tablicy hashowej
+# parametry:
+# - nazwa pliku, z ktorego nalezy pobrac prefiksy
+#   Plik w formacie:
+#   prefiks\topis...\n
+sub load_prefs {
+
+    my $file = shift;
+    open(IN, $file);
+
+    while (<IN>) {
+	$_ =~ /^(\w+)\t([^\t]+)\t/;
+	my $key = "$1$PREF_SIGN$2";
+	my $len = length($1);
+	if ($len > $MAX_PREF) {
+	    $MAX_PREF = $len;
+	}
+	$prefs{$key} = 1;
+    }
+}
+
+###########################################################
+
+# Jezeli podano parametr to jest to nazwa pliku z prefiksami
+
+if (@ARGV > 0) {
+#    print "Laduje prefiksy ($ARGV[0])\n";
+    load_prefs(shift);
+#     print "Zaladowane:\n";
+#     for $key (keys(%prefs)) {
+# 	print "$key\t$prefs{$key}\n";
+#     }
+#     print "++++++++++++++++++++++++++++++++++++++++++++++++++\n";
+}
+
+@input = <>;
+
+#$max = 0;
+
+#for $m (@input) {
+#    $m =~ /(\w+);.*$/;
+#    if (length($1) > $max) {
+#	$max = length($1);
+#    }
+#}
+
+$n = 2; #$max; 
+
+$go = 1;
+
+while ($go) {
+
+    my %koncowki;
+    my $sumy;
+ 
+    $go = 0;
+    for $m (@input) {
+	if ($m =~ /(\w{$n});(.*)$/) {
+	    $go = 1;
+	    my $ending = $1;
+	    my $desc = $2;
+	    for (my $i=$MAX_PREF; $i>0; $i--) {
+		$m =~ /^(\w{$i}).*/;
+		my $key = "$1$PREF_SIGN$desc";
+		if ($prefs{$key} == 1) {
+		    $ending .= "$PREF_SIGN$1";
+		    last;
+		}
+	    }
+	    $koncowki{$ending.";".$desc}++;
+	    $sumy{$ending}++;
+	}
+    }
+
+    print "\n";
+ 
+    for $koncowka (keys %koncowki) {
+	$koncowka =~ /^(.*);(.*)$/;
+	my $ending = $1;
+	my $opis = $2;
+	$p = $koncowki{$koncowka} / $sumy{$ending};
+        $p *= 1000;                     #wartosc w promilach
+
+	if ($p <= $MIN_PROB) {
+	    next;
+	}
+
+	#if ($p == 1000) {
+	#    $p--;
+	#}
+
+        #$p = 1000 - $p;                 #odwrotnosc
+	my $old = $2;
+	$ending =~ /^(\w+)$PREF_SIGN(\w+)/;
+
+	my $rev = reverse($1);
+
+	if ($2 !~ /^$old$/) {
+	    $rev .= "$PREF_SIGN$2";
+	}
+
+	# opakowujemy znak '-' znakami [] ;) dla lextools
+	$opis =~ s/-/\[-\]/;
+
+	printf "%s~%.0f;%s\n", $rev, $p, $opis;
+    }
+
+  $n++;
+
+}
Index: nawszelkiwypadek/tools/gue_dic/stat_pre.pl
===================================================================
--- nawszelkiwypadek/tools/gue_dic/stat_pre.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/gue_dic/stat_pre.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,95 @@
+#! /usr/bin/perl
+
+use locale;
+
+######################################################
+# na wej¶ciu znajduje siê plik zawieraj±cy linie     #
+# postaci:                                           #
+# slowo;opis                                         #
+#                                                    #
+# na wyj¶ciu ma siê znaleŒæ plik zawieraj±cy linie:  #
+# koñcówka(rev);prawdopodobieñstwo;opis              #
+# gdzie:                                             #
+# - koñcówka(rev) jest koñcówk± wyrazu zapisan±      #
+#   w odwrotnej kolejno¶ci, dla ka¿dego wyrazu       #
+#   w s³owniku wypisujemy koñcówki o d³ugo¶ciach     #
+#   od 1 do d³ugo¶ci wyrazu,                         #
+# - prawdopodobieñstwo jest prawdopodobieñstwem      #
+#   wyst±pienia danego opisu dla danej koñcówki      #
+#   (obliczonym na podstwie statystycznej analizy    #
+#   s³ownika), np: 250 oznacza, ze opis popjawia sie #
+#   1 raz na 4 wyst±pienia koñcówki.                 #
+#   Zapisana zostaje odwrotno¶æ prawdopodobieñstwa   #
+#   aby scie¿ka najbardziej prawdopodobna mia³a      #
+#   najmniejszy koszt.                               #
+######################################################
+
+######
+#STALE
+#
+# Jak bardzo prawdopodobna musi byæ dana ¶cie¿ka, aby
+# braæ j± pod uwagê? (w promilach)
+$MIN_PROB = 0;
+#
+# Maksymalna ilo¶æ powtórzeñ danej koñcówki (brane od
+# najbardziej prawdopodbnej w dó³
+$MAX_PATH = 10;
+#
+######
+
+@input = <>;
+
+#$max = 0;
+
+#for $m (@input) {
+#    $m =~ /(\w+);.*$/;
+#    if (length($1) > $max) {
+#	$max = length($1);
+#    }
+#}
+
+$n = 1; #$max; 
+
+$go = 1;
+
+while ($n<7) {
+
+    my %prefiksy;
+    my $sumy;
+ 
+    $go = 0;
+    for $m (@input) {
+	if ($m =~ /^(\w{$n})\w*;(.*)$/) {
+	    $go = 1;
+	    $prefiksy{$1.";".$2}++;
+	    $sumy{$1}++;
+	}
+    }
+
+    print "\n";
+ 
+    for $prefiks (keys %prefiksy) {
+	$prefiks =~ /^(.*);(.*)$/;
+	$p = $prefiksy{$prefiks} / $sumy{$1};
+        $p *= 1000;                     #wartosc w promilach
+
+	if ($p <= $MIN_PROB) {
+	    next;
+	}
+
+	#if ($p == 1000) {
+	#    $p--;
+	#}
+
+        $p = 1000 - $p;                 #odwrotnosc
+#	$rev = reverse($1);
+	# opakowujemy znak '-' znakami [] ;)
+	$opis = $2;
+	$opis =~ s/-/\[-\]/;
+
+	printf "%s~%.0f;%s\n", $1, $p, $opis;
+    }
+
+  $n++;
+
+}
Index: nawszelkiwypadek/tools/lem_dic/makeLabels.pl
===================================================================
--- nawszelkiwypadek/tools/lem_dic/makeLabels.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/lem_dic/makeLabels.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+use locale;
+
+print "lcase	a ± b c æ d e ê f g h i j k l ³ m n ñ o ó p q r s ¶ t u v w x y z Œ ¿ é ö ü ä\n";
+print "ucase	A ¡ B C Æ D E Ê F G H I J K L £ M N Ñ O Ó P Q R S Š T U V W X Y Z ¬ ¯\n";
+print "letter	lcase ucase\n";
+print "digit	0 1 2 3 4 5 6 7 8 9\n";
+print "signs    , . @ \/ \'\n";
+print "sem	~ ; _ - + ? \\ \n";
+print "all	letter digit signs sem\n";
Index: nawszelkiwypadek/tools/lem_dic/prep.pl
===================================================================
--- nawszelkiwypadek/tools/lem_dic/prep.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ nawszelkiwypadek/tools/lem_dic/prep.pl	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,75 @@
+#! /usr/bin/perl
+
+use locale;
+use strict;
+
+my $file = shift;
+my $filename;
+
+if ($file eq "") {
+    print "Podaj nazwê pliku.\n";
+    exit(1);
+}
+
+if ($file =~ /(.*)\.dic/)
+{
+    $filename = $1;
+}
+else
+{
+    print "The input file must have .dic extension.";
+    exit(1);
+}
+
+`makeLabels.pl > labels.sym`;
+
+`lexmakelab labels`;
+
+print "Kanonizujê opisy.........................................";
+
+#`canon.pl <$file >temp2`;
+
+print "Kompilujê automat........................................";
+
+`lexcomplex -l labels.lab -S labels.scl <$file > temp1`;
+
+print "OK\n";
+
+print "Usuwam epsilon-przejscia.................................";
+
+`fsmrmepsilon temp1> temp2`;
+
+print "OK\n";
+
+print "Determinizujê automat....................................";
+
+`fsmdeterminize temp2 > temp1`;
+
+print "OK\n";
+
+print "Minimalizujê automat.....................................";
+
+`fsmminimize temp1> temp2`;
+
+print "OK\n";
+
+print "Konwertujê automat do formatu fsa........................";
+
+`fsmprint -i labels.lab temp2> temp1`;
+
+`cp temp1 pofsmprint`;
+
+`../fsm2aut temp1> temp2`;
+
+`./aut2fsa.nowy < temp2> $filename.bin`;
+
+print "OK\n";
+
+print "Czyszczê pliki pomocnicze................................";
+
+`rm temp2`;
+`rm temp1`;
+#`rm labels.*`;
+
+print "OK\n";
+
Index: www/copyright.html
===================================================================
--- www/copyright.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ www/copyright.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<title>UAM Text Tools</title>
+</head>
+<body>
+<h1>UAM Text Tools</h1>
+
+
+<h3>UTT components</h3>
+<ul>
+<li>tok - tokenizer
+<li>lem - lemmatizer
+<li>gue - guesser
+<li>cor - corrector
+<li>ser - searcher
+<li>grp - grepper
+<li>con - concordancer
+<li>dgp - dependency graph parser
+<li>kot - rezinekot
+</ul>
+
+<h3>Download</h3>
+<ul>
+<li>Software
+<li>Polish dictionary data (PMDB tagset)
+<li>Portuguese dictionary data (INTEX tagset)
+</ul>
+
+
+
+Authors: Tomasz Obrêbski, Micha³ Stolarski, Justyna Walkowska
+
+</body>
+<html>
Index: www/downloads.html
===================================================================
--- www/downloads.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ www/downloads.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<title>UAM Text Tools</title>
+</head>
+<body>
+<h1>UAM Text Tools</h1>
+
+
+<h3>UTT components</h3>
+<ul>
+<li>tok - tokenizer
+<li>lem - lemmatizer
+<li>gue - guesser
+<li>cor - corrector
+<li>ser - searcher
+<li>grp - grepper
+<li>con - concordancer
+<li>dgp - dependency graph parser
+<li>kot - rezinekot
+</ul>
+
+<h3>Download</h3>
+<ul>
+<li>Software
+<li>Polish dictionary data (PMDB tagset)
+<li>Portuguese dictionary data (INTEX tagset)
+</ul>
+
+
+
+Authors: Tomasz Obrêbski, Micha³ Stolarski, Justyna Walkowska
+
+</body>
+<html>
Index: www/index.html
===================================================================
--- www/index.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ www/index.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<title>UAM Text Tools</title>
+</head>
+<body>
+<h1>UAM Text Tools</h1>
+
+
+<h3>UTT components</h3>
+<ul>
+<li>tok - tokenizer
+<li>lem - lemmatizer
+<li>gue - guesser
+<li>cor - corrector
+<li>ser - searcher
+<li>grp - grepper
+<li>con - concordancer
+<li>dgp - dependency graph parser
+<li>kot - rezinekot
+</ul>
+
+<h3>Download</h3>
+<ul>
+<li>Software
+<li>Polish dictionary data (PMDB tagset)
+<li>Portuguese dictionary data (INTEX tagset)
+</ul>
+
+
+
+Authors: Tomasz Obrêbski, Micha³ Stolarski, Justyna Walkowska
+
+</body>
+<html>
Index: www/utt.html
===================================================================
--- www/utt.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
+++ www/utt.html	(revision f1563c0f0270f57e03d1fba3f2ce99a3828b3b8c)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<title>UAM Text Tools</title>
+</head>
+<body>
+<h1>UAM Text Tools</h1>
+
+
+<h3>UTT components</h3>
+<ul>
+<li>tok - tokenizer
+<li>lem - lemmatizer
+<li>gue - guesser
+<li>cor - corrector
+<li>ser - searcher
+<li>grp - grepper
+<li>con - concordancer
+<li>dgp - dependency graph parser
+<li>kot - rezinekot
+</ul>
+
+<h3>Download</h3>
+<ul>
+<li>Software
+<li>Polish dictionary data (PMDB tagset)
+<li>Portuguese dictionary data (INTEX tagset)
+</ul>
+
+
+
+Authors: Tomasz Obrêbski, Micha³ Stolarski, Justyna Walkowska
+
+</body>
+<html>
