como instalar a ferramenta salto - NILC
Transcrição
como instalar a ferramenta salto - NILC
GUIA PARA ANOTAÇÃO LINGUÍSTICA USANDO A FERRAMENTA SALTO Por: Magali Sanches Duran Organizei este guia sob a forma de perguntas e respostas a fim de apoiar o minicurso "Anotação Semântica na prática: apresentação de ferramentas, manual de anotação, e teoria sobre anotação de papéis semânticos" que ministrarei na EBRALC 2012 (http://143.107.232.109/elc-ebralc2012/index.php/pt/minicursos). Assim, à medida que novas perguntas surgirem no minicurso, pretendo acrescentá-las ao guia, com suas respectivas respostas. O que é anotação de corpus? Anotar um corpus consiste basicamente em delimitar um segmento do texto e atribuir-lhe um rótulo ou etiqueta. O conjunto de rótulos ou etiquetas deve atender o propósito da anotação. Definir conjunto de etiquetas é uma das partes mais complexas do processo de anotação, pois implica escolhas quanto à forma de modelar os dados do problema. Para que anotar um corpus? Existem duas finalidades básicas para anotarmos um corpus. A primeira finalidade é atender aos interesses da pesquisa linguística e é um sucedâneo do que há muito tempo se faz manualmente: ler, analisar, destacar partes do texto e atribuir comentários ou copiar em fichas as partes destacadas. Depois, reúnem-se os resultados a fim concluir a análise. A outra finalidade é atender às necessidades do processamento automático de línguas naturais. O corpus é analisado por humanos, recebe anotações num formato lógico e é utilizado como modelo (corpus de treinamento) para que a máquina “aprenda” a reproduzir automaticamente a tarefa humana. Qual a diferença entre etiqueta e comentário? O comentário é livre e a etiqueta é padronizada. Por exemplo, se “SUJ” “SUBJ” e “SUJEITO” são usados alternativamente na anotação para a mesma finalidade, temos uma comentário e não uma etiqueta. A etiqueta normalmente é pré-definida e atende ao propósito de permitir a recuperação automática dos segmentos anotados com ela. O que é um editor de anotação de corpus? Um editor de anotação é uma ferramenta com as seguintes funções: Antes da anotação: definição do conjunto de etiquetas Durante a anotação disponibilização do conjunto de etiquetas para o anotador delimitação do segmento que receberá a etiqueta atribuição de etiqueta ao segmento delimitado Após a anotação Busca e exibição de sentenças com determinada etiqueta atribuída Contagem de etiquetas atribuídas, por tipo Busca e substituição de etiquetas atribuídas O que é a ferramenta SALTO? A SALTO é um editor de anotação serve tanto para anotações individuais quanto para anotações distribuídas. O uso individual é o default da ferramenta, mas ela prevê a possibilidade de diferentes tipos de usuários: usuário (anotador) e administrador (que cria subcorpus, distribui entre os anotadores, recolhe os subcorpus anotados e resolve as divergências entre as anotações (atividade chamada de adjudicação). O que é anotação distribuída? É a divisão da tarefa de anotação entre vários anotadores. Um administrador da tarefa distribui partes do corpus aos diversos anotadores, de forma que cada sentença seja anotada pelo menos por dois anotadores. A SALTO fornece um ambiente para administrar essa distribuição, pois cada usuário (anotador) tem três pastas: (1) uma de entrada, (2) uma de trabalho e (3) uma de saída. Na pasta de entrada encontra-se o subcorpus enviado pelo administrador. Ao abrir a pasta de entrada e iniciar a anotação, o subcorpus é gravado na pasta de trabalho. Ao terminar a anotação, o subcorpus é colocado na pasta de saída. Além de criar subcorpus e distribuí-los nas pastas de entrada dos anotadores, na SALTO o administrador tem o recurso de recolher os subcorpus que se encontram nas pastas de saída, confrontar as anotações e exibir as diferenças, iniciando a adjudicação, que consiste em aceitar uma ou outra anotação como certa ou propor uma nova anotação. Algumas ferramentas que fazem tarefas semelhantes chegam, inclusive, a calcular a concordância entre os anotadores por meio da estatística Kappa 1. No minicurso da EBRALC, exploraremos a anotação individual, pois não experimentamos a anotação distribuída ainda. Para que tipo de anotação serve a ferramenta SALTO? A SALTO 2 foi desenvolvida para atender as necessidades do projeto SALSA 3, que implementou a anotação de papéis semânticos no modelo da Framenet 4 para a língua alemã. 1 Carletta, J.: Assessing Agreement on Classification Tasks: The Kappa Statistic. Computational Linguistics, vol. 22, n. 2, pp. 249--254. (1996). 2 Burchardt, A.; Erk, K.; Frank, A.; Kowalski, A.; Pado, S. (2006) SALTO - A Versatile Multi-Level Annotation Tool. In: Proceedings of LREC 2006. Contudo, o uso da ferramenta pode ser customizado a fim de suportar outros tipos de anotação, como a anotação de relações de correferência e de relações discursivas entre orações. Outro exemplo é projeto Propbank-Br 5, que utilizou a ferramenta SALTO para anotação de papéis semânticos nos moldes do Propbank 6. A principal característica que distingue a SALTO de outras ferramentas de anotação é o fato de ela tornar possível a anotação sobre árvores sintáticas. Isso significa que, na SALTO, construímos uma camada de anotação sobre duas outras camadas de anotação: a morfossintática (substantivo, verbo, adjetivo, artigo etc.) e a sintática (sujeito, predicado, adjunto adverbial etc.). Ao anotarmos sobre árvores sintáticas, “aproveitamos” os segmentos já delimitados na camada sintática de anotação. Por isso, a ferramenta SALTO não permite que se delimitem segmentos. Para que anotar sobre árvores sintáticas? A principal vantagem de fazer uma anotação sobre outras camadas de anotação é beneficiar o aprendizado de máquina. Parte-se do pressuposto de que etiquetas de uma camada de anotação possuem alguma correlação com etiquetas de outra camada. Por exemplo, existe grande correlação entre as etiquetas SUJEITO, da camada sintática e AGENTE, da camada de papéis semânticos. Esse tipo de correlação é uma informação relevante para que os programas de anotação automática obtenham melhor desempenho. Como instalar a ferramenta SALTO? O único requisito para a SALTO é que sua máquina já tenha o JAVA instalado (a Java Virtual Machine, ou JVM, ou Java Runtime Environment, JRE). Se sua máquina não tiver JAVA instalado, baixe do seguinte endereço: http://java.sun.com/, especificamente em: http://java.com/pt_BR/download/index.jsp. A ferramenta SALTO está disponível gratuitamente para uso de pesquisadores, mas não para uso comercial. Por isso, para baixá-la, é preciso preencher um pedido de autorização http://www.coli.unino site do projeto SALSA: saarland.de/projects/salsa/salto/request/salsa-tool-request.cgi, informando seu e-mail, sua instituição de origem e a finalidade para que deseja a ferramenta. Após submeter a solicitação, dentro de poucas horas você receberá, no e-mail informado, um arquivo em formato . zip (arquivo comprimido). Faça o download do arquivo e descomprima-o (clique sobre ele com o botão direito e escolha “extrair arquivo”), salvando-o na área de sua escolha. 3 http://www.coli.uni-saarland.de/projects/salsa Baker, C.F.; Fillmore, C. J.; Lowe. J. B. (1998).The Berkeley FrameNet Project. In: Proceedings of Computational Linguistics 1998 Conference. 5 http://www2.nilc.icmc.usp.br/portlex/index.php/projetos/propbankbr 6 Palmer, M.; Gildea, D.; Kingsbury, P. (2005) The Proposition Bank: An Annotated Corpus of Semantic Roles. Computational Linguistics, 31:1., pp. 71-105, March, 2005. 4 Como habilitar um corpus para uso na ferramenta SALTO? Para editar a anotação de um corpus na ferramenta SALTO é preciso que seu corpus tenha algumas características: (1) tenha sido anotado automaticamente por um parser sintático, como o Palavras 7 (Bick, 2000); (2) esteja em formato Tiger e (3) seja adaptado para o formato Tiger-SALTO. As condições (1) e (2) dependem de você ter acesso ao parser Palavras (que não é de uso livre) e tenha alguns conhecimentos de computação. Caso você não tenha essas condições, poderá optar por um dos corpora disponíveis na Linguateca 8 que já estão anotados pelo parser Palavras e já possuem uma versão Tiger. Já para a característica (3), que é colocar o corpus no formato Tiger-SALTO, foram desenvolvidos dois “scripts” que se encontram disponíveis no site do do curso da EBRALC "Anotação Semântica na prática: apresentação de ferramentas, manual de anotação, e teoria sobre anotação de papéis semânticos" em http://143.107.232.109/elc-ebralc2012/index.php/pt/minicursos, além de já estarem nos micros dos laboratórios onde serão ministrados os cursos da EBRALC. O que fazem os scripts desenvolvidos no NILC para converter para o formato TigerSALTO? Esses “scripts” criam um cabeçalho e um rodapé no arquivo do corpus com as áreas onde serão armazenados os dados da anotação. Além disso, o “script” específico para anotação de papéis semânticos multiplica as sentenças que possuem mais de um verbo e dedica cada cópia à anotação de um desses verbos, “evocando-o” como centro de um frame (centro da estrutura argumental que será anotada). Cada cópia da sentença constitui uma “instância de anotação”. Essa medida é necessária para que as estruturas argumentais dos verbos não se sobreponham. Na figura abaixo mostramos como seria anotar várias estruturas argumentais em uma única cópia da sentença. Como se usa a ferramenta Salto? Inicialize a SALTO executando um dos seguintes subarquivos: Salto_bigmemory (se você trabalha no ambiente Windows) ou Salto_bigmemory.sh (se você trabalha no ambiente Linux). A tela de Login no sistema pede que você se identifique com seu nome de usuário. Ao fazer isso, o sistema vai criar seu usuário automaticamente. 7 Bick, E. (2000). The Parsing System Palavras Automatic Grammatical Analysis of Portuguese in a Constraint Grammar Framework. Aarhus, Denmark, Aarhus University Press. 8 http://linguateca.pt Na tela a seguir, você deverá escolher com o mouse onde seu corpus está localizado e clicar em “choose”. A próxima é a tela de trabalho da ferramenta SALTO. Como carregar o corpus na área de trabalho? Clique em “File” e a seguir em “Open File”. Escolha o arquivo de seu corpus e ele será carregado na área de trabalho. Como definir o conjunto de etiquetas? A primeira tarefa da anotação é definir o conjunto de etiquetas que será utilizado. Como a SALTO foi feita para a Framenet, ela permite que os frames definidos no formato Framenet sejam importados para o sistema. Para isso, escolha “Corpus” => “Edit Frames” => “Add frames”. Se for utilizar a SALTO para outra finalidade, escolha “Corpus” => “Edit Frames” => “Create new frame”. Defina um nome para seu conjunto de etiquetas e digite-o no campo “name”, substituindo o nome “unknown”. A seguir, escolha “Add Element” para inserir cada uma das etiquetas do seu conjunto. Digite o nome da etiqueta e clique em “OK”. No exemplo abaixo foi inserida a etiqueta “agente”. Há um campo chamado “Optional” na frente da etiqueta criada. Se você assinalar o quadradinho, a etiqueta não aparecerá na sua tela de trabalho. Você poderá mudar essa preferência durante o processo de anotação. Esse recurso é muito útil, pois se o seu conjunto de etiquetas for muito grande, poderá poluir a tela de trabalho, como mostra a figura abaixo. Para evitar esse problema, marque como “Optional” as etiquetas menos usadas e deixe em branco apenas as mais usadas. As etiquetas que não aparecem na tela poderão ser selecionadas clicando com o botão direito sobre o nome que você deu a seu conjunto de etiquetas. Após fazer isso, escolha a opção “Add element” e todas as etiquetas definidas ficarão disponíveis para seleção. Uma vez selecionada, a etiqueta ficará visível na instância de anotação para ser atribuída. Após definir todas as etiquetas de seu conjunto, clique em “OK”. A ferramenta SALTO permite que o conjunto de etiquetas seja editado durante o processo de anotação. É possível criar novas etiquetas e deletar as indesejadas, desde que não tenham sido atribuídas nenhuma vez no corpus. Como fazer a anotação? Atribuir uma etiqueta a um constituinte é simples: clique sobre a etiqueta e arraste-a até o “nó” da árvore sintática que representa o constituinte que deseja anotar, como mostrado na próxima figura. Como cancelar uma anotação? Se a etiqueta foi atribuída indevidamente, você pode desfazer a ação imediatamente, dando um “Ctrl z”. Se o erro for percebido mais tarde, clique com o botão direito sobre a etiqueta e escolha “Delete element”. É possível adicionar outras anotações? Sim. Além das etiquetas atribuídas aos constituintes da árvore sintática, é possível fazer dois outros tipos de anotação na ferramenta SALTO. Um é a atribuição de uma etiqueta à sentença como um todo (“sentence flag”) e o outro é a atribuição de uma etiqueta à palavra (“word tag”). Como se atribui uma etiqueta à sentença como um todo? Para anotação da sentença, o escolha “Corpus” => “Flag Current Sentence”. Há quatro “flags” pré-definidas na SALTO: “Reexamine”, “Later”, “Wrongsubcorpus” e “Interesting”. A SALTO tem no alto da tela a opção de exibir todas as sentenças do corpus ou apenas as sentenças que foram anotadas com “flags” ou ainda todas as sentenças que receberam uma determinada “flag”. Cada uma das “sentence flags” tem um campo para subclassificação chamado “parameter” e um campo para comentário (“comment”). O nome do “parameter” deverá ser digitado toda vez, não ficando disponível para seleção. Por isso, se quiser utilizar o campo como se fosse uma etiqueta, deverá ter o cuidado de digitar o nome corretamente toda vez. Assim, futuramente, poderá fazer uma busca por determinado parâmetro a fim de recuperar todas as sentenças anotadas com ele. Como se atribui etiquetas às palavras do texto? A anotação de palavras deve ser feita com “word tags” definidas para a tarefa de anotação. Escolha “Corpus” => “Edit word tag”. No campo “tag” digite um nome para a etiqueta que você quer criar para palavras. Se for possível prever os valores que a “word tag” poderá apresentar, coloque-os no campo “Values”, caso contrário, deixe esse campo em branco. A atribuição das word tags definidas deve ser feita clicando com o botão direito sobre a palavra a ser anotada. Selecione uma das “word tags”. A seguir, digite um “value” para ela ou, caso sejam apresentados “values” possíveis, apague os que não correspondem à sua opção, deixando apenas o “value” desejado.