Temas 3, 4 e 5 Pablo Gamallo Otero gamallo

Preview:

Citation preview

Temas 3, 4 e 5

Pablo Gamallo Oterohttp://gramatica.usc.es/~gamallo/

PLANO

1. Noções básicas

2. Introdução a Linux

3.Tokenizadores e concordâncias3.1. contar tokens e formas, ordenar, comparar textos, ...3.2. riqueza lexical dos textos3.3. Key Word In Context (kwic.perl)

4.Etiquetadores (PoS tagging)4.1. Tree-Tagger4.2. FreeLing

5.Analisadores (parsing)5.1. DepPattern

Bibliografia

Tony Berber Sardinha (2004), Lingüística de Corpus, Editora Manole, Brasil.

Marco Baroni (2009), “Distributions in text”. In Anke Lüdeling and Merja Kytö (eds.), Corpus linguistics: An international handbook, Berlin: Mouton de Gruyter. http://gramatica.usc.es/~gamallo/aulas/lingcomputacional/biblio/Baroni_distributions.pdf

Pablo Gamallo & Isaac González (2009) "Una gramática de dependencias basada en patrones de etiquetas", Procesamiento del Lenguaje Natural, 43, pp. 315-324.http://www.sepln.org/revistaSEPLN/revista/43/articulos/art34.pdf

3. Tokenizadores e concordâncias

Scripts utilizados:

tokenizer.perl compara.perl riqueza.perl kwic.perl

Objectivos

Extrair tokens a partir de texto tokenizado para:

- contar frequência de formas- ordenar formas- comparar textos- ...

Que fai o tokenizador?

• Lê linha a linha o texto de entrada.

• Escreve noutro ficheiro (ou na consola) as palavras do texto de entrada.

• Cada palavra aparece numa linha.

Resultado do tokenizador

“ A nena tem uma chupeta azul.”

Anenatemumachupetaazul.

Como tornar executável o script “tokenizer.perl” ?

chmod +x tokenizer.perl

Atribuimos ao ficheiro “tokenizer.perl” a propriedade:

ser executável

Como executar o tokenizador?

cat ../corpus/arquivo_entrada.txt | ./tokenizer.perl

cat ../corpus/arquivo_entrada.txt | ./tokenizer.perl > arquivo_saida.txt

Contar formas com o tokenizador

Conta o número de ocorrências das expressões:“Quijote”, “Sancho”, “Dulcinea”, “dijeron”, ...

Comando “grep”: selecciona as linhas do texto que contenham uma sequência de caracteres (ou string) específica

cat ../corpus/ElQuijote.txt | ./tokenizer.perl | grep “Quijote” | wc

Contar multi-palavras

Para contar multi-palavras:“Quijote de la Mancha”, “Sancho Panza”, “Dulcinea del Toboso”, ...

é preciso um reconhecedor de entidades:• NomesProprios.perl• NER do FreeLing

Ordena formas por frequência

echo “sort | uniq -c | sort -nr” > ordenar.sh

chmod +x ordenar.sh

cat ElQuijote.txt | ./tokenizer.perl | ./ordenar.sh > quijote_ord.txt

Compara similitude de textos

cat ElQuijote.txt | ./tokenizer.perl | ./ordenar.sh > quijote_ord.txt

cat LaRegenta.txt | ./tokenizer.perl | ./ordenar.sh > regenta_ord.txt

cat quijote_ord.txt | ./compara.perl regenta_ord.txt 1000

Riqueza lexical de textos

A riqueza ou pobreza lexical dum texto pode quantificar-se calculando a frequência média das formas:

Riqueza lexical = número de tokens / número de formas

Calcula riqueza lexical de textos

cat ElQuijote.txt | ./tokenizer.perl |head -100000 | ./riqueza.perl

cat LaRegenta.txt | ./tokenizer.perl | head -100000 | ./riqueza.perl

(para comparar dous textos, convém utilizar a mesma quantidade de palavras, por exemplo 100.000)

Concordâncias

./kwic.perl "Quijote" DonQuijote.txt

./kwic.perl "Quijote" DonQuijote.txt |grep "don\s*Quijote"

./kwic.perl "Dulcinea" DonQuijote.txt |grep "Dulcinea\s*del Toboso"

4. Etiquetadores

Tree-Tagger FreeLing

Objectivos

Extrair lemas e etiquetas a partir de texto lematizado e etiquetado para:

- contar frequência de lemas e/ou etiquetas- ordenar por lemas ou etiquetas

Uso do etiquetador Tree-Tagger

cat ElQuijote.txt | tree-tagger-spanish(o ficheiro de entrada tem que estar em Latin ISO)

cat ElQuijote.txt | tree-tagger-spanish > quijote.tree

Uso do etiquetador FreeLing

cat ElQuijote.txt | freeling-es(o ficheiro de entrada tem que estar em Latin)

cat ElQuijote.txt | freeling-es > quijote.free

Saída do etiquetador Freeling

“La niña bonita tiene un chupete azul.”

la el DA0FS0niña niña NCFS000bonita bonito AQ0FS0tiene tener VMIP3S0un uno DI0MS0chupete chupete NCMS000azul azul AQ0CS0

Contar lemas com FreeLing

Conta o número de ocorrências das expressões:“comer”, “castellano” (adjectivo), “castellano” (nome) ...

cat quijote.free | grep “comer” | wc

cat quijote.free | grep “castellano” | grep “NC” | wc

Contar multi-palavras com FreeLing

Conta o número de ocorrências de:“Quijote de la Mancha”, “Sancho Panza” ...

cat quijote.free | grep “Quijote_de_la_Mancha” | wc -l

cat quijote.free | grep “Sancho_Panza” | wc -l

Ordenar por etiquetas ou lemas

cat quijote.free | gawk '{print $3}' | ordenar.sh

cat quijote.free | gawk '{print $2}' | ordenar.sh

5. Analisadores robustos

DepPattern (analisador de dependências e formalismo gramatical)

Objectivos

Identificar lemas etiquetados a partir de texto analisado em dependências para:

- contar frequência de lemas em contextos sintácticos

Uso do analisador DepPattern

./dp -a freeling es DonQuijote.txt parsers/parserDefault-es.perl > quijote.parsed

Saída de DepPattern

“La niña morena come pescado.”

(SpecL;niña_NOUN_1;el_DT_0)

(AdjnR;niña_NOUN_1;morena_ADJ_2)

(SubjL;comer_VERB_3;niña_NOUN_1)

(SubjL;comer_VERB_3;pescado_NOUN_4)

Notação das dependências

(dependência;núcleo;modificador)

Escreve uma gramática com DepPattern

##Minha_Gramatica

SpecL: DT NOUN%

AdjnR: NOUN ADJ%

DobjR: VERB [ADV]* NOUN%

SubjL: NOUN [ADV]* VERB%

Compilar e usar a gramática

./dp -a freeling es DonQuijote.txt analisador.perl MinhaGramatica.dp > quijote.parsed

Contar dependências com DepPattern

cat quijote.parsed | ./HeadOf.perl “poema” “Dobj”

cat quijote.parsed | ./DepOf.perl “poema” “Adjn”

Recommended