Post on 22-Apr-2015
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”