Comparação dos algoritmos sequencial e paralelo para contagem de palavras e contexto

Documentos relacionados
Verificação automática de substantivos compostos através de reconhecimento de padrões sintáticos

Sobre a execução de workflows científicos sobre diferentes estrategias de dados de entrada - Uma Avaliação Experimental

Sumário. Referências utilizadas. Introdução. MAFIA: Merging of Adaptive Finite Intervals. Introdução Visão Geral e Objetivos do MAFIA

Avaliação de desempenho e dependabilidade de processamento de dados em larga escala com Hadoop

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

Universidade Estadual de Maringá/Departamento de Informática Maringá, PR. Ciências Exatas e da Terra / Metodologia e Técnicas da Computação.

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Um Calculador de Capacidade de Computação para Nós de Máquinas Virtuais LAM/MPI

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

Análise empírica de algoritmos de ordenação

Introdução Ferramentas Unix MapReduce Outras Ferramentas. Batch Processing. Fabiola Santore. Universidade Federal do Paraná

MCZA Processamento de Linguagem Natural Semântica e similaridade de palavras: Parte III

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1

AVALIAÇÃO DE DESEMPENHO DE PROCESSAMENTO DISTRIBUÍDO EM LARGA ESCALA COM HADOOP

Lista de Exercícios sobre Conceitos de Informática. Exercício 1: Correspondência

Grupo de Processamento de Linguagem Natural do Instituto de Informática (PLN-II)

O Gênero influi no Tempo de Reação em Busca Visual?

Monografia de Conclusão do Curso de Graduação em Ciência da Computação. 2

AULA 2. Prof.: Jadiel Mestre. Introdução à Informática. Introdução à Informática Componentes de um Sistema de Informação

Introdução à Programação uma Abordagem Funcional

BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

ARQUITETURA DE COMPUTADORES

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Ruby e JRuby em... Paralelos e Distribuídos. Felipe Barden Lucas Fialho Zawacki

Framework para Deduplicação de Dados com Apache Spark

Os efeitos do paralelismo e relações de thesaurus em uma ferramenta de busca em bases textuais

Algoritmos e Estruturas de Dados II. Trabalho Prático 4

NOÇÕES DE INFORMÁTICA

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante

Deep Learning for Chinese Word Segmentation and POS Tagging

Introdução à Informática Engenharia Agrícola

Informática Parte 10 Prof. Márcio Hunecke

Índice. Classificação de textos para o ensino de português como segunda língua. Índice. technology from seed

Paralelização do Método de Jacobi em Memória Compartilhada 1

5 Simulações e Resultados

USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS

Paralelização Eficiente para o Algoritmo Binário de Exponenciação Modular

UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO

DGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014

Lista de Exercícios sobre Conceitos de Informática. Exercício 1: Correspondência

Predição de Utilização de Recursos Computacionais Usando Séries Temporais

1.1 o que é um algoritmo... 6

Introdução aos Sistemas Operacionais. Ricardo Ramos de Oliveira

Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Intensivos em Dados

Uso de Paralelismo de Dados em Algoritmos de Processamento de Imagens Utilizando Haskell

Este tutorial apresenta uma análise para uso adequado e otimizado de seus parâmetros nos processos de ETL, e sua aplicação em situações distintas.

CP Introdução à Informática Prof. Msc. Carlos de Salles

3 Similaridade e tamanho da seqüência de consulta no BLAST

Mineração de Textos na Web

Tesauros Distribucionais para o Português: avaliação de metodologias

Treinamento em Activiti Workflow e BPM Open Source

BOINC + R: Executando rotinas de

INTRODUÇÃO. Introdução a Informática. Vinícius Pádua

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

COMPARAÇÃO DO TEMPO DE EXECUÇÃO DE ALGORITMOS MAXMIN EM DIFERENTES PROCESSSADORES

ESTRUTURA DE DADOS I AULA I

O ENSINO DOS NOVOS CONTEÚDOS DE INFORMÁTICA E COMPUTAÇÃO NAS ENGENHARIAS

The future is parallel but it may not be easy

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

Clusterização K-Means Paralelo Aplicado na Classificação de Alvos em Imagens de Alta Resolução

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES SISTEMAS DE COMPUTAÇÃO. Cristina Boeres

CEFET/RJ Centro Federal de Educação Tecnológica Celso Suckow da Fonseca 2. LNCC Laboratório Nacional de Computação Científica 3

Aluno do Curso de Ciência da Computação UNIJUÍ, 3

ALINHAMENTO MANUAL DE TEXTOS E SUMÁRIOS EM UM CORPUS JORNALÍSTICO MULTIDOCUMENTO

Implementação de um escalonador de processos em GPU

CURSO TÉCNICO PROFISSIONALIZANTE Disciplina: Informática Básica (Hardware)

Análise de Desempenho de Aplicações Paralelas do Padrão Pipeline em Processadores com Múltiplos Núcleos

Análise Sintática de Frases utilizando Gramáticas Livres de Contexto Probabilísticas

Classificação Externa: Intercalação de Partições Classificadas

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

Um estudo sobre consumo energético na indexação de conteúdo visual com síntese em alto nível usando hardware reconfigurável

IMPLEMENTAÇÃO E AVALIAÇÃO DE UM MODELO DE MERCADO IMPERFEITO EM COMPUTAÇÃO PARALELA

INPE Outubro, Fabiana. S. Santana, César Bravo, Antonio. M. Saraiva Projeto:

Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile?

Algoritmos e Programação

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Instalação e Manutenção de Computadores Sandra Silva

5.1. Fluxo para geração do Roadmap

Chaves. Acesso a Registros. Chaves Primária e Secundária. Chaves Primária e Secundária

Avaliação de atividades de programação submetidas em MOOC com emprego de técnicas de visualização

PROPOSTA DE UMA ESTRATÉGIA DE PROGRAMAÇÃO EXPLÍCITA COM ANOTAÇÃO EM CÓDIGO EM BUSCA DE EFICIÊNCIA ENERGÉTICA 1

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INFORMÁTICA Ano Lectivo 2017/2018

Aluno do curso de Ciência da Computação da Unijuí e Bolsista PIBIC/UNIJUÍ, 3. Professor Orientador do Departamento de Ciências Exatas e Engenharias 4

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina

Arquiteturas Paralelas

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Uma ferramenta para anotação de relações semânticas entre termos

SISTEMA DE CONVERSÃO DE DADOS DE SIMULAÇÃO HIDRODINÂMICA DO SISBAHIA PARA O GNOME

Como os Processadores Funcionam

Algoritmos e Programação

Ficha de trabalho Nº 1 Utilizar adequadamente o computador e/ou dispositivos similares que processem dados.

INTERPOLAÇÃO LINEAR E BILINEAR: APLICAÇÃO EM TRANSFORMAÇÕES GEOMÉTRICAS DE IMAGEM INTRODUÇÃO

Desenvolvimento de Ferramentas no igeom: Utilizando a Geometria Dinâmica no Ensino

Algoritmos de Junção Estrela em MapReduce

ANÁLISE DE DESEMPENHO DA APLICAÇÃO DE BALANCEAMENTO DE CARGA EM BENCHMARK SINTÉTICOS 1. Bruna Schneider Padilha 2, Edson Luiz Padoin 3.

Arquivos invertidos 39

Transcrição:

Comparação dos algoritmos sequencial e paralelo para contagem de palavras e contexto Eduardo Delazeri Ferreira, Francieli Zanon Boito, Aline Villavicencio 1. Introdução 1 Instituto de Informática - Universidade Federal do Rio Grande do Sul Porto Alegre, Brasil -{edferreira, fzboito, avillavicencio}@inf.ufrgs.br A criação de tesauros distribucionais [Lin 1998, Baroni and Lenci 2010] é de fundamental importância para uma série de aplicações de Processamento de Linguagem Natural (PLN). No entanto, existe uma grande dificuldade na obtenção desses tesauros: para que o tesauro tenha uma boa qualidade, é necessário um volume muito grande de dados, resultando em uma grande demora para que esses dados sejam processados. Assim, este trabalho propõe uma paralelização desse processamento. A paralelização tem como objetivo apenas a redução do tempo de execução, devendo produzir o mesmo resultado obtido pelo processamento sequencial. Este artigo faz uma comparação entre a versão paralela e sequencial da parte de contagem de palavras e contextos na criação de tesauros distribucionais. A comparação foi feita com base nos tempos de duas implementações: uma sequencial, do pacote de construção de tesauros distribucionais Minimantics [Padró et al. 2014] 1, e outra paralela, desenvolvida para este trabalho com Spark 2, que realiza operações em paralelo utilizando um cluster de computadores. O restante deste artigo está organizado da seguinte forma: a próxima Seção apresenta trabalhos relacionados, a Seção 3 apresenta a abordagem que foi utilizada na paralelização do algoritmo, a Seção 4 apresenta os resultados obtidos, e a Seção 5 apresenta as conclusões e os trabalhos futuros. 2. Trabalhos Relacionados Um tesauro é uma lista de palavras associadas por uma característica específica, como a similaridade entre elas (sinonímia). Sua construção é, tradicionalmente, manual e resulta em um recurso de alta qualidade, mas de baixa cobertura e de alto custo. Para solucionar esse problema, a criação de tesauros pode ser feita automaticamente, a partir de textos, com base na hipótese distribucional de Harris [Harris 1954], a qual propõe que se pode conhecer uma palavra pela sua companhia. Uma das principais abordagens na criação dos tesauros é o método de contagem [Lin 1998, Baroni and Lenci 2010]. Para criar esses tesauros utilizando o método de contagem, inicialmente são extraídas ocorrências de todas as palavras do texto com as palavras que as acompanham dentro de uma janela de tamanho fixo. Em seguida, é feita a contagem total da coocorrência de cada par de palavras. Com essas contagens, é criada uma matriz que possui o número de vezes que cada palavra ocorreu com cada uma das outras palavras do texto (Tabela 1). 1 https://github.com/ceramisch/minimantics 2 https://spark.apache.org/

Posteriormente, para cada palavra-alvo (linha), é calculada a força de associação entre ela e cada um dos seus contextos (colunas) [Lin 1998, Baroni and Lenci 2010]. A Tabela 1 apresenta um exemplo de matriz de coocorrências. Tabela 1. Frequência de ocorrência de cada palavra chocolate comer bom chocolate 3 2 1 comer 2 4 3 3. Materiais e Métodos A parte paralelizada do algoritmo foi a de contagem de cada palavra com seus contextos. A entrada para a fase de contagem de associações é um arquivo contendo uma série de pares de palavras (alvo e contexto) exemplificados na Tabela 2 e a saída é a contagem de todos os pares no corpus exemplificados na Tabela 3. Tabela 2. Exemplo de entrada Alvo Contexto chocolate comer chocolate delicioso chocolate caro chocolate delicioso Tabela 3. Exemplo de saída Alvo Contexto Contagem chocolate comer 1 chocolate delicioso 2 chocolate caro 1 Esse tipo de processamento se encaixa no paradigma MapReduce[Lämmel 2008] de programação, pois cada parte do texto pode ser considerada separadamente para contagem de pares, e depois todos os resultados obtidos podem ser agrupados. Ou seja, o texto pode ser dividido entre múltiplas tarefas (Map), em que cada tarefa fará a contagem na sua porção de forma independente, e,por fim, as contagens dos mesmos pares podem ser somadas (Reduce). Optou-se pelo uso de Spark por ser uma ferramenta adequada à manipulação de grandes quantidades de dados, oferecendo um ambiente para desenvolvimento em MapReduce. Para a escrita do algoritmo, foi usada a linguagem Scala, suportada pelo ambiente Spark. Foram utilizados dois subconjuntos do corpus UKWaC [Ferraresi et al. 2008]: um com 68KB e outro com 11GB. Os arquivos foram copiados para todos os nós antes da execução do código paralelo. 4. Experimentos e Resultados Para a realização do trabalho, foi utilizado o framework Spark 1.3.1 com Scala 2.11.6 no cluster Sagittaire do Grid 5000 3. Foram usados até 40 nós desse cluster, cada um equipado com 2 AMD Opteron 250 2.4GHz, 2GB de memória RAM e um disco rígido de 73GB (SCSI). Os nós estão ligados através de uma rede Gigabit Ethernet. O sistema operacional utilizado foi Linux, com a distribuição Debian 6 ( Squeeze ). Um dos nós atua como mestre, e os demais como escravos. 3 http://www.grid5000.fr/

(a) Tempo (segundos) (b) Speedup Figura 1. Resultados com o corpus de 11GB Os resultados obtidos são apresentados nas Tabelas 4 e 5 para 68KB e 11 GB, respectivamente. Os tempos apresentados são a média aritmética de até 8 execuções. Foram observados ganhos de desempenho apenas para o corpus maior (Tabela 5): de 14000 para 180 segundos, um ganho de 77.57% com 40 nós. Os resultados para esse corpus também estão representados na Figura 1. Tabela 4. Resultados com o corpus de 68KB Sequencial Paralelo (40 nós) Tempo (s) 0,09 45,31 Desvio-Padrão 0,00 0,95 Speedup - 0,002 Eficiência 1 0,00 Tabela 5. Resultados com o corpus de 11GB Sequencial Paralelo (10 nós) Paralelo (20 nós) Paralelo (40 nós) Tempo (s) 14029,8 536,74 289,85 180,87 Desvio-Padrão 0 1,056 1,46 3,3 Speedup - 26,13 48,4 77,56 Eficiência 1 1,3 1,21 0,96 Para o corpus menor (Tabela 4), foi observado um aumento no tempo de execução com a paralelização do algoritmo. Isso acontece devido ao custo do tempo de inicialização do próprio Spark, que é diluído quando o corpus de entrada passa a ser maior. Além disso, de acordo com o tamanho da entrada e as configurações utilizadas, o mestre dispara apenas duas tarefas para processar esse corpus, independente do número de escravos disponíveis (por esse motivo, são apresentados resultados com apenas um número de nós). Comparando os tempos obtidos para as implementações paralela e sequencial, foram calculados speedup e eficiência. Esses valores representam, respectivamente, a melhoria de desempenho obtida pela versão paralela e o quão eficiente é essa melhoria em relação ao número de processadores e núcleos de processamento utilizados. Pode-se observar que a implementação paralela obtém speedup maior do que o número de cores utilizado e eficiência acima de 1 (com 10 e 20 nós). Isso acontece

porque, apesar de implementarem a mesma contagem, a versão sequencial faz a ordenação dos pares antes de gerar o arquivo de saída, enquanto a versão paralela não precisa dessa ordenação por causa da representação dada pelo Spark aos dados. Na versão sequencial, o arquivo de saída dessa fase precisa estar ordenado para processamento pela próxima fase da criação do tesauro. No entanto, na versão paralela os dados podem ser diretamente manipulados pela próxima fase através de novas fases de Map e Reduce. O speedup e a eficiência caem conforme aumenta o número de nós envolvidos na execução. Uma possível explicação para isso é que a proporção entre o número de tarefas geradas e o número de cores disponíveis torna-se subótima para esse ambiente, considerando o custo de manutenção de um grande número de escravos. Nesse caso, maior eficiência seria obtida para 40 nós de processamento com um corpus de entrada maior. 5. Conclusões e Trabalhos Futuros Nesse artigo, apresentamos a paralelização (usando Spark) do algoritmo de geração de contagens de palavras e contextos para a criação de tesauros distribucionais. Foi avaliado o desempenho dessa paralelização em um cluster com até 40 nós. Os resultados obtidos mostram ganhos de desempenho de até 77% para o maior tamanho de entrada. Trabalhos futuros incluem a paralelização e avaliação das outras fases da criação de tesauros (cálculo de associação entre palavras e contextos e cálculo de similaridade entre as palavras). 6. Agradecimentos Os experimentos apresentados neste artigo foram realizados na plataforma experimental Grid 5000, em desenvolvimento pela ação INRIA ALADDIN com apoio de CNRS, RENATER e diversas universidades e órgãos de fomento (ver www.grid5000.fr). Agradecemos a Carlos Ramisch, que disponibilizou o Minimantics, ao grupo de Processamento Paralelo da UFRGS e ao Instituto de Informática da UFRGS pelo apoio à pesquisa. Parte dos resultados apresentados neste trabalho foram obtidos no projeto Simplificação Textual de Expressões Complexas patrocinado pela Samsung Eletrônica da Amazônia Ltda., através da lei 8.248/91, e também contou com apoio do CNPq (113700/2015-6 ). Referências Baroni, M. and Lenci, A. (2010). Distributional memory: A general framework for corpus-based semantics. Computational Linguistics, 36(4):673 721. Ferraresi, A., Zanchetta, E., Baroni, M., and Bernardini, S. (2008). Introducing and evaluating ukwac, a very large web-derived corpus of english. In Proceedings of the 4th Web as Corpus Workshop (WAC-4) Can we beat Google, pages 47 54. Harris, Z. S. (1954). Distributional structure. Word. Lämmel, R. (2008). Google s mapreduce programming model revisited. Science of computer programming, 70(1):1 30. Lin, D. (1998). Automatic retrieval and clustering of similar words. In Proceedings of the 36th Annual Meeting of the Association for Computational Linguistics and 17th

International Conference on Computational Linguistics - Volume 2, ACL 98, pages 768 774. Association for Computational Linguistics. Padró, M., Idiart, M., Villavicencio, A., and Ramisch, C. (2014). Nothing like good old frequency: Studying context filters for distributional thesauri. In Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP 2014) - short papers, Doha, Qatar.