spln2016:diario5
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| spln2016:diario5 [2016/03/19 14:23] – ambs | spln2016:diario5 [2016/03/19 14:30] (current) – ambs | ||
|---|---|---|---|
| Line 22: | Line 22: | ||
| === Exercício: nlgrep === | === Exercício: nlgrep === | ||
| - | exercício: | + | Permitir usar expressões com informação morfológica: |
| - | nlgrep | + | |
| - | | + | nlgrep |
| + | |||
| + | |||
| + | Implementação | ||
| # | # | ||
| Line 34: | Line 37: | ||
| use Memoize; | use Memoize; | ||
| use Data:: | use Data:: | ||
| + | | ||
| #cada padrão será um par chave:valor | #cada padrão será um par chave:valor | ||
| my (@patterns); | my (@patterns); | ||
| my $dic = Lingua:: | my $dic = Lingua:: | ||
| - | + | | |
| + | |||
| if(!@ARGV){ | if(!@ARGV){ | ||
| die "No arguments provided\n"; | die "No arguments provided\n"; | ||
| } | } | ||
| + | | ||
| @patterns = map{argparse($_)} @ARGV; | @patterns = map{argparse($_)} @ARGV; | ||
| + | | ||
| print Dumper(\@patterns); | print Dumper(\@patterns); | ||
| + | | ||
| @ARGV = (); | @ARGV = (); | ||
| + | | ||
| while (<>) { | while (<>) { | ||
| # @l = $dic-> | # @l = $dic-> | ||
| + | | ||
| while (/ | while (/ | ||
| my $w = $&; | my $w = $&; | ||
| Line 61: | Line 64: | ||
| } | } | ||
| } | } | ||
| + | | ||
| sub argparse { | sub argparse { | ||
| my ($a) = @_; | my ($a) = @_; | ||
| Line 68: | Line 71: | ||
| } | } | ||
| - | ............. | + | Exemplo: |
| perl ex1.pl rad:ter cat:v,t:pp | perl ex1.pl rad:ter cat:v,t:pp | ||
| + | |||
| + | Resultado | ||
| + | |||
| $VAR1 = [ | $VAR1 = [ | ||
| { | { | ||
| Line 80: | Line 87: | ||
| ]; | ]; | ||
| - | -------------------------------------------------------------------------------- | ||
| - | ujspell -J | + | === Implementação Completa (nlgrep) === |
| - | International Jspell Version 1.90 | ||
| - | tempo | ||
| - | * tempo 0 : | ||
| - | |||
| - | categoria | ||
| - | * categoria 0 : | ||
| - | |||
| - | -------------------------------------------------------------------------------- | ||
| # | # | ||
| + | | ||
| use warnings; | use warnings; | ||
| use strict; | use strict; | ||
| Line 101: | Line 99: | ||
| use Memoize; | use Memoize; | ||
| use Data:: | use Data:: | ||
| + | | ||
| #cada padrão será um par chave:valor | #cada padrão será um par chave:valor | ||
| my (@patterns); | my (@patterns); | ||
| my $dic = Lingua:: | my $dic = Lingua:: | ||
| - | + | | |
| + | |||
| if(!@ARGV){ | if(!@ARGV){ | ||
| die "No arguments provided\n"; | die "No arguments provided\n"; | ||
| } | } | ||
| + | | ||
| @patterns = map{argparse($_)} @ARGV; | @patterns = map{argparse($_)} @ARGV; | ||
| my $len = @patterns; # | my $len = @patterns; # | ||
| + | | ||
| print Dumper(\@patterns); | print Dumper(\@patterns); | ||
| + | | ||
| @ARGV = (); | @ARGV = (); | ||
| + | | ||
| while (<>) { | while (<>) { | ||
| my @window = map{"" | my @window = map{"" | ||
| # my @window = ("" | # my @window = ("" | ||
| + | | ||
| while (/ | while (/ | ||
| my $w = $&; | my $w = $&; | ||
| Line 133: | Line 131: | ||
| } | } | ||
| } | } | ||
| - | + | | |
| + | |||
| sub argparse { | sub argparse { | ||
| my ($a) = @_; | my ($a) = @_; | ||
| Line 140: | Line 138: | ||
| return \%f; #retorna um apontador para %f | return \%f; #retorna um apontador para %f | ||
| } | } | ||
| + | | ||
| sub multi_word_match { | sub multi_word_match { | ||
| my ($window) = @_; | my ($window) = @_; | ||
| Line 150: | Line 148: | ||
| return 1; | return 1; | ||
| } | } | ||
| - | + | | |
| - | + | ||
| - | + | Com o input | |
| - | | + | |
| - | + | ||
| - | for my $elem(@ARGV){ | + | |
| - | #calcular argumentos mais elaborados. para cada argumento transformá-lo já em algo processado | + | |
| - | # | + | |
| - | #fazer parsing a cada argumento | + | |
| - | + | ||
| - | push(@patterns, | + | |
| - | | + | |
| - | + | ||
| - | ............. | + | |
| - | perl ex1.pl rad:ter cat: | + | |
| - | $VAR1 = [ | + | |
| - | { | + | |
| - | ' | + | |
| - | }, | + | |
| - | { | + | |
| - | ' | + | |
| - | ' | + | |
| - | } | + | |
| - | ]; | + | |
| eu tenho fome | eu tenho fome | ||
| 5 eu tenho fome | 5 eu tenho fome | ||
| eu tinha um gato | eu tinha um gato | ||
| 11 eu tinha um gato | 11 eu tinha um gato | ||
| - | -------------------------------------------------------------------------------- | + | eu tenho passado bem |
| - | perl ex1.pl rad:ter CAT:v,T:ppa < file.txt | + | e executando |
| - | $VAR1 = [ | + | |
| + | | ||
| + | |||
| + | obtem-se | ||
| + | |||
| + | $VAR1 = [ | ||
| { | { | ||
| ' | ' | ||
| Line 191: | Line 173: | ||
| } | } | ||
| ]; | ]; | ||
| - | (24 tenho passado) Eu tenho passado bem. | ||
| - | |||
| - | (3 tenho passado) Eu tenho passado bem. | ||
| - | |||
| - | -------------------------------------------------------------------------------- | ||
| - | |||
| - | TPC Páscoa: | ||
| - | - instalar freeling 3.1 | ||
| - | (mac: brew install freeling) | ||
| - | - instalar Lingua:: | ||
| - | - instalar VISL.CG3/ | ||
| - | (mac: brew vislcg3) | ||
| - | |||
| - | - o que poderiamos fazer de util com coisas deste género | ||
| - | |||
| - | mac: homebrew | + | |
| - | ubuntu: deb (&pray) | + | |
| - | linux: configure & make & make install | + | |
| - | windows: ?? | + | |
| - | -------------------------------------------------------------------------------- | + | === TPC Páscoa === |
| + | * Instalar freeling 3.1 | ||
| + | * Mac: brew install freeling | ||
| + | * Linux: ver pacotes em http:// | ||
| + | * Windows: ver pacotes em http:// | ||
| + | * Instalar Lingua:: | ||
| + | * Com cpan | ||
| + | * instalar VISL.CG3/ | ||
| + | * mac: brew vislcg3 | ||
| + | * Linux: procurar pacotes | ||
| + | * Windows: http:// | ||
spln2016/diario5.1458397426.txt.gz · Last modified: 2016/03/19 14:23 by ambs