spln2016:diario2
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
spln2016:diario2 [2016/02/24 17:22] – ambs | spln2016:diario2 [2016/02/24 17:25] (current) – ambs | ||
---|---|---|---|
Line 7: | Line 7: | ||
* Revisões da aula anterior; | * Revisões da aula anterior; | ||
* Estruturas de dados em Perl: arrays, arrays associativos (hashes); | * Estruturas de dados em Perl: arrays, arrays associativos (hashes); | ||
- | * Elemento de matching no perl (`$1`..., `$&`); | + | * Elemento de matching no perl ('' |
* Lei de Zipf; | * Lei de Zipf; | ||
* Scripts para análise do ficheiro cetemGordo.txt: | * Scripts para análise do ficheiro cetemGordo.txt: | ||
Line 25: | Line 25: | ||
=== Estruturas de dados em Perl === | === Estruturas de dados em Perl === | ||
- | Declaração de lista (referência global à lista): | + | Declaração de lista (referência global à lista): |
- | Aceder ao elemento na posição i da lista a: `$a[$i]` | + | Aceder ao elemento na posição i da lista a: '' |
- | Declaração de array associativo (hash): | + | Declaração de array associativo (hash): |
- | Aceder ao valor da chave k da lista a: `$a{$k}` | + | Aceder ao valor da chave k da lista a: '' |
- | Acesso ao conteúdo da posição dada pelas chaves k1 e k2 de um array associativo (hash) bidimensional: | + | Acesso ao conteúdo da posição dada pelas chaves k1 e k2 de um array associativo (hash) bidimensional: |
- | === `$&` carácter especial de matching no Perl === | + | === '' |
Na aula exploramos as funcionalidades da variável `$&` como acesso aos tokens que compõem uma dada linha que queremos tratar. | Na aula exploramos as funcionalidades da variável `$&` como acesso aos tokens que compõem uma dada linha que queremos tratar. | ||
# | # | ||
+ | | ||
while(/ | while(/ | ||
print "$1 $2\n"; | print "$1 $2\n"; | ||
Line 46: | Line 46: | ||
=== Lei de Zipf === | === Lei de Zipf === | ||
+ | |||
É uma lei empírica que rege à dimensão, importância ou frequência dos elementos de uma lista ordenada. | É uma lei empírica que rege à dimensão, importância ou frequência dos elementos de uma lista ordenada. | ||
Conclusões que retiramos na aula foram que existe uma relação entre o aumento de palavras comuns que surgem num determinado texto com a dimensão do mesmo. | Conclusões que retiramos na aula foram que existe uma relação entre o aumento de palavras comuns que surgem num determinado texto com a dimensão do mesmo. | ||
Line 54: | Line 55: | ||
# | # | ||
+ | | ||
use warnings; | use warnings; | ||
use strict; | use strict; | ||
use utf8::all; | use utf8::all; | ||
+ | | ||
my (%oco); | my (%oco); | ||
my ($c); | my ($c); | ||
+ | | ||
while (<>) { | while (<>) { | ||
next if /</; #salta linhas com "<" | next if /</; #salta linhas com "<" | ||
Line 75: | Line 76: | ||
# | # | ||
+ | | ||
use warnings; | use warnings; | ||
use strict; | use strict; | ||
use utf8::all; | use utf8::all; | ||
+ | | ||
my (%oco); | my (%oco); | ||
my ($c); | my ($c); | ||
+ | | ||
while (<>) { | while (<>) { | ||
next if /</; #salta linhas com "<" | next if /</; #salta linhas com "<" | ||
Line 97: | Line 98: | ||
# | # | ||
+ | | ||
use warnings; | use warnings; | ||
use strict; | use strict; | ||
use utf8::all; | use utf8::all; | ||
+ | | ||
my (%oco); | my (%oco); | ||
my ($c); | my ($c); | ||
+ | | ||
while (<>) { | while (<>) { | ||
next if /</; # salta linhas começadas por "<", | next if /</; # salta linhas começadas por "<", | ||
Line 114: | Line 115: | ||
# $a e $b são definidos internamente pelo Perl quando definimos critérios de comparação, | # $a e $b são definidos internamente pelo Perl quando definimos critérios de comparação, | ||
# pelo que se deve evitar declarar variáveis com esses nomes | # pelo que se deve evitar declarar variáveis com esses nomes | ||
+ | | ||
foreach my $p (sort{$oco{$a} <=> $oco{$b}} keys %oco){ | foreach my $p (sort{$oco{$a} <=> $oco{$b}} keys %oco){ | ||
print "$p: $oco{$p}\n"; | print "$p: $oco{$p}\n"; | ||
Line 124: | Line 125: | ||
use strict; | use strict; | ||
use utf8::all; | use utf8::all; | ||
+ | | ||
my (%oco); | my (%oco); | ||
+ | | ||
while (<>) { | while (<>) { | ||
next if /^</; # ou if (/^</) {next;} | next if /^</; # ou if (/^</) {next;} | ||
+ | | ||
while( /\w+/g ) { | while( /\w+/g ) { | ||
$oco{$& | $oco{$& | ||
} | } | ||
} | } | ||
+ | | ||
foreach my $p (sort{ mycompare($a, | foreach my $p (sort{ mycompare($a, | ||
print "$p: $oco{$p}\n"; | print "$p: $oco{$p}\n"; | ||
} | } | ||
+ | | ||
# Criação de uma função | # Criação de uma função | ||
# Esta função é usada como critério de comparação no sort | # Esta função é usada como critério de comparação no sort | ||
Line 157: | Line 158: | ||
# | # | ||
+ | | ||
use warnings; | use warnings; | ||
use strict; | use strict; | ||
use utf8::all; | use utf8::all; | ||
use Data:: | use Data:: | ||
+ | | ||
my (%oco); | my (%oco); | ||
my ($c); | my ($c); | ||
my $pm = qr{[[: | my $pm = qr{[[: | ||
+ | | ||
my $prep = qr{d[eoa]s? | my $prep = qr{d[eoa]s? | ||
my $np = qr{$pm( ($prep )?$pm)*}; | my $np = qr{$pm( ($prep )?$pm)*}; | ||
+ | | ||
while (<>) { | while (<>) { | ||
next if /^</; | next if /^</; | ||
Line 177: | Line 178: | ||
} | } | ||
} | } | ||
+ | | ||
print Dumper(\%oco); | print Dumper(\%oco); | ||
+ | | ||
# Quando em Perl queremos que o texto não seja processado podemos usar a marca __END__ | # Quando em Perl queremos que o texto não seja processado podemos usar a marca __END__ | ||
__END__ | __END__ | ||
Line 188: | Line 189: | ||
Neste script estuda-se para uma dada palavra o número de ocorrências dessa mesma palavra com capitalizações diferentes. Correndo o comando 'perl ctcp.pl cetemGordo.txt > out.txt' | Neste script estuda-se para uma dada palavra o número de ocorrências dessa mesma palavra com capitalizações diferentes. Correndo o comando 'perl ctcp.pl cetemGordo.txt > out.txt' | ||
- | ' | + | |
' | ' | ||
' | ' | ||
- | ' | + | |
' | ' | ||
- | ' | + | |
(...) | (...) | ||
- | ' | + | |
' | ' | ||
- | ' | + | |
' | ' | ||
- | ' | + | |
' | ' | ||
' | ' | ||
- | ' | + | |
' | ' | ||
' | ' | ||
spln2016/diario2.1456330969.txt.gz · Last modified: 2016/02/24 17:22 by ambs