Corpus lingüísticos: proceso de elaboración e extracción automática de información María...

33
Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material informático (CD LIVE): Susana Sotelo Docío

Transcript of Corpus lingüísticos: proceso de elaboración e extracción automática de información María...

Page 1: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Corpus lingüísticos: proceso de elaboración e extracción automática

de información

María Paula Santalla del RíoPablo Gamallo Otero

Elaboración do material informático (CD LIVE):

Susana Sotelo Docío

Page 2: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Extracção automática de informação a partir de corpus

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

Page 3: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Bibliografia

Levi Lúcio, Vasco Amaral (2001), Programação em PERL, FCA-Editora de Informática. Hammond, Michael (2003), Programming for linguistics: Perl for language researchers,

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

TUTORIAIS ON LINE (em espanhol): http://glud.udistrital.edu.co/glud/manuales/Perl/http/evangelio_perl.html#quees http://www.geocities.com/SiliconValley/Station/8266/perl/index.html http://glud.udistrital.edu.co/glud/areas/doc/cursos/4_introduccion_perl/ http://kataix.umag.cl/~mmarin/topinf/perl.html http://www.cicei.com/gsi/tutorial_perl/indice.htm

Page 4: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

PLANO DO CURSO

Noções básicas corpus e extracção extracção de frequências de palavras (tokens e formas) lei de zipf concordâncias

Iniciação à programação em PERL ler o texto dum ficheiro processar o texto lido escrever os resultados do processamento

Page 5: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: corpus e extracção

Características dum corpus:

Deve estar formado por um conjunto de dados lingüísticos naturais (uso oral ou/e escrito).

O conteúdo do corpus deve ser cuidadosamente escolhido segundo certos critérios.

O corpus deve ser representativo duma língua ou variedade. O corpus dever ser vasto para ser representativo. O corpus deve ter como finalidade ser objecto de estudo linguístico.

Processos computacionais que se podem realizar num

corpus: Anotação morfológica, sintática e semântica. Extracção de informação

Page 6: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: corpus e extracção

Extracção de informação. Tipos de informação extraída:

Frequências de ocorrências de palavras, de tipos, de lemas, ... Modelos estatísticos de desambiguação (tagger): se uma palavra aparece no dicionário como NOUN e VERB e se encontra depois dum DET no corpus, então deve ser etiquetada como NOUN. Semelhança semântica entre palavras:se duas palavras aparecem no corpus nos mesmos contextos sintácticos, então devem ser sinómimos ou estar semanticamente relacionadas. Equivalentes de tradução Métodos de extracção: Métodos supervisados Métodos não supervisados

Page 7: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Extracção de frequências

Contagem de palavras, ocorrências ou itens (tokens): cada palavra conta como uma ocorrência, mesmo que seja repetida.

Contagem de palavras, formas ou tipos (types): conta-se o número de palavras diferentes.

Contagem de lemas, ou lexemas (lemmas): conta-se o número de temas diferentes (tema = palavra – morf. flexivos).

Contagem de Hapax Legomena: conta-se o número de palavras que ocorrem apenas uma vez (isto é frequência 1) no corpus.

Page 8: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Extracção de frequências

Quais são as palavras mais frequentes num corpus representativo dum domínio específico?

PALAVRA FREQUÊNCIA

the 3332and 2972a 1775to 1725of 1440was 1161it 1027in 906that 877Tom 679

Palavras mais frequêntes de“Tom Sawyer”

PALAVRA FREQUÊNCIA

la 1.204.397que 1.007.827en 753.944el 666.949y 648.594a 583.111los 523.877las 370.840del 324.619se 318.383Comisión 125.258

Palavras mais frequêntes deEuroparl (Parlamento Europeo)

Page 9: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Extracção de frequências

69970 the36410 of28852 and26149 to23326 a21341 in10594 that10102 is9815 was9542 he9488 for8760 it7290 with7251 as6997 his6742 on6376 be5377 at5306 by5178 i5146 this5131 had

4609 not4394 are4381 but4370 from4207 or3942 have3748 an3619 they3561 which3297 one3286 you3284 were3037 her3001 all2859 she2725 there2715 would2670 their2653 we2619 him2473 been2439 has

2331 when2252 who2244 will2216 more2202 no2199 if2096 out1985 so1961 said1908 what1895 up1858 its1815 about1791 into1790 than1789 them1772 can1747 only1702 other1635 new1617 some

1599 time1599 could1573 these1412 two1400 may1377 then1362 do1361 first1345 any1319 my1314 now1303 such1290 like1252 our1237 over1207 man

Palavras mais frequêntes do corpus Brown (não específico).

Page 10: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Extracção de frequências

Quantas ocorrências de palavras (tokens ou itens) tem um corpus?

”Tom Sowyer” tem 71.370 ocurrências de palavras. “El Quijote” tem 376.509. “Brown” tem 1 milhão. “EuroParl” tem 30 milhões 600 mil

Quantas palavras diferentes (tipos ou formas) tem um corpus? ”Tom Sowyer” tem 8.018 palavras diferentes (8,9 tokens por tipo). “El Quijote tem 38.552 (9.8 tokens por tipo).

(se consideramos os 71.000 primeiros tokens, extraem-se mais de 12.000 tipos) “Brown” tem 55.734 (17 tokens por tipo). “EuroParl” tem 159.211 (192 tokens por tipo).

Page 11: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Extracção de frequências

268,1100%125.927.624100%469.745TOTAL

2.223.37028,25%35.573.9220,00%161.000.000 en diante

238.94714,80%18.637.8820,02%78100.000 a 999.999

24.75626,01%32.753.0320,28%1.32310.000 a 99.999

2.93020,38%25.663.3211,83%8.5861.000 a 9.999

316,87,81%9.840.2386,61%31.065100 a 999

32,42,11%2.662.49517,49%82.17410 a 99

3,80,48%610.45934,11%160.2282 a 9

1,00,15%186.27539,65%186.2751

frequência média

%ocurrências

Ocurrências% formas

FormasBanda de ocurrências

Corpus Banco do Português:

Page 12: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Lei de Zipf

K = RxF

Existe uma relação constante, K, entre a frequência duma palavra, F, e a sua posição ou ranking, R.

Se uma palavra está no ranking R e tem frequência F, a palavra que se encontra no ranking 2R tende a ter uma frequência F/2

Hai poucas palavras mui frequêntes e muitas pouco frequêntes.

W F R FxRthe 3332 1 3332he 877 10 8770two 104 100 10400name 21 400 8400comes 16 500 8000

W F R FxRgroup 13 600 7800friends 10 800 8000family 8 1000 8000brushed 4 2000 8000Applausive 1 8000 8000

Page 13: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Concordâncias

A concordância é uma listagem das ocorrências duma forma específica, dispostas de tal modo que a palavra de busca (aquela que se quere investigar) aparece centralizada e acompanhada do seu contexto original, isto é, das palavras que ocorrem junto com ela no corpus.

13 | acordo em nada prejudica os direitos, no Reino da Dinamarca, dos nacionais dinamarqueses que res 14 | e algumas destas zonas na Bélgica, na Itália e no Reino Unido estão situadas em regiões que têm já 15 | e Tournai. Itália: província de Nápoles. Reino Unido: região de Strathclyde, counties de Clevela 16 | veis; Considerando que algumas destas zonas no Reino Unido estão situadas em regiões que têm já um elev 17 | específica diz respeito às seguintes zonas de Reino Unido: região de Strathclyde, condados de C 18 | grama especial», a apresentar à Comissão pelo Reino Unido. 2. O programa especial terá por fina 19 | izado a pedido dos governos da Irlanda e do Reino Unido, assim como da Comissão, recomendou que a r 20 | entre a Comunidade Económica Europeia e o Reino da Noruega na sequência da adesão da República Hel

Page 14: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Noções básicas: Concordâncias

Palavra de busca (search word) ou Nódulo: palavra (ou grupo de palavras) da qual o usuário tem interesse em obter uma concordância.

Palavras de contexto (context words): palavras que estão próximas do nódulo durante a busca (dentro da mesma janela). São opcionais, ou seja, é possível fazer uma concordância sem especificá-las.

Janela (Window): distância máxima entre o nódulo e a primeira palavra à esquerda (ou a ùltima à direita) dentro duma concordância.

Page 15: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Vamos programar um pouco

A linguagem PERL

PERL = Practical Extraction and Report Language.

Primeira versão em 1987, Larry Wall.

Page 16: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Objectivos

• ler o texto dum ficheiro (ou do terminal) linha a linha.

• processar o texto lido:

tokenizer (quebrar o texto em palavras).

contagem de frequências: ocurrências de palavras, de formas, de lemas, etc.

• escrever num ficheiro (ou no terminal) os resultados.

Page 17: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Estrutura do Programa “nome.perl”

• O script escreve no terminal: “Cómo te chamas?”

• O script lê o nome escrito pelo usuário

• O script escreve no terminal o nome que foi lido.

Page 18: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

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

chmod +x nome.perl

Atribuimos ao ficheiro “nome.perl” a propriedade: ser executável

Page 19: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Estrutura do Programa “nome.perl”

• print escreve texto (no terminal, num ficheiro...)

• <STDIN> lê um conjunto de caracteres introduzidos através do terminal (por exemplo, através do teclado).

• $x=<STDIN> lê um conjunto de caracteres introzidos através do teminal e os coloca na variável $x.

• chop $x corta o carácter de nova linha (\n) que se encontra no valor de $x.

Page 20: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Que é um programa (ou script)?

• Um programa é um conjunto de instruções (print, assignação, leitura, ...)

• As instruções simples sempre acabam com o símbolo ‘;’ (ponto e vírgula)

• Quando executamos o programa, as instruções são executadas sequencialmente.

Page 21: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Tipos de entidades dum programa

• escalares: números, cadeias de caracteres

• instruções: simples: print, =, chop...complexas: if, while...

• listas

• tabelas (hashes)

• Descritores Input/Output: STDIN, STDOUT, arquivos de entrada, arq. de saída...

Page 22: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Tipos de variáveis

• escalares: $var

• listas: @var

• tabelas: %var

Page 23: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Estrutura do tokenizer

• Lê linha a linha o texto de entrada.

• Escreve noutro ficheiro (ou no terminal) as palavras do texto de entrada.Cada palavra aparece numa linha.

Page 24: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Como executar o tokenizer?

cat arquivo_entrada.txt | ./tokenizer.perl

cat arquivo_entrada.txt | ./tokenizer.perl > arquivo_saída.txt

Page 25: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Instruções do tokenizer

while ($linha = <STDIN>) { instrução1; instrução2; ... }

Lê uma a uma as linhas do ficheiro, e cada linha é colocada na variável $linha. Após a leitura de uma linha, executa-se o bloco de instruções (entre chaves). Isto é repetido até chegar á última linha do ficheiro

Page 26: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Instruções do tokenizer

@pals = split (“ ”, $linha);Divide-se a cadeia $linha cada vez que aparece um espaço em branco. As sucessivas divisões são colocadas na lista @pals.

foreach $pal (@pals) { instrução1; instrução2... } Uma vez tomado um elemento da lista @pals e colocado na variável $pal, executam-se as instruções do bloco. Isto é repetido com todos os elementos da lista.

Page 27: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Instruções iterativas

foreach $var @lista { bloco } O bloco de instruções será executado um número de vezes correspondente ao número de elementos na lista, sendo que para cada iteração uma variável conterá o valor do elemento da lista.

while (expressão) { bloco } O bloco será executado até que a expressão se torne falsa:

while ($cont < 5) { print “$cont \n”; $cont++;}

Page 28: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

a instrução IF

if (expressão) { bloco do if }else { bloco do else }Se a expressão é verdade, executam-se as instruções contidas no bloco do if. Caso contrário, executa-se o bloco de instruções do else.

Expressões falsas:1 > 2 ; 0 ; “”, 1-1

Expressões verdadeiras:1 < 2 ; os números excepto o 0; as strings excepto “”

Page 29: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Pattern-Matching

if ($line =~ m/Maria/) { print $line;}Se a subcadeia “Maria” se encontra dentro da cadeia $line, então afichamos a cadeia $line.

$line =~ s/\,/ \,/;Se aparece o caracter “,” na cadeia $line, então substituimos esse caracter pelos dois caracteres “ ,” (i.e. introduzimos um espaço antes da vírgula).

Page 30: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Estrutura de “contagem.perl”

• Lê linha a linha o ficheiro tokenizado :

• Escreve num ficheiro (ou no terminal) os resultados das contagens.

• Realiza as contagens: - conta as ocurrências de cada token (palavras e marcas), - conta o número total de ocorrências de palavras,

- conta as ocurrências da cadeia “relac”,

- conta o número total de formas de palavras.

Page 31: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Instruções de contagem.perl

while ($token = <STDIN>) { $contar{$token}++;} Lê-se linha a linha o arquivo e construe-se uma tabela: %contar.

Cada elemento duma tabela é uma estrutura “chave -> valor”.

Cada chave da tabela é um token. O valor para cada chave é o número de vezes que o token é lido:

$contar{“livro”} = 2$contar{“Maria”} = 3$contar{“,”} = 8

Page 32: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Listas e Tabelas

@notas = (“pedro”, 5, “maria”, 8)

$notas[0] = “pedro”$notas[1] = 5$notas[2] = “maria” $notas[3] = 8

%notas = (“pedro” => 5, “maria” => 8)

$notas{“pedro”} = 5$notas{“maria”} = 8

Page 33: Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.

Instruções de contagem.perl

foreach $tokenDiff (keys %contar) { $contarTokensDiff++; print "$tokenDiff\t$contar{$tokenDiff}\n" } Iteração: Percorremos a lista de chaves (keys) do hash %contar. Cada elemento é colocado na variável $tokenDiff.

Bloco de Instrucções:- contamos os tokens diferentes (formas de palavras)

- escrevemos o token (chave de %contar) e a frequência do token (valor de %contar)