line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Text::Statistics::Cyrillic;
|
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
32230
|
use strict;
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
46
|
|
4
|
1
|
|
|
1
|
|
6
|
no warnings;
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
78
|
|
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
require Exporter;
|
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
our @ISA = qw(Exporter);
|
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
=head1 NAME
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
Text::Statistics::Cyrillic - Performs statistical corpora analysis
|
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
=head1 VERSION
|
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
Version 0.04
|
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
=cut
|
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
our $VERSION = '0.04';
|
21
|
1
|
|
|
1
|
|
29
|
use 5.006;
|
|
1
|
|
|
|
|
9
|
|
|
1
|
|
|
|
|
57
|
|
22
|
1
|
|
|
1
|
|
1100
|
use Text::ParseWords;
|
|
1
|
|
|
|
|
1512
|
|
|
1
|
|
|
|
|
81
|
|
23
|
1
|
|
|
1
|
|
1096
|
use utf8;
|
|
1
|
|
|
|
|
10
|
|
|
1
|
|
|
|
|
6
|
|
24
|
1
|
|
|
1
|
|
45
|
use base 'Exporter';
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
3882
|
|
25
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
our @EXPORT = qw(cyrillic);
|
27
|
|
|
|
|
|
|
our @words;
|
28
|
|
|
|
|
|
|
our $tokens;
|
29
|
|
|
|
|
|
|
our @out11;
|
30
|
|
|
|
|
|
|
our @outtott;
|
31
|
|
|
|
|
|
|
our $tokensgeral;
|
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
Text::Statistics::Cyrillic creates a seven column CSV file output with one line each
|
36
|
|
|
|
|
|
|
token per text given as input a corpus that files names follows '
|
37
|
|
|
|
|
|
|
1 (1). txt', '1 (2). txt', ..., '1 (n).txt' or
|
38
|
|
|
|
|
|
|
1 \(([1-9]|[1-9][0-9]+)\)\.txt
|
39
|
|
|
|
|
|
|
Columns stores statistical information:
|
40
|
|
|
|
|
|
|
(1) number of word forms in document d;
|
41
|
|
|
|
|
|
|
(2) number of tokens in d;
|
42
|
|
|
|
|
|
|
(3) Id number of d, ie., n;
|
43
|
|
|
|
|
|
|
(4) frequency of term t in d;
|
44
|
|
|
|
|
|
|
(5) corpus frequency of t ;
|
45
|
|
|
|
|
|
|
(6) document frequency of t (number of documents where t occurs at least once);
|
46
|
|
|
|
|
|
|
(7) t, UTF8 latin coded token-string
|
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
Main output file name is '1 (n + 5).txt' and it is stored in the same directory as
|
49
|
|
|
|
|
|
|
the corpus itself, toghether with residual files on each input file with .txu and .txv extensions.
|
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
Example:
|
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
use Text::Statistics::Cyrillic;
|
54
|
|
|
|
|
|
|
&cyrillic("4"); #3 (4-1) texts will be analised.
|
55
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
=head1 EXPORT
|
57
|
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
&cyrillic();
|
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
=cut
|
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
sub cyrillic{
|
63
|
|
|
|
|
|
|
|
64
|
0
|
|
|
0
|
0
|
|
print "inicio de programa, aguardes", "\n";
|
65
|
0
|
|
|
|
|
|
my $min = 1; #número do arquivo inicial
|
66
|
0
|
|
|
|
|
|
our $max=shift;
|
67
|
|
|
|
|
|
|
|
68
|
0
|
|
|
|
|
|
my $dif = $max - $min;
|
69
|
0
|
|
|
|
|
|
my $tempo = 1;
|
70
|
|
|
|
|
|
|
|
71
|
0
|
|
|
|
|
|
while ($tempo < 3){ #limita o procedimenento aos ciclos inicial e meta-dado
|
72
|
0
|
|
|
|
|
|
my $nome4 = "1 ($max).txt"; #arquivo de mescla para a obtenção automática de df
|
73
|
0
|
|
|
|
|
|
my $nome5 = "registro1 ($max).txt"; #arquivos de log dos dados e dos metadados
|
74
|
0
|
0
|
|
|
|
|
open (our $result, ">", $nome4) || die "Não posso escrever $nome4: $!";
|
75
|
0
|
0
|
|
|
|
|
open (my $registro, ">", $nome5) || die "Não posso escrever $nome5: $!";
|
76
|
0
|
|
|
|
|
|
my $num = $min; #número do arquivo inicial
|
77
|
0
|
|
|
|
|
|
my $maximo = $max; #número do arquivo final + 1
|
78
|
0
|
|
|
|
|
|
while ($num < $maximo){
|
79
|
|
|
|
|
|
|
|
80
|
0
|
|
|
|
|
|
my $nome1 = "1 ($num).txt"; #arquivos de texto
|
81
|
0
|
|
|
|
|
|
my $nome2 = "1 ($num).txu"; #\sToken\n
|
82
|
0
|
|
|
|
|
|
my $nome3 = "1 ($num).txv"; #Número do arquivo,Frequencia,\sType
|
83
|
|
|
|
|
|
|
|
84
|
0
|
|
|
|
|
|
my $i = 1; #primeira string
|
85
|
0
|
|
|
|
|
|
my $reg = /\r\n/; #necessário para a limpeza em UTF-8
|
86
|
0
|
|
|
|
|
|
my $reg2 = /\s/; #devido a um erro conhecido (cf. www.unicode.org,
|
87
|
|
|
|
|
|
|
#http://unicode.org/reports/tr13/tr13-5.html)
|
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
###início módulo de tokenização
|
90
|
|
|
|
|
|
|
|
91
|
0
|
0
|
|
|
|
|
open (my $in, "<", $nome1) || die "Can not open", $nome1, ": $!";
|
92
|
0
|
0
|
|
|
|
|
open (my $out, ">", $nome2) || die "Can not write", $nome2, ": $!";
|
93
|
0
|
|
|
|
|
|
print "inicio de tokenização, aguardes", "\n";
|
94
|
|
|
|
|
|
|
|
95
|
0
|
|
|
|
|
|
while (1) {
|
96
|
0
|
|
|
|
|
|
my $line = <$in>;
|
97
|
0
|
|
|
|
|
|
our $tokens = $i;
|
98
|
0
|
0
|
|
|
|
|
last unless $line;
|
99
|
0
|
|
|
|
|
|
for ($line) {
|
100
|
0
|
|
|
|
|
|
s/[-]|[Ͽ-Ͽ]|[Ա-��]/ /g;; #separadores exclusivamente de alfabeto cirílico
|
101
|
|
|
|
|
|
|
}
|
102
|
0
|
|
|
|
|
|
@words = &shellwords(' ', 0, $line); #separador anterior: \s+
|
103
|
0
|
|
|
|
|
|
foreach (@words) {
|
104
|
0
|
0
|
|
|
|
|
unless ($_ eq "s+"|$_ eq "0"|$_ eq $reg|$_ eq $reg2){ #limpeza final
|
105
|
0
|
|
|
|
|
|
print $out " $_\n";
|
106
|
0
|
|
|
|
|
|
$i++;
|
107
|
|
|
|
|
|
|
}
|
108
|
|
|
|
|
|
|
}
|
109
|
|
|
|
|
|
|
}
|
110
|
0
|
|
|
|
|
|
close $in;
|
111
|
|
|
|
|
|
|
|
112
|
0
|
0
|
|
|
|
|
if ($tempo < 2){
|
113
|
0
|
|
|
|
|
|
our $tokensgeral = $tokensgeral + $tokens;
|
114
|
|
|
|
|
|
|
}
|
115
|
0
|
|
|
|
|
|
close $out;
|
116
|
0
|
|
|
|
|
|
print "fim de tokenização", "\n";
|
117
|
0
|
|
|
|
|
|
print "início de typeficação, aguardes", "\n";
|
118
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
# início módulo de contagem de frequência ("typeficação")
|
120
|
|
|
|
|
|
|
|
121
|
0
|
|
|
|
|
|
my $ii = ($i - 1); #úlitma string processada no módulo anterior - 1
|
122
|
0
|
0
|
|
|
|
|
open (my $in2, "<", $nome2) || die "Can not open $nome2: $!";
|
123
|
0
|
0
|
|
|
|
|
open (my $out2, ">", $nome3) || die "Can not write $nome3: $!";
|
124
|
0
|
|
|
|
|
|
our @lista = <$in2>;
|
125
|
0
|
|
|
|
|
|
my $controle2 = 0;
|
126
|
0
|
|
|
|
|
|
my $types = 0;
|
127
|
0
|
|
|
|
|
|
while ($controle2 < $ii){
|
128
|
0
|
|
|
|
|
|
our $inicio = -1;
|
129
|
0
|
|
|
|
|
|
my $controle = 0; #freqüência dos termos
|
130
|
0
|
|
|
|
|
|
my $pesquisa = $lista[$controle2]; #termos pesquisado
|
131
|
0
|
|
|
|
|
|
while (1){
|
132
|
0
|
0
|
|
|
|
|
last unless ($lista[$inicio]);
|
133
|
0
|
|
|
|
|
|
foreach ($lista[$inicio]){
|
134
|
0
|
|
|
|
|
|
$inicio++;
|
135
|
0
|
0
|
|
|
|
|
if ($lista[$inicio] =~ /$pesquisa/i){ #localiza a palavra
|
136
|
0
|
|
|
|
|
|
$controle++; #acrescenta um "feijão"
|
137
|
|
|
|
|
|
|
}
|
138
|
|
|
|
|
|
|
}
|
139
|
|
|
|
|
|
|
}
|
140
|
0
|
0
|
|
|
|
|
if ($controle < $ii){
|
141
|
0
|
|
|
|
|
|
$types++;
|
142
|
0
|
|
|
|
|
|
print $out2 "$num,$controle,$pesquisa";
|
143
|
0
|
|
|
|
|
|
print $result $num, ",", $controle, ",", $pesquisa; #não deu
|
144
|
|
|
|
|
|
|
}
|
145
|
0
|
|
|
|
|
|
for (@lista){
|
146
|
0
|
|
|
|
|
|
s/$pesquisa/\n/i; #limpa o que já foi calculado, para minimizar os esforços.
|
147
|
|
|
|
|
|
|
}
|
148
|
0
|
|
|
|
|
|
$controle2++;
|
149
|
|
|
|
|
|
|
}
|
150
|
0
|
|
|
|
|
|
print "Foram encontrados ", $types, " types no arquivo ", $nome1, "!", "\n";
|
151
|
0
|
|
|
|
|
|
print $registro $types, ",", $ii, ",", $nome1, "\n";
|
152
|
0
|
|
|
|
|
|
close $in2;
|
153
|
0
|
|
|
|
|
|
close $out2;
|
154
|
0
|
|
|
|
|
|
$num++;
|
155
|
|
|
|
|
|
|
}
|
156
|
0
|
|
|
|
|
|
close $result;
|
157
|
0
|
|
|
|
|
|
$tempo++; #acrescenta um "feijão" ao tempo
|
158
|
0
|
|
|
|
|
|
$min = $max; #alteram o intervalo de alvos
|
159
|
0
|
|
|
|
|
|
$max++; #para a extração dos meta-dados
|
160
|
0
|
|
|
|
|
|
print "fim de typeficação", "\n";
|
161
|
0
|
|
|
|
|
|
print "início de primeira contagem, aguardes", "\n";
|
162
|
|
|
|
|
|
|
|
163
|
|
|
|
|
|
|
# início do módulo de frequencia da coleção
|
164
|
|
|
|
|
|
|
|
165
|
0
|
0
|
|
|
|
|
if ($tempo == 3){
|
166
|
0
|
|
|
|
|
|
do{
|
167
|
0
|
|
|
|
|
|
$num = $num - 1;
|
168
|
0
|
|
|
|
|
|
my $nome1 = "1 ($num).txv";
|
169
|
0
|
|
|
|
|
|
my $nome2 = "1 ($num).txt";
|
170
|
|
|
|
|
|
|
|
171
|
0
|
|
|
|
|
|
$num = $num + 2;
|
172
|
0
|
|
|
|
|
|
my $nome3 = "1 ($num).txt";
|
173
|
|
|
|
|
|
|
|
174
|
0
|
0
|
|
|
|
|
open (my $in1, "<", $nome1) || die "Não posso abrir $nome1: $!";
|
175
|
0
|
0
|
|
|
|
|
open (my $in2, "<", $nome2) || die "Não posso abrir $nome2: $!";
|
176
|
0
|
0
|
|
|
|
|
open (my $out1, ">", $nome3) || die "Não posso escrever $nome3: $!";
|
177
|
|
|
|
|
|
|
|
178
|
0
|
|
|
|
|
|
my @in1 = <$in1>;
|
179
|
0
|
|
|
|
|
|
my @in2 = <$in2>;
|
180
|
|
|
|
|
|
|
|
181
|
0
|
|
|
|
|
|
my $tempo1 = 0;
|
182
|
|
|
|
|
|
|
|
183
|
0
|
|
|
|
|
|
while ($in1[$tempo1]){
|
184
|
0
|
|
|
|
|
|
my $linha1 = $in1[$tempo1];
|
185
|
0
|
|
|
|
|
|
for ($linha1){
|
186
|
0
|
|
|
|
|
|
s/.+,.+, / /g;
|
187
|
|
|
|
|
|
|
}
|
188
|
0
|
|
|
|
|
|
my $tempo2 = 0;
|
189
|
0
|
|
|
|
|
|
my $cont = 0;
|
190
|
0
|
|
|
|
|
|
while ($in2[$tempo2]){
|
191
|
0
|
|
|
|
|
|
my $linha2 = $in2[$tempo2];
|
192
|
0
|
0
|
|
|
|
|
if ($linha2 =~ /.+,.+,$linha1/i){
|
193
|
0
|
|
|
|
|
|
for ($linha2){
|
194
|
0
|
|
|
|
|
|
s/[^0-9]/ /ig;
|
195
|
0
|
|
|
|
|
|
s/[0-9]+\s//;
|
196
|
|
|
|
|
|
|
}
|
197
|
0
|
|
|
|
|
|
for ($linha2){
|
198
|
0
|
|
|
|
|
|
$cont = $cont + $linha2;
|
199
|
|
|
|
|
|
|
}
|
200
|
|
|
|
|
|
|
}
|
201
|
0
|
|
|
|
|
|
$tempo2++;
|
202
|
|
|
|
|
|
|
}
|
203
|
0
|
|
|
|
|
|
$out11[$tempo1] = "$cont,$linha1"; #ok
|
204
|
0
|
|
|
|
|
|
$tempo1++;
|
205
|
|
|
|
|
|
|
}
|
206
|
0
|
|
|
|
|
|
close $in1;
|
207
|
0
|
|
|
|
|
|
close $in2;
|
208
|
0
|
|
|
|
|
|
print $out1 @out11;
|
209
|
0
|
|
|
|
|
|
close $out1;
|
210
|
0
|
|
|
|
|
|
print "fim de primeira contagem", "\n"; };
|
211
|
|
|
|
|
|
|
|
212
|
|
|
|
|
|
|
#inicio modulo de unificação tf df cf
|
213
|
|
|
|
|
|
|
#onde se cria o arquivo cf,df, termo, penúltimo na lista txt.
|
214
|
|
|
|
|
|
|
|
215
|
0
|
|
|
|
|
|
do{
|
216
|
0
|
|
|
|
|
|
print "início de terceira contagem, aguardes", "\n";
|
217
|
0
|
|
|
|
|
|
my $numm = $num - 2;
|
218
|
0
|
|
|
|
|
|
my $nome2 = "1 ($num).txt";
|
219
|
0
|
0
|
|
|
|
|
open (my $incf, "<", $nome2) || die "Não posso abrir $nome2: $!";
|
220
|
0
|
|
|
|
|
|
$num = $num - 1;
|
221
|
0
|
|
|
|
|
|
$nome2 = "1 ($num).txt";
|
222
|
0
|
0
|
|
|
|
|
open (my $indf, "<", $nome2) || die "Não posso abrir $nome2: $!";
|
223
|
0
|
|
|
|
|
|
$num = $num + 2;
|
224
|
0
|
|
|
|
|
|
$nome2 = "1 ($num).txt";
|
225
|
0
|
0
|
|
|
|
|
open (my $out, ">", $nome2) || die "Não posso abrir $nome2: $!";
|
226
|
|
|
|
|
|
|
|
227
|
0
|
|
|
|
|
|
my @lista1 = <$indf>;
|
228
|
0
|
|
|
|
|
|
my @lista2 = <$incf>;
|
229
|
0
|
|
|
|
|
|
my $linha = 0;
|
230
|
|
|
|
|
|
|
|
231
|
0
|
|
|
|
|
|
while(1){
|
232
|
0
|
0
|
|
|
|
|
last unless ($lista1[$linha]);
|
233
|
0
|
|
|
|
|
|
for ($lista1[$linha]){
|
234
|
0
|
|
|
|
|
|
s/$numm,//i;
|
235
|
|
|
|
|
|
|
}
|
236
|
0
|
|
|
|
|
|
for ($lista2[$linha]){
|
237
|
0
|
|
|
|
|
|
s/, .+//;
|
238
|
0
|
|
|
|
|
|
s/\n//;
|
239
|
|
|
|
|
|
|
}
|
240
|
0
|
|
|
|
|
|
print $out "$lista2[$linha],$lista1[$linha]";
|
241
|
0
|
|
|
|
|
|
$linha = $linha + 1;
|
242
|
|
|
|
|
|
|
}
|
243
|
0
|
|
|
|
|
|
close $out;
|
244
|
0
|
|
|
|
|
|
close $incf;
|
245
|
0
|
|
|
|
|
|
close $indf;
|
246
|
0
|
|
|
|
|
|
print "fim de terceira contagem", "\n";
|
247
|
|
|
|
|
|
|
|
248
|
|
|
|
|
|
|
#inicio módulo de união final - doc, tf, cf, df, termo, cria o último txt
|
249
|
|
|
|
|
|
|
|
250
|
0
|
|
|
|
|
|
print "inicio de unificação, aguardes", "\n";
|
251
|
0
|
0
|
|
|
|
|
open (my $incfdf, "<", $nome2) || die "Não posso abrir $nome2: $!";
|
252
|
0
|
|
|
|
|
|
$num = $num - 3;
|
253
|
0
|
|
|
|
|
|
$nome2 = "1 ($num).txt";
|
254
|
0
|
0
|
|
|
|
|
open (my $intf, "<", $nome2) || die "Não posso abrir $nome2: $!";
|
255
|
0
|
|
|
|
|
|
$num = $num + 4;
|
256
|
0
|
|
|
|
|
|
$nome2 = "1 ($num).txt";
|
257
|
0
|
0
|
|
|
|
|
open (my $outtot, ">", $nome2) || die "Não posso abrir $nome2: $!"; #arquivo de união final
|
258
|
|
|
|
|
|
|
#texto, tf, cf, df, termo
|
259
|
0
|
|
|
|
|
|
my @listatf = <$intf>;
|
260
|
0
|
|
|
|
|
|
my @listadf = <$incfdf>;
|
261
|
0
|
|
|
|
|
|
my @listadf1 = @listadf;
|
262
|
0
|
|
|
|
|
|
my $linhatf = 0;
|
263
|
|
|
|
|
|
|
|
264
|
0
|
|
|
|
|
|
while (1){
|
265
|
0
|
0
|
|
|
|
|
last unless ($listatf[$linhatf]);
|
266
|
0
|
|
|
|
|
|
my $linhadf = 0;
|
267
|
0
|
|
|
|
|
|
while (1){
|
268
|
0
|
0
|
|
|
|
|
last unless ($listadf[$linhadf]);
|
269
|
0
|
|
|
|
|
|
for ($listadf[$linhadf]){
|
270
|
0
|
|
|
|
|
|
s/.+,.+,//;
|
271
|
|
|
|
|
|
|
}
|
272
|
0
|
0
|
|
|
|
|
if ($listatf[$linhatf] =~ /.+,.+,$listadf[$linhadf]/i){ #localiza a linha em df na qual ocorre
|
273
|
|
|
|
|
|
|
#o termo de cada linha de tf
|
274
|
0
|
|
|
|
|
|
for ($listatf[$linhatf]){
|
275
|
0
|
|
|
|
|
|
s/, .+\n/,/i;
|
276
|
|
|
|
|
|
|
}
|
277
|
0
|
|
|
|
|
|
$outtott[$listadf[$linhatf]] = "$listatf[$linhatf]$listadf1[$linhadf]";
|
278
|
|
|
|
|
|
|
}
|
279
|
0
|
|
|
|
|
|
$linhadf++;
|
280
|
|
|
|
|
|
|
}
|
281
|
0
|
|
|
|
|
|
print $outtot @outtott;
|
282
|
0
|
|
|
|
|
|
$linhatf++;
|
283
|
|
|
|
|
|
|
}
|
284
|
0
|
|
|
|
|
|
print "fim de unificação", "\n";
|
285
|
0
|
|
|
|
|
|
close $outtot;
|
286
|
0
|
|
|
|
|
|
close $intf;
|
287
|
0
|
|
|
|
|
|
close $incfdf;
|
288
|
0
|
|
|
|
|
|
print "inicio de unificação para Okapi BM 25", "\n";
|
289
|
|
|
|
|
|
|
|
290
|
|
|
|
|
|
|
#início módulo de unificação de frequencia total de ocorrências por documento (para Okapi BM 25)
|
291
|
|
|
|
|
|
|
|
292
|
0
|
|
|
|
|
|
my $znum = $num;
|
293
|
0
|
0
|
|
|
|
|
open (my $zincinco, "<", "1 ($znum).txt") || die "Não posso escrever registro1 ($znum).txt: $!";
|
294
|
0
|
|
|
|
|
|
my @zin2 = <$zincinco>;
|
295
|
0
|
|
|
|
|
|
my @zin3 = @zin2;
|
296
|
0
|
|
|
|
|
|
$znum++;
|
297
|
0
|
0
|
|
|
|
|
open (my $zoutx, ">", "1 ($znum).txt") || die "Não posso escrever 1 ($znum).txt: $!";
|
298
|
0
|
|
|
|
|
|
$znum = $znum - 5;
|
299
|
0
|
0
|
|
|
|
|
open (my $zregistro, "<", "registro1 ($znum).txt") || die "Não posso escrever registro1 ($znum).txt: $!";
|
300
|
0
|
|
|
|
|
|
my @zin1 = <$zregistro>;
|
301
|
0
|
|
|
|
|
|
my $zindex = 0;
|
302
|
0
|
|
|
|
|
|
my $zinic = 0;
|
303
|
0
|
|
|
|
|
|
while (1){
|
304
|
0
|
0
|
|
|
|
|
last unless ($zin1[$zinic]);
|
305
|
0
|
|
|
|
|
|
my $zlinhac = 0;
|
306
|
0
|
|
|
|
|
|
for ($zin1[$zinic]){
|
307
|
0
|
|
|
|
|
|
s/1 .+\n//;
|
308
|
|
|
|
|
|
|
}
|
309
|
0
|
|
|
|
|
|
my $zinicc = $zinic + 1;
|
310
|
0
|
|
|
|
|
|
while (1){
|
311
|
0
|
0
|
|
|
|
|
last unless ($zin2[$zlinhac]);
|
312
|
0
|
|
|
|
|
|
for ($zin3[$zlinhac]){
|
313
|
0
|
|
|
|
|
|
s/,.+\n//;
|
314
|
|
|
|
|
|
|
}
|
315
|
0
|
0
|
|
|
|
|
if ("$zin3[$zlinhac]\n" =~ /$zinicc\n/){
|
316
|
0
|
|
|
|
|
|
print $zoutx "$zin1[$zinic]$zin2[$zlinhac]";
|
317
|
0
|
|
|
|
|
|
$zindex++;
|
318
|
|
|
|
|
|
|
}
|
319
|
0
|
|
|
|
|
|
$zlinhac++;
|
320
|
|
|
|
|
|
|
}
|
321
|
0
|
|
|
|
|
|
$zinic++;
|
322
|
|
|
|
|
|
|
}
|
323
|
|
|
|
|
|
|
};
|
324
|
0
|
|
|
|
|
|
$tokensgeral = $tokensgeral - $dif;
|
325
|
0
|
|
|
|
|
|
print "Neste corpus há ", $tokensgeral, " tokens!", "\n"; #exportar esta informação para o último registro
|
326
|
|
|
|
|
|
|
}
|
327
|
|
|
|
|
|
|
}
|
328
|
0
|
|
|
|
|
|
print "\n", "fim de programa";
|
329
|
|
|
|
|
|
|
}
|
330
|
|
|
|
|
|
|
=head1 AUTHOR
|
331
|
|
|
|
|
|
|
|
332
|
|
|
|
|
|
|
Rodrigo Panchiniak Fernandes, C<< >>
|
333
|
|
|
|
|
|
|
|
334
|
|
|
|
|
|
|
=head1 BUGS
|
335
|
|
|
|
|
|
|
|
336
|
|
|
|
|
|
|
Please report any bugs or feature requests to
|
337
|
|
|
|
|
|
|
C, or through the web interface at
|
338
|
|
|
|
|
|
|
L.
|
339
|
|
|
|
|
|
|
I will be notified, and then you'll automatically be notified of progress on
|
340
|
|
|
|
|
|
|
your bug as I make changes.
|
341
|
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
=head1 SUPPORT
|
343
|
|
|
|
|
|
|
|
344
|
|
|
|
|
|
|
You can find documentation for this module with the perldoc command.
|
345
|
|
|
|
|
|
|
|
346
|
|
|
|
|
|
|
perldoc Text::Statistics::Cyrillic
|
347
|
|
|
|
|
|
|
|
348
|
|
|
|
|
|
|
You can also look for information at:
|
349
|
|
|
|
|
|
|
|
350
|
|
|
|
|
|
|
=over 4
|
351
|
|
|
|
|
|
|
|
352
|
|
|
|
|
|
|
=item * AnnoCPAN: Annotated CPAN documentation
|
353
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
L
|
355
|
|
|
|
|
|
|
|
356
|
|
|
|
|
|
|
=item * CPAN Ratings
|
357
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
L
|
359
|
|
|
|
|
|
|
|
360
|
|
|
|
|
|
|
=item * RT: CPAN's request tracker
|
361
|
|
|
|
|
|
|
|
362
|
|
|
|
|
|
|
L
|
363
|
|
|
|
|
|
|
|
364
|
|
|
|
|
|
|
=item * Search CPAN
|
365
|
|
|
|
|
|
|
|
366
|
|
|
|
|
|
|
L
|
367
|
|
|
|
|
|
|
|
368
|
|
|
|
|
|
|
=back
|
369
|
|
|
|
|
|
|
|
370
|
|
|
|
|
|
|
=head1 ACKNOWLEDGEMENTS
|
371
|
|
|
|
|
|
|
|
372
|
|
|
|
|
|
|
Alberto Manuel Brandão Simões
|
373
|
|
|
|
|
|
|
|
374
|
|
|
|
|
|
|
=head1 COPYRIGHT & LICENSE
|
375
|
|
|
|
|
|
|
|
376
|
|
|
|
|
|
|
Copyright 2007 Rodrigo Panchiniak Fernandes, all rights reserved.
|
377
|
|
|
|
|
|
|
|
378
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it
|
379
|
|
|
|
|
|
|
under the same terms as Perl itself.
|
380
|
|
|
|
|
|
|
|
381
|
|
|
|
|
|
|
This code was written under CAPES BEX-09323-5
|
382
|
|
|
|
|
|
|
=cut
|
383
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
1; # End of Text::Statistics::Cyrillic
|
385
|
|
|
|
|
|
|
__END__
|