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 16:22] – ambs | spln2016:diario2 [2016/02/24 16: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 16:22 by ambs