| Linguateca - 2006. |
Versão para impressão |
|
Entende-se por alinhamento o processo que tem a seu cargo identificar as correspondências entre as EMs, já previamente etiquetadas, dado dois documentos. Nesta implementação assume-se que os dois documentos são idênticos e que só diferem na maneira como as EMs foram identificadas.
A existência de um tal sistema permite, de uma forma automática, estabelecer as correspondências e a consequente avaliação dos documentos etiquetados pelos participantes. As submissões são comparadas com os documentos existentes na Colecção Dourada e são identificadas as entidades que foram correctamente e incorrectamente etiquetadas pelos concorrentes.
Para cada documento processado é produzido uma lista de correspondências entre as entidades no correspondente documento na Colecção Dourada e as entidades do documento da submissão. As correspondências entre entidades podem ser de cinco tipos:
Por existirem várias maneiras de o alinhamento ser efectuado é necessário definir de um forma clara como é que cada uma destas situações é representada na saída do alinhador. É também necessário definir a meta-informação associada às correspondências e que será utilizada pelo módulo de avaliação ou pelo juiz humano no caso de existir alguma ambiguidade que não permita o processamento automático.
<EM>17:00<EM> ---> [<EM>17:00</EM>]
<EM>17:00<EM> ---> [<EM>17</EM>, <EM>00</EM>]
<EM>17<EM> ---> [<EM>17:00</EM>] <EM>00<EM> ---> [<EM>17:00</EM>]
<EM>Departamento de Informática</EM>---> [null]
<ESPURIO>Ontem</ESPURIO> ---> [<EM>Ontem</EM>]
<ALT> <ALT1> [ALTERNATIVA 1] ---> [SAIDA] </ALT1> <ALT2> [ALTERNATIVA 2] ---> [SAIDA] </ALT2> <ALT3> [ALTERNATIVA 3] ---> [SAIDA] </ALT3> </ALT>Esta situação é visível no seguinte exemplo:
<ALT> <ALT1> <VALOR TIPO="QUANTIDADE">98 anos e meio</VALOR> ---> [<VALOR TIPO="QUANTIDADE">98 anos</VALOR>] </ALT1> <ALT2> <VALOR TIPO="QUANTIDADE">98 anos</VALOR> ---> [<VALOR TIPO="QUANTIDADE">98 anos</VALOR>] <ALT2> </ALT>De notar que o valor da alternativa pode conter várias EMs. Nesse caso optou-se por colocar cada uma das EMs em linhas separadas de forma a tornar o alinhamento mais claro. Considere o seguinte exemplo:
<ALT> <ALT1> <ACONTECIMENTO TIPO="EVENTO" MORF="M,S">Aves-Campomaiorense</ACONTECIMENTO> ---> [<ACONTECIMENTO TIPO="EVENTO" MORF="M,S">Aves-Campomaiorense</ACONTECIMENTO>] </ALT1> <ALT2> <PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Aves</PESSOA> ---> [<ACONTECIMENTO TIPO="EVENTO" MORF="M,S">Aves-Campomaiorense</ACONTECIMENTO>] <PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Campomaiorense</PESSOA> ---> [<ACONTECIMENTO TIPO="EVENTO" MORF="M,S">Aves-Campomaiorense</ACONTECIMENTO>] </ALT2> </ALT>As etiquetas ALT abrangem ainda situações em que a etiquetação pode ou não ser considerada. Como por exemplo em:
<ALT>Monárquico|<PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Monárquico</PESSOA></ALT>Se o sistema participante tomou a decisão de não etiquetar Monárquico então AlinhEM produz a seguinte saída:
<ALT> <ALT1> </ALT1> <ALT2> <PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Monárquico</PESSOA> ---> [null] </ALT2> </ALT>Na situação em que a etiquetação foi realizada o resultado é:
<ALT> <ALT1> <ESPURIO>Monárquico</ESPURIO> ---> [<PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Monárquico</PESSOA>] </ALT1> <ALT2> <PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Monárquico</PESSOA> ---> [<PESSOA TIPO="GRUPOMEMBRO" MORF="M,S">Monárquico</PESSOA>] </ALT2> </ALT>
Note-se que a sáida gerada pelo AlinhEM apenas tem o objectivo explicitar todos as possiblidades de alinhamento entre EMs. Cabe então aos módulos seguintes decidir qual a ALTn a considerar para a avaliação.
<OMITIDO> Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). </OMITIDO>Nestas situações o AlinhEM efectua o alinhamento produzindo a seguinte saída:
<OMITIDO>Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm). Sorry, your browser doesn't support <OBRA TIPO="PRODUTO">Java</OBRA>(tm).</OMITIDO> ---> [<PESSOA TIPO="INDIVIDUAL" MORF="F,S">Sorry</PESSOA>, <ABSTRACCAO TIPO="DISCIPLINA" MORF="M,S">Java</ABSTRACCAO>, <PESSOA TIPO="INDIVIDUAL" MORF="M,S">Sorry</PESSOA>, <ABSTRACCAO TIPO="DISCIPLINA" MORF="M,S">Java</ABSTRACCAO>, <PESSOA TIPO="INDIVIDUAL" MORF="M,S">Sorry</PESSOA>, <ABSTRACCAO TIPO="DISCIPLINA" MORF="M,S">Java</ABSTRACCAO>, <PESSOA TIPO="INDIVIDUAL" MORF="M,S">Sorry</PESSOA>, <ABSTRACCAO TIPO="DISCIPLINA" MORF="M,S">Java</ABSTRACCAO>]Desta forma garantimos que não consideramos falsos espúrios durante a avaliação se os respectivos avaliadores ignorarem os alinhamentos de OMITIDOS.
Considere-se os seguintes textos, marcados com as etiquetas numéricas. O primeiro corresponde a um extracto de um documento da Colecção Dourada e o segundo ao mesmo extracto, anotado por um sistema participante.
Extracto da CD:
<DOC>Extracto correspondente da saída de um sistema:
<DOC>Tendo ambos os textos marcados da forma exposta o alinhamento torna-se mais evidente. Note-se que nos casos apresentados o átomo Lions não é incluído nas entidades identificadas pelo sistema, todavia e por existirem vários átomos etiquetados numericamente o alinhamento é conseguido correctamente. A numeração reinicia-se com cada novo texto.
Como já foi referido nem todo o texto é considerado para atomização e posterior etiquetação numérica. Como a Colecção Dourada é a nossa referência o AlinEM só se interessa pelo texto que faz parte das EMs da Colecção Dourada. Mais precisamente e voltando ao exemplo:
Lions Clube de Faro ;Portugal ;Algarve ;Portugal ;Faro ;Hotel Eva ;Clube Lions ;21 horas
O processo de atomização não se preocupa em garantir que cada átomo gerado corresponda a algo que faça parte do nosso léxico e pode mesmo partir palavras e números em sítios que atomizadores para a língua portuguesa não o fariam. O objectivo é garantir que se consiga reunir um conjunto de átomos que possam ser utilizados para marcar os textos (utilizando as etiquetas numéricas) e que facilite o alinhamento. Assim o atomizador do ALinhEM utiliza as seguintes regras de atomização:
1) Todos os caracteres não alfa-numéricos são considerados como delimitadores de átomos; (alguem@algures.com -> <1>alguem</1> @ <1>algures</1> . <1>com</1>) 2) Todos os números são atomizados ao dígito; (1979 -> <1>1</1> <1>9</1> <1>7</1> <2>9</2>, 1.975 -> <1>1</1> . <1><9/1> <1><7/1> <1><5/1>) 3) A transição de um caracter numérico para um alfabético (ou vice-versa) delimita átomos; (NBR6028 -> <1>NBR</1> <1>6</1> <1>0</1> <1>2</1> <1>8</1>)
De notar que as seguintes palavras, muito frequentes e por vezes sofrendo alteração pelos sistemas, não são indexadas: de, DE, De, a, A, e, E, o, O, do, DO, Do, da, DA, Da, que, QUE, Que, em, EM, Em, para, PARA, Para, com, COM, Com, os, OS, Os, se, SE, Se, um, UM, Um, no, NO, No, as, AS, As, dos, DOS, Dos, uma, UMA, Uma, por, POR, por, na, NA, Na, não, NÃO, Não, ou, OU, Ou, é, É, ao, AO, Ao, das, DAS, Das, mais, MAIS, Mais, à, À, for, FOR, For, como, COMO, Como, nos, NOS, Nos, pelo, PELO, Pelo, pela, PELA, e Pela. Esta lista de palavras pode ainda ser extendida utilizando para tal um parâmetro própio na invocação do AlinhEM (ver exemplos de utilização).
Assume-se que as saídas dos sistemas participantes as submissões dos participantes já passaram por uma fase de processamento prévia que teve como objectivo a remoção de documentos que não serão considerados para a avaliação. Este pré-processamento produz um ficheiro para cada sistema contendo o subconjunto dos documentos a serem avaliados. O programas utilizados neste pré-processamento estáo também disponíveis, veja-se extractor.
O AlinhEM é distribuído no pacote ferramentas_HAREM_java.jar.
Para inspeccionar o código basta extrair os ficheiros do arquivo executando o seguinte comando numa shell do seu sistema:
jar -xf ferramentas_HAREM_java.jarO programa chama-se
Aligner.java.
Antes de invocar o programa, é necessário escolher o cenário de avaliação que se pretende usar, a avaliação de 2005 (HAREM) ou a de 2006 (MiniHAREM). Para tal, é necessário descarregar o ficheiro de configuração de 2005 (2005.conf) ou de 2006 (2006.conf), RENOMEAR para harem.conf e colocar na mesma directoria onde se encontra o pacote ferramentas_HAREM_java.jar.
Para invocar o AlinhEM numa máquina com a JVM instalada, execute o comando:
java -Dfile.encoding=ISO-8859-1 -cp ferramentas_HAREM_java.jar pt.linguateca.harem.Aligner -submissao submissão.txt -cd CD.txt > ficheiro.alinhadoOnde submissão.txt corresponde ao nome do ficheiro (pré-processado) que contem os documentos etiquetados por qualquer participante e CD.txt corresponde ao ficheiro da Colecção Dourada. Salienta-se a utilização do parâmetro -Dfile.encoding=ISO-8859-1 que é necessário para garantir que os ficheiros são processados utilizando uma codificação de caracteres correcta. O resultado do alinhamento será enviado para o standard output, daí ser conveniente redireccionar a saída para um ficheiro, de forma a facilitar a posterior validação e avaliação.
Existem além disso mais dois parametros:
O parâmetro ignorar, recebe como valor o nome de um ficheiro contendo uma lista de palavras que serão incluídas na lista de palavras a ignorar descrita anteriormente. As palavras contidas neste ficheiro deverão estar em linhas separadas.
O parâmetro etiquetas, que pode ter os valores sim ou nao (nao por defeito), para produzir as etiquetas numéricas em relação aos átomos.
Segue-se um exemplo baseado num alinhamento efectuado entre a anotação do documento HAREM-88H-09142 de uma submissão e o correspondente da CD. Neste exemplo não houve problemas para verificar manualmente:
HAREM-88H-09142 PT Jornalístico
<LOCAL TIPO="ALARGADO" MORF="F,S">Foz</LOCAL> ---> [<VARIADO>Foz</VARIADO>]
<LOCAL TIPO="ADMINISTRATIVO" MORF="M,S">Porto</LOCAL> ---> [<LOCAL TIPO="ADMINISTRATIVO">Porto</LOCAL>]
<TEMPO TIPO="HORA">02h30 horas</TEMPO> ---> [<TEMPO TIPO="HORA">02h30</TEMPO>]
<TEMPO TIPO="HORA">05h20</TEMPO> ---> [<TEMPO TIPO="HORA">05h20</TEMPO>]
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S">Porto Fino</ORGANIZACAO> ---> [<ORGANIZACAO TIPO="EMPRESA">restaurante "Porto Fino"</ORGANIZACAO>]
<LOCAL TIPO="ALARGADO" MORF="F,S">Padrão</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">rua Padrão</LOCAL>]
<VALOR TIPO="QUANTIDADE">44</VALOR> ---> [null]
Aqui apresentamos um caso em que o programa pede auxílio:
HAREM-69G-06024 PT Jornalístico
<VERIFICACAO_MANUAL> Os átomos seguintes não foram correctamente identificados: [CEC]. Verifique o seguinte alinhamento:
<ORGANIZACAO TIPO="INSTITUICAO" MORF="M,S">CEC/<ORGANIZACAO> ---> null </VERIFICACAO_MANUAL>
Por uma questão de aumento de legibilidade, temos mostrado o resultado do AlinhEM sem a numeração dos átomos. Aqui mostramos com essa funcionalidade também (ou seja, invocar o programa com a opção -etiquetas sim):
HAREM-971-03383 PT Web
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S"><1>Aeroclube</1> de <1>Torres</1> <1>Vedras</1></ORGANIZACAO> ---> [<LOCAL TIPO="ADMINISTRATIVO"><1>Torres</1> <1>Vedras</1> Esta Página</LOCAL>]
<LOCAL TIPO="VIRTUAL" MORF="M,S"><1>SAPO</1></LOCAL> ---> [<ABSTRACCAO TIPO="MARCA"><1>SAPO</1></ABSTRACCAO>]
<LOCAL TIPO="VIRTUAL" MORF="?,S"><1>Web</1></LOCAL> ---> [<LOCAL TIPO="VIRTUAL"><1>Web</1></LOCAL>]
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S"><2>Aeroclube</2> de <2>Torres</2> <2>Vedras</2></ORGANIZACAO> ---> [<VARIADO TIPO="OUTRO"><2>Aeroclube</2> de <2>Torres</2> <2>Vedras</2></VARIADO>]
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S"><2>ACTV</2></ORGANIZACAO> ---> [<VARIADO TIPO="OUTRO"><2>ACTV</2></VARIADO>]
<ALT> Aeroclubes | <ORGANIZACAO TIPO="EMPRESA" MORF="M,P"><1>Aeroclubes</1></ORGANIZACAO> </ALT> ---> [<VARIADO TIPO="OUTRO"><1>Aeroclubes</1></VARIADO>]
<VALOR TIPO="QUANTIDADE"><1>51</1> <1>anos</1></VALOR> ---> [<TEMPO TIPO="PERIODO"><1>51</1> <1>anos</1></TEMPO>]
<TEMPO TIPO="DATA"><1>1946</1></TEMPO> ---> [<TEMPO TIPO="DATA"><1>1946</1></TEMPO>]
<LOCAL TIPO="GEOGRAFICO" MORF="F,S"><1>Santa</1> <1>Cruz</1></LOCAL> ---> [<LOCAL TIPO="ADMINISTRATIVO"><1>Santa</1> <1>Cruz</1></LOCAL>]
<LOCAL TIPO="ADMINISTRATIVO" MORF="?,S"><3>Torres</3> <3>Vedras</3></LOCAL> ---> [<LOCAL TIPO="ADMINISTRATIVO"><3>Torres</3> <3>Vedras</3></LOCAL>]
<VALOR TIPO="QUANTIDADE"><1>9</1></VALOR> ---> [<VALOR TIPO="QUANTIDADE"><1>9</1></VALOR>]
<VALOR TIPO="QUANTIDADE"><1>2</1></VALOR> ---> [<ABSTRACCAO TIPO="MARCA"><1>2</1></ABSTRACCAO>]
<VALOR TIPO="QUANTIDADE"><1>4</1></VALOR> ---> [<ABSTRACCAO TIPO="MARCA"><1>4</1></ABSTRACCAO>]
<ORGANIZACAO TIPO="INSTITUICAO" MORF="F,S"><1>Escola</1> de <1>Pilotagem</1></ORGANIZACAO> ---> [<ORGANIZACAO TIPO="INSTITUICAO"><1>Escola</1> de <1>Pilotagem</1></ORGANIZACAO>]
<VALOR TIPO="QUANTIDADE"><1>3</1></VALOR> ---> [<ABSTRACCAO TIPO="MARCA"><1>3</1></ABSTRACCAO>]
<VALOR TIPO="QUANTIDADE"><1>1</1></VALOR> ---> [<ABSTRACCAO TIPO="MARCA"><1>1</1></ABSTRACCAO>]
<LOCAL TIPO="ADMINISTRATIVO" MORF="F,S"><1>Lisboa</1></LOCAL> ---> [<LOCAL TIPO="ADMINISTRATIVO"><1>Lisboa</1></LOCAL>]
<ORGANIZACAO TIPO="INSTITUICAO" MORF="F,S"><2>Escola</2> de <2>Pilotagem</2></ORGANIZACAO> ---> [<ORGANIZACAO TIPO="INSTITUICAO"><2>Escola</2> de <2>Pilotagem</2></ORGANIZACAO>]
<PESSOA TIPO="INDIVIDUAL" MORF="M,S"><1>Cmdt</1>. <1>João</1> <1>Filhó</1></PESSOA> ---> [<VARIADO TIPO="OUTRO"><1>Cmdt</1></VARIADO>, <PESSOA TIPO="INDIVIDUAL"><1>João</1> <1>Filhó</1></PESSOA>]
<ORGANIZACAO TIPO="EMPRESA" MORF="F,S"><1>Portugália</1></ORGANIZACAO> ---> [<ORGANIZACAO TIPO="EMPRESA"><1>Portugália</1></ORGANIZACAO>]
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S"><3>ACTV</3></ORGANIZACAO> ---> [<VARIADO TIPO="OUTRO"><3>ACTV</3></VARIADO>]
<LOCAL TIPO="VIRTUAL"><1>pedromaya</1>@<2>mail</2>.<1>telepac</1>.<1>pt</1></LOCAL> ---> [<LOCAL TIPO="VIRTUAL"><1>pedromaya</1>@<2>mail</2>.<1>telepac</1>.<1>pt</1></LOCAL>]
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S"><4>ACTV</4></ORGANIZACAO> ---> [<VARIADO TIPO="OUTRO"><4>ACTV</4></VARIADO>]
<ORGANIZACAO TIPO="EMPRESA" MORF="M,S"><5>ACTV</5></ORGANIZACAO> ---> [<VARIADO TIPO="OUTRO"><5>ACTV</5> <2>Aeródromo</2> <2>Municipal</2> de <2>Santa</2> <2>Cruz</2> <1>2560</1> <1>SILVEIRA</1></VARIADO>]
<LOCAL TIPO="CORREIO"><2>Aeródromo</2> <2>Municipal</2> de <2>Santa</2> <2>Cruz</2> <1>2560</1> <1>SILVEIRA</1></LOCAL> ---> [<VARIADO TIPO="OUTRO"><5>ACTV</5> <2>Aeródromo</2> <2>Municipal</2> de <2>Santa</2> <2>Cruz</2> <1>2560</1> <1>SILVEIRA</1></VARIADO>]
<LOCAL TIPO="VIRTUAL"><1>opsactv</1>@<6>actv</6>.<2>pt</2></LOCAL> ---> [<LOCAL TIPO="VIRTUAL"><1>opsactv</1>@<6>actv</6>.<2>pt</2></LOCAL>]
<LOCAL TIPO="VIRTUAL"><2>pedromaya</2>@<4>mail</4>.<2>telepac</2>.<3>pt</3></LOCAL> ---> [<LOCAL TIPO="VIRTUAL"><2>pedromaya</2>@<4>mail</4>.<2>telepac</2>.<3>pt</3></LOCAL>]
<ESPURIO><1>Actv</1> Home Page</ESPURIO> ---> [<VARIADO TIPO="OUTRO"><1>Actv</1> Home Page</VARIADO>]
<ESPURIO><1>Page Banner Image</1></ESPURIO> ---> [<VARIADO TIPO="OUTRO"><1>Page Banner Image</1></VARIADO>]
<ESPURIO><2>VOAR</2></ESPURIO> ---> [<ORGANIZACAO TIPO="EMPRESA"><2>VOAR</2></ORGANIZACAO>]
<ESPURIO><3>HRule Image</3></ESPURIO> ---> [<VARIADO TIPO="OUTRO"><3>HRule Image</3></VARIADO>]