utt/_old/nawszelkiwypadek/tools/gue_dic/stat.pl
tom a6e708f37f ANULOWANIE POPRZEDNIEGO COMMITU
Revert "Replacing old implementation with working implementation"

This reverts commit 1e121f45e2.

 Please enter the commit message for your changes. Lines starting
 with '#' will be ignored, and an empty message aborts the commit.

 Committer: tom <tom@lim.(none)>

 On branch master
 Changes to be committed:
   (use "git reset HEAD <file>..." to unstage)

	modified:   _old/app/Makefile
	deleted:    _old/app/conf/Makefile
	deleted:    _old/app/conf/compiledic.conf
	deleted:    _old/app/conf/cor.conf
	deleted:    _old/app/conf/dgc.conf
	deleted:    _old/app/conf/dgp.conf
	deleted:    _old/app/conf/gph.conf
	deleted:    _old/app/conf/grp.conf
	deleted:    _old/app/conf/gue.conf
	deleted:    _old/app/conf/kor.conf
	deleted:    _old/app/conf/lem.conf
	deleted:    _old/app/conf/mar.conf
	deleted:    _old/app/conf/ser.conf
	deleted:    _old/app/conf/utt.conf
	modified:   _old/app/src/common/Makefile
	modified:   _old/app/src/compiledic/Makefile
	modified:   _old/app/src/compiledic/aut2fsa.cc
	modified:   _old/app/src/cor/Makefile
	modified:   _old/app/src/dgp/Makefile
	new file:   _old/app/src/dgp/canonize
	new file:   _old/app/src/dgp/dgc
	modified:   _old/app/src/dgp/grammar.hh
	modified:   _old/app/src/dgp/mgraph.hh
	modified:   _old/app/src/dgp/sgraph.hh
	modified:   _old/app/src/dgp/thesymbols.hh
	new file:   _old/app/src/dgp/tre
	modified:   _old/app/src/gue/Makefile
	modified:   _old/app/src/gue/guess.cc
	modified:   _old/app/src/kor/Makefile
	modified:   _old/app/src/kor/corlist.cc
	modified:   _old/app/src/kor/corr.cc
	new file:   _old/app/src/kor/corr.hh
	modified:   _old/app/src/kor/main.cc
	modified:   _old/app/src/lem/Makefile
	modified:   _old/app/src/lem/lem.cc
	modified:   _old/app/src/lib/Makefile
	modified:   _old/app/src/lib/auttools.cc
	modified:   _old/app/src/lib/symtab.cc
	modified:   _old/app/src/lib/tft.h
	modified:   _old/app/src/lib/tfti.h
	modified:   _old/app/src/lib/ttrans.h
	modified:   _old/app/src/lib/word.cc
	modified:   _old/app/src/lib/word.h
	modified:   _old/app/src/tok.c/Makefile
	modified:   _old/app/src/tok.c/cmdline_tok.ggo
	modified:   _old/app/src/tok.c/common_tok.cc
	modified:   _old/app/src/tok/Makefile
	modified:   _old/nawszelkiwypadek/tools/aut2fsa
	modified:   _old/nawszelkiwypadek/tools/cor_dic/makeLabels.pl
	modified:   _old/nawszelkiwypadek/tools/cor_dic/prep.pl
	modified:   _old/nawszelkiwypadek/tools/fsm2aut
	modified:   _old/nawszelkiwypadek/tools/gue_dic/canon.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/compile_user_dict.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/count_prefs.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/cut_prefs.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/makeLabels.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/prep.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/prep_user_dict.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/rmDup.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/stat.pl
	modified:   _old/nawszelkiwypadek/tools/gue_dic/stat_pre.pl
	modified:   _old/nawszelkiwypadek/tools/lem_dic/makeLabels.pl
	modified:   _old/nawszelkiwypadek/tools/lem_dic/prep.pl
	modified:   auto/defaults
	modified:   auto/options
	modified:   auto/output/Makefile
	modified:   auto/output/config_h
	modified:   auto/summary
	modified:   configure
2011-12-14 16:08:41 +01:00

166 lines
3.7 KiB
Perl
Executable File

#! /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++;
}