source: nawszelkiwypadek/tools/gue_dic/stat_pre.pl @ f5d3b20

help
Last change on this file since f5d3b20 was f1563c0, checked in by obrebski <obrebski@…>, 17 years ago

git-svn-id: svn://atos.wmid.amu.edu.pl/utt@3 e293616e-ec6a-49c2-aa92-f4a8b91c5d16

  • Property mode set to 100755
File size: 2.2 KB
RevLine 
[f1563c0]1#! /usr/bin/perl
2
3use locale;
4
5######################################################
6# na wej¶ciu znajduje siê plik zawieraj±cy linie     #
7# postaci:                                           #
8# slowo;opis                                         #
9#                                                    #
10# na wyj¶ciu ma siê znaleŒæ plik zawieraj±cy linie:  #
11# koñcówka(rev);prawdopodobieñstwo;opis              #
12# gdzie:                                             #
13# - koñcówka(rev) jest koñcówk± wyrazu zapisan±      #
14#   w odwrotnej kolejno¶ci, dla ka¿dego wyrazu       #
15#   w s³owniku wypisujemy koñcówki o d³ugo¶ciach     #
16#   od 1 do d³ugo¶ci wyrazu,                         #
17# - prawdopodobieñstwo jest prawdopodobieñstwem      #
18#   wyst±pienia danego opisu dla danej koñcówki      #
19#   (obliczonym na podstwie statystycznej analizy    #
20#   s³ownika), np: 250 oznacza, ze opis popjawia sie #
21#   1 raz na 4 wyst±pienia koñcówki.                 #
22#   Zapisana zostaje odwrotno¶æ prawdopodobieñstwa   #
23#   aby scie¿ka najbardziej prawdopodobna mia³a      #
24#   najmniejszy koszt.                               #
25######################################################
26
27######
28#STALE
29#
30# Jak bardzo prawdopodobna musi byæ dana ¶cie¿ka, aby
31# braæ j± pod uwagê? (w promilach)
32$MIN_PROB = 0;
33#
34# Maksymalna ilo¶æ powtórzeñ danej koñcówki (brane od
35# najbardziej prawdopodbnej w dó³
36$MAX_PATH = 10;
37#
38######
39
40@input = <>;
41
42#$max = 0;
43
44#for $m (@input) {
45#    $m =~ /(\w+);.*$/;
46#    if (length($1) > $max) {
47#       $max = length($1);
48#    }
49#}
50
51$n = 1; #$max;
52
53$go = 1;
54
55while ($n<7) {
56
57    my %prefiksy;
58    my $sumy;
59 
60    $go = 0;
61    for $m (@input) {
62        if ($m =~ /^(\w{$n})\w*;(.*)$/) {
63            $go = 1;
64            $prefiksy{$1.";".$2}++;
65            $sumy{$1}++;
66        }
67    }
68
69    print "\n";
70 
71    for $prefiks (keys %prefiksy) {
72        $prefiks =~ /^(.*);(.*)$/;
73        $p = $prefiksy{$prefiks} / $sumy{$1};
74        $p *= 1000;                     #wartosc w promilach
75
76        if ($p <= $MIN_PROB) {
77            next;
78        }
79
80        #if ($p == 1000) {
81        #    $p--;
82        #}
83
84        $p = 1000 - $p;                 #odwrotnosc
85#       $rev = reverse($1);
86        # opakowujemy znak '-' znakami [] ;)
87        $opis = $2;
88        $opis =~ s/-/\[-\]/;
89
90        printf "%s~%.0f;%s\n", $1, $p, $opis;
91    }
92
93  $n++;
94
95}
Note: See TracBrowser for help on using the repository browser.