Versão para impressão
Avaliador da tarefa de classificação semântica de entidades mencionadas --- HAREM
Emir - Java
Avaliador da tarefa de classificação semântica de entidades mencionadas implementado em Java.
O Emir é o programa desenvolvida para efectuar a avaliação semântica de cada uma dos alinhamentos estabelecidos pelo AlinhEM. O Emir pode ser considerado o homólogo do AvalIDa mas no domínio da avaliação semântica. Outro aspecto importante é que o Emir trabalha sobre os resultados gerados pelo o AvalIDa e posteriormente filtrados pelo Véu. Como está especificado na respectiva documentação, o Véu coloca na primeira linha da sua saída a informação necessária ao AvalIDa de modo a que este possa efectuar a avaliação. Um exemplo de tal informação é dada a apresentada a seguir:
#TEMPO=["PERIODO", "DATA", "HORA", "CICLICO"]; VARIADO=["OUTRO"]; PESSOA=["MEMBRO", "GRUPOIND", "CARGO", "GRUPOCARGO", "INDIVIDUAL", "GRUPOMEMBRO"]; LOCAL=["GEOGRAFICO", "ALARGADO", "ADMINISTRATIVO", "VIRTUAL", "CORREIO"]; ACONTECIMENTO=["ORGANIZADO", "EVENTO", "EFEMERIDE"]; VALOR=["CLASSIFICACAO", "MOEDA", "QUANTIDADE"]; OBRA=["PRODUTO", "REPRODUZIDA", "PUBLICACAO", "ARTE"]; COISA=["SUBSTANCIA", "CLASSE", "OBJECTO"]; ABSTRACCAO=["IDEIA", "NOME", "ESTADO", "OBRA", "MARCA", "ESCOLA", "PLANO", "DISCIPLINA"]; ORGANIZACAO=["INSTITUICAO", "ADMINISTRACAO", "EMPRESA", "SUB"]
O Emir utiliza esta informação para efectuar o cálculo das várias medidas de avaliação correspondentes à semântica e que se podem encontrar no documento das Medidas. Ao efectuar a avaliação o Emir concatena o resultado da avaliação semântica ao fim do alinhamento. Considere o seguinte alinhamento processado pelo AvalIDa:
<LOCAL TIPO="ADMINISTRATIVO">Lisboa</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">Lisboa</LOCAL>]:[Correcto]
Este alinhamento, após ter sido processado pelo Emir, será representado da seguinte forma:
<LOCAL TIPO="ADMINISTRATIVO">Lisboa</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">Lisboa</LOCAL>]:[{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(1.0)}]
Esta avaliação é efectuada para todos os alinhamentos contendo entidades mencionadas. As restantes linhas, sem alinhamentos, são ignoradas (eg a linha 'HAREM-001-00001 PT Web', ou a linha <ALT>) e simplesmente transcritas para a saída do Emir.
Convém nesta altura explicar o significado de cada uma das marcações que são concatenadas aos alinhamentos. Voltando ao nosso exemplo:
<LOCAL TIPO="ADMINISTRATIVO">Lisboa</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">Lisboa</LOCAL>]:[{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(1.0)}]
Constatamos que a informação colocada pelo AvalIDa no alinhamento é retirada (ou seja, [Correcto]), e é introduzida nova informação referente à tarefa de classificação semântica. A nova informação está estruturada num formato que facilita o processamento dos programas AltinaSem e Ida2Sem. Tal como acontecia no AvalIDa, a informação da avaliação é colocada no final do alinhamento, iniciada por dois pontos (:).
A lista da avaliação pode conter um ou mais tuplos em que cada tuplo está envolvida por chavetas ({}). Voltando ao exemplo anterior observamos que só existe um tuplo na lista de avaliações:
{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(1.0)}
Existe um tuplo por cada entidade identificada pelo sistema. Se estivéssemos numa situação em que uma entidade da CD alinhava, por exemplo, com duas entidades identificadas pelo sistema, então teríamos uma lista de avaliações contendo dois tuplos. Por exemplo:
<LOCAL TIPO="ADMINISTRATIVO">Lisboa e Porto</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">Lisboa</LOCAL>, <LOCAL TIPO="GEOGRAFICO">Porto</LOCAL>]:[{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(0.33)}, {Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(0.33)}]
Cada tuplo da lista contem informação sobre as categorias que estão correctas, espúrias e em falta:
Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[])
O mesmo acontecendo para os tipos:
Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO])
O terceiro registo, CSC, contém o valor do Cálculo Semântico Combinado para a entidade em causa de acordo com a definição encontrada na página das Medidas. Finalmente, o registo Peso guarda o peso atribuído à entidade em causa. Na tarefa de identificação o peso (ou seja, um valor numérico que reflecte a correcção do alinhamento) é calculado utilizando a seguinte formula:
0,5 * (nc / nd)
onde:
-
nc - cardinalidade da intersecção dos átomos de duas EMs
-
nd - cardinalidade da reunião dos átomos de duas EMs
Este peso é calculado pelo
AvalIDa e destina-se a pontuar mais justamente as EMs identificadas como parcialmente correctas. Note-se o factor de 0,5 garante a soma dos pesos duas ou mais EMs parcialmente correctas nunca é maior ou igual ao peso atingido por uma EM correcta. Por exemplo imagine o seguinte alinhamento:
<EM>Fundação para Computação Científica Nacional</EM> ---> [<EM>Fundação para Computação Científica</EM>, <EM>Nacional</EM>]
Se o factor de 0,5 não for utilizado o AvalIDa atribuía um peso de 0,8 à primeira entidade identificada e um peso de 0,2 à segunda. Como mais à frente o Ida2id irá utilizar estes pesos para ponderar a contribuição de cada entidade identificada a somar estes dois pesos obtemos um valor de 1. Ou seja, não seria possível distinguir entre um sistema que identificou correctamente uma entidade ou um sistema que identificou parcelas complementares de uma mesma entidade.
No entanto este raciocínio não se aplica no caso da avaliação semântica. Por esse motivo o Emir anula o efeito introduzido pelo factor multiplicando o peso calculado pelo AvalIDa por 2 nos casos em que a identificação é parcial. Como se verifica no caso do exemplo dado, o alinhamento correcto tem um peso de 1.0, mas quando se trata de um alinhamento parcialmente_correcto, a contribuição (no exemplo dado) é de 0.33 para a tarefa de identificação, como por exemplo em:
<LOCAL TIPO="ADMINISTRATIVO">Lisboa</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">Lisboa e Porto</LOCAL>]:[Parcialmente_Correcto_por_Excesso(0.33; 0.67)]
O Emir ao processar este alinhamento multiplica o peso por 2 e guarda esse valor no tuplo respectivo:
<LOCAL TIPO="ADMINISTRATIVO">Lisboa</LOCAL> ---> [<LOCAL TIPO="GEOGRAFICO">Lisboa e Porto</LOCAL>]:[{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[GEOGRAFICO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(0.66)}]
Em relação à avaliação dos tipos, optou-se por só efectuar a avaliação no caso em que a categoria é correctamente identificada, uma vez que se a categoria está errada, também o tipo estará (não existem tipos iguais para categorias diferentes).
Note-se que, no caso de etiquetações complexas utilizando mais do que uma categoria ou tipo, estas são tratadas de forma atómica, como se representassem uma nova categoria:
<ORGANIZACAO|ABSTRACCAO TIPO="SUB|IDEIA">Lisboa</ORGANIZACAO|ABSTRACCAO> ---> [<LOCAL TIPO="ADMINISTRATIVO">Lisboa e Porto e Faro e Braga</LOCAL>]:[{Categoria(Correcto:[] Espúrio:[LOCAL] Em_Falta:[ORGANIZACAO|ABSTRACCAO]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.142)}]
Os alinhamentos com identificações espúrias, como por exemplo:
<ESPURIO>DM-115CS</ESPURIO> ---> [<ABSTRACCAO TIPO="MARCA" MORF="F,S">DM-115CS</ABSTRACCAO>]:[Espúrio]
também são processados bastando ao Emir considerar todas as categorias identificadas como espúrias:
<ESPURIO>DM-115CS</ESPURIO> ---> [<ABSTRACCAO TIPO="MARCA" MORF="F,S">DM-115CS</ABSTRACCAO>]:[{Categoria(Correcto:[] Espúrio:[ABSTRACCAO] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.0)}]
Analogamente o mesmo acontece com as entidades que não foram identificadas:
<LOCAL TIPO="ADMINISTRATIVO" MORF="?,S">Pinheiros</LOCAL> ---> [null]:[Em_Falta]
Neste caso o Emir simplesmente coloca as categorias em falta:
<LOCAL TIPO="ADMINISTRATIVO" MORF="?,S">Pinheiros</LOCAL> ---> [null]:[{Categoria(Correcto:[] Espúrio:[] Em_Falta:[LOCAL]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.0)}]
Escolha do método de avaliação
De acordo com as especificações na página das Medidas existem dois cenários de avaliação:
- Absoluta - Considerando todas as etiquetas da CD, incluindo as que não foram identificadas como correctas ou parcialmente correctas pelo sistema.
- Relativa - Considerando apenas as etiquetas identificadas como correctas ou parcialmente correctas pelo sistema.
Emir permite configurar o tipo de avaliação que se pretende através de um parâmetro na linha de comandos.
O utilização do parâmetro
-relativo sim na invocação do
Emir só irá considerar as etiquetas dos alinhamentos que foram classificados pelo
AvalIDa como correctas ou parcialmente correctas.
Distribuição e Utilização
O Emir é distribuído num ficheiro "Java Archive Resource" (JAR) --Emir.jar-- que inclui o código fonte: Emir.jar.
Para inspeccionar o código basta extrair os ficheiros do arquivo executando o seguinte comando numa shell do seu sistema:
jar -xf Emir.jar
Para invocar o Emir numa máquina com a JVM instalada, execute o comando:
java -Dfile.encoding=ISO-8859-1 -jar Emir.jar -alinhamento saida.avalida.absoluto
Se pretender efectuar a avaliação segundo cenário relativo basta acrescentar o parâmetro relavante aquando da invocação do programa:
java -Dfile.encoding=ISO-8859-1 -jar Emir.jar -alinhamento saida.avalida.absoluto -relativo sim
Os alinhamentos avaliados semanticamente irão ser impressos para o STDOUT. Portanto é conviniente redireccionar a saída do Emir para um ficheiro de forma a que estes resultados possam ser guardados e posteriormente processados pelo AltinaSEM.
Exemplo
A título de exemplo, e para clarificar o funcionamento do
Emir, tomemos o seguinte documento previamente processado pelo
AvalIDa e filtrado pelo
Véu (note-se que os alinhamentos foram numerados, neste documento, de forma a facilitar a referenciação e depuração dos mesmos):
#PESSOA=["GRUPOCARGO", "GRUPOMEMBRO"]; LOCAL=["GEOGRAFICO", "ALARGADO", "ADMINISTRATIVO", "CORREIO"]; ORGANIZACAO=["INSTITUICAO", "ADMINISTRACAO", "EMPRESA", "SUB"]
HAREM-000-00000 PT Web
1.
<LOCAL TIPO="ADMINISTRATIVO" MORF="F,S">Freguesia de Itapecerica</LOCAL> ---> [<LOCAL TIPO="ADMINISTRATIVO">Freguesia de Itapecerica pela Lei Provincial</LOCAL>]:[Parcialmente_Correcto_por_Excesso(0.25; 0.75)]
2.
<LOCAL TIPO="ADMINISTRATIVO" MORF="M,S">Baú</LOCAL> ---> [null]:[Em_Falta]
3.
<LOCAL TIPO="ADMINISTRATIVO" MORF="M,S">Baú</LOCAL> ---> [<LOCAL TIPO="CORREIO" MORF="M,S">Baú</LOCAL>]:[Correcto]
4.
<ESPURIO>Porta da Esperança</ESPURIO> ---> [<LOCAL TIPO="GEOGRAFICO" MORF="F,S">Porta da Esperança</LOCAL>]:[Espúrio]
5.
<ORGANIZACAO TIPO="INSTITUICAO" MORF="M,S">Estado Maior do Exército da República Federal da Alemanha</ORGANIZACAO> ---> [<LOCAL TIPO="ADMINISTRATIVO">Estado Maior</LOCAL>, <LOCAL TIPO="ADMINISTRATIVO">Alemanha</LOCAL>]:[Parcialmente_Correcto_por_Defeito(0.1111111111111111; 0.8888888888888888), Parcialmente_Correcto_por_Defeito(0.05555555555555555; 0.9444444444444444)]
6.
<LOCAL|ORGANIZACAO TIPO="ALARGADO|EMPRESA" MORF="?,S">Planet Dance</LOCAL|ORGANIZACAO> ---> [<ORGANIZACAO TIPO="EMPRESA">Planet</ORGANIZACAO>]:[Parcialmente_Correcto_por_Defeito(0.25; 0.75)]
7.
<PESSOA|ORGANIZACAO TIPO="GRUPOCARGO|SUB" MORF="M,S">Conselho de Administração</PESSOA|ORGANIZACAO> ---> [<ORGANIZACAO TIPO="ADMINISTRACAO">Conselho de Administração</ORGANIZACAO>]:[Correcto]
8.
<ORGANIZACAO|LOCAL TIPO="INSTITUICAO|ALARGADO" MORF="F,S">Prisão de Caxias</ORGANIZACAO|LOCAL> ---> [null]:[Em_Falta]
9.
<ORGANIZACAO|ORGANIZACAO TIPO="ADMINISTRACAO|SUB" MORF="M,S">Conselho Legislativo</ORGANIZACAO|ORGANIZACAO> ---> [<PESSOA TIPO="GRUPOCARGO">Presidentes da Knesset e do Conselho Legislativo</PESSOA>]:[Parcialmente_Correcto_por_Excesso(0.14285714285714285; 0.8571428571428572)]
Após o processamento pelo Emir o resultado obtido é o seguinte:
#PESSOA=["GRUPOCARGO", "GRUPOMEMBRO"]; LOCAL=["GEOGRAFICO", "ALARGADO", "ADMINISTRATIVO", "CORREIO"]; ORGANIZACAO=["INSTITUICAO", "ADMINISTRACAO", "EMPRESA", "SUB"]
HAREM-000-00000 PT Web
1.
<LOCAL TIPO="ADMINISTRATIVO" MORF="F,S">Freguesia de Itapecerica</LOCAL> ---> [<LOCAL TIPO="ADMINISTRATIVO">Freguesia de Itapecerica pela Lei Provincial</LOCAL>]:[{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[ADMINISTRATIVO] Espúrio:[] Em_Falta:[]) CSC(1.75) Peso(0.5)}]
Comentário:
Estamos perante um alinhamento em que as EMs foram correctamente classificadas tanto em relação às categorias como os tipos. Note-se que o Emir só está interessado na classificação semântica do alinhamento e não delimitação/identificação definida para as EMs.
2.
<LOCAL TIPO="ADMINISTRATIVO" MORF="M,S">Baú</LOCAL> ---> [null]:[{Categoria(Correcto:[] Espúrio:[] Em_Falta:[LOCAL]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.0)}]
Comentário:
Como não existe nenhuma EM identificada pelo sistema que alinhe com a EM da CD, a categoria LOCAL é considerada em em falta. Note-se que como a categoria não foi correctamente atribuída, os tipos não são analisados.
3.
<LOCAL TIPO="ADMINISTRATIVO" MORF="M,S">Baú</LOCAL> ---> [<LOCAL TIPO="CORREIO" MORF="M,S">Baú</LOCAL>]:[{Categoria(Correcto:[LOCAL] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[CORREIO] Em_Falta:[ADMINISTRATIVO]) CSC(1.0) Peso(1.0)}]
Comentário:
A categoria está correctamente atribuída, consequentemente os tipos são analisados. Como o tipo considerado pelo sistema, CORREIO, não é o mesmo que está na CD, ADMINISTRATIVO, estes são considerados espúrios e em falta respectivamente.
4.
<ESPURIO>Porta da Esperança</ESPURIO> ---> [<LOCAL TIPO="GEOGRAFICO" MORF="F,S">Porta da Esperança</LOCAL>]:[{Categoria(Correcto:[] Espúrio:[LOCAL] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.0)}]
Comentário:
No caso de alinhamentos espúrios o Emir limita-se a considerar a categoria como espúria.
5.
<ORGANIZACAO TIPO="INSTITUICAO" MORF="M,S">Estado Maior do Exército da República Federal da Alemanha</ORGANIZACAO> ---> [<LOCAL TIPO="ADMINISTRATIVO">Estado Maior</LOCAL>, <LOCAL TIPO="ADMINISTRATIVO">Alemanha</LOCAL>]:[{Categoria(Correcto:[] Espúrio:[LOCAL] Em_Falta:[ORGANIZACAO]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.2222222222222222)}, {Categoria(Correcto:[] Espúrio:[LOCAL] Em_Falta:[ORGANIZACAO]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.1111111111111111)}]
Comentário:
No caso em que uma EM da CD é alinhada com mais do que uma EM identificada pelo sistema são gerados tuplos de avaliação para cada EM identificada.
6.
<LOCAL|ORGANIZACAO TIPO="ALARGADO|EMPRESA" MORF="?,S">Planet Dance</LOCAL|ORGANIZACAO> ---> [<ORGANIZACAO TIPO="EMPRESA">Planet</ORGANIZACAO>]:[{Categoria(Correcto:[ORGANIZACAO] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[EMPRESA] Espúrio:[] Em_Falta:[]) CSC(1.75) Peso(0.5)}]
Comentário:
Quando uma EM na CD é etiquetada com mais do que uma categoria, e o sistema tenha optado por atribuir apenas uma categoria, basta que o sistema acerte uma delas para se considerar correcta. O mesmo aplica-se aos tipos.
7.
<PESSOA|ORGANIZACAO TIPO="GRUPOCARGO|SUB" MORF="M,S">Conselho de Administração</PESSOA|ORGANIZACAO> ---> [<ORGANIZACAO TIPO="ADMINISTRACAO">Conselho de Administração</ORGANIZACAO>]:[{Categoria(Correcto:[ORGANIZACAO] Espúrio:[] Em_Falta:[]) Tipo(Correcto:[] Espúrio:[ADMINISTRACAO] Em_Falta:[SUB]) CSC(1.0) Peso(1.0)}]
Comentário:
Neste alinhamento o sistema consegui acertar uma das categorias mas errou na etiquetação dos tipos dessa categoria. Note-se que só as categorias que pertencem à categoria correcta é que são consideradas.
8.
<ORGANIZACAO|LOCAL TIPO="INSTITUICAO|ALARGADO" MORF="F,S">Prisão de Caxias</ORGANIZACAO|LOCAL> ---> [null]:[{Categoria(Correcto:[] Espúrio:[] Em_Falta:[ORGANIZACAO|LOCAL]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.0)}]
Comentário:
No caso de etiquetações compostas em que nenhuma das categorias foi identificada pelo sistema considera-se a composição de etiquetas em falta.
9.
<ORGANIZACAO|ORGANIZACAO TIPO="ADMINISTRACAO|SUB" MORF="M,S">Conselho Legislativo</ORGANIZACAO|ORGANIZACAO> ---> [<PESSOA TIPO="GRUPOCARGO">Presidentes da Knesset e do Conselho Legislativo</PESSOA>]:[{Categoria(Correcto:[] Espúrio:[PESSOA] Em_Falta:[ORGANIZACAO]) Tipo(Correcto:[] Espúrio:[] Em_Falta:[]) CSC(0.0) Peso(0.2857142857142857)}]
Comentário:
Quando a mesma categoria é utilizada mais do que uma vez de forma a permitir variar os tipos, só a categoria individualmente é que é considerada em falta.