1 / 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. Corpus lingüísticos: proceso de elaboración e extracción automática de información. Pablo Gamallo Otero http://gramatica.usc.es/~gamallo/.

guang
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Pablo Gamallo Otero http://gramatica.usc.es/~gamallo/ Extracção automática de informação a partir de corpus

  3. 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

  4. 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

  5. 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 Noções básicas: corpus e extracção • Características dum corpus:

  6. 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

  7. 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.

  8. 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 3332 and 2972 a 1775 to 1725 of 1440 was 1161 it 1027 in 906 that 877 Tom 679 PALAVRA FREQUÊNCIA la 1.204.397 que 1.007.827 en 753.944 el 666.949 y 648.594 a 583.111 los 523.877 las 370.840 del 324.619 se 318.383 Comisión 125.258 Palavras mais frequêntes de “Tom Sawyer” Palavras mais frequêntes de Europarl (Parlamento Europeo)

  9. Noções básicas: Extracção de frequências 4609 not 4394 are 4381 but 4370 from 4207 or 3942 have 3748 an 3619 they 3561 which 3297 one 3286 you 3284 were 3037 her 3001 all 2859 she 2725 there 2715 would 2670 their 2653 we 2619 him 2473 been 2439 has 2331 when 2252 who 2244 will 2216 more 2202 no 2199 if 2096 out 1985 so 1961 said 1908 what 1895 up 1858 its 1815 about 1791 into 1790 than 1789 them 1772 can 1747 only 1702 other 1635 new 1617 some 1599 time 1599 could 1573 these 1412 two 1400 may 1377 then 1362 do 1361 first 1345 any 1319 my 1314 now 1303 such 1290 like 1252 our 1237 over 1207 man 69970 the 36410 of 28852 and 26149 to 23326 a 21341 in 10594 that 10102 is 9815 was 9542 he 9488 for 8760 it 7290 with 7251 as 6997 his 6742 on 6376 be 5377 at 5306 by 5178 i 5146 this 5131 had Palavras mais frequêntes do corpus Brown (não específico).

  10. 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).

  11. Noções básicas: Extracção de frequências Corpus Banco do Português: Banda de ocurrências Formas % formas Ocurrências %ocurrências frequência média 1 186.275 39,65% 186.275 0,15% 1,0 2 a 9 160.228 34,11% 610.459 0,48% 3,8 10 a 99 82.174 17,49% 2.662.495 2,11% 32,4 100 a 999 31.065 6,61% 9.840.238 7,81% 316,8 1.000 a 9.999 8.586 1,83% 25.663.321 20,38% 2.930 10.000 a 99.999 1.323 0,28% 32.753.032 26,01% 24.756 100.000 a 999.999 78 0,02% 18.637.882 14,80% 238.947 1.000.000 en diante 16 0,00% 35.573.922 28,25% 2.223.370 TOTAL 469.745 100% 125.927.624 100% 268,1

  12. 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 FxR group 13 600 7800 friends 10 800 8000 family 8 1000 8000 brushed 4 2000 8000 Applausive 1 8000 8000 W F R FxR the 3332 1 3332 he 877 10 8770 two 104 100 10400 name 21 400 8400 comes 16 500 8000

  13. 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

  14. 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. • Janela (Window): distância máxima entre o nódulo e a primeira palavra à esquerda (ou a ùltima à direita) dentro duma 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.

  15. Vamos programar um pouco A linguagem PERL PERL = Practical Extraction and Report Language. Primeira versão em 1987, Larry Wall.

  16. 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.

  17. 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.

  18. Como tornar executável o script “nome.perl” ? chmod +x nome.perl Atribuimos ao ficheiro “nome.perl” a propriedade: ser executável

  19. 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 $xcorta o carácter de nova linha (\n) que se encontra no valor de $x.

  20. 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.

  21. Tipos de entidades dum programa • escalares: números, cadeias de caracteres • instruções: simples: print, =, chop...complexas: if, while... • Descritores Input/Output: STDIN, STDOUT, arquivos de entrada, arq. de saída... • listas • tabelas (hashes)

  22. Tipos de variáveis • escalares: $var • listas: @var • tabelas: %var

  23. 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.

  24. Como executar o tokenizer? cat arquivo_entrada.txt | ./tokenizer.perl cat arquivo_entrada.txt | ./tokenizer.perl > arquivo_saída.txt

  25. 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

  26. 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.

  27. 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++;}

  28. 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 “”

  29. 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).

  30. Estrutura de “contagem.perl” • Lê linha a linha o ficheiro tokenizado : • 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. • Escreve num ficheiro (ou no terminal) os resultados das contagens.

  31. 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

  32. 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

  33. 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)

More Related