Anotação de Papéis Semânticos: Experimentos
Autor: Erick | Publicado: 2011-08-02T19:04:00-07:00

Na minha última postagem, falei sobre a dificuldade de se definir um conjunto de papéis semânticos. Falei também sobre os papéis definidos em frames, que possuem aplicações reais, mas a maioria dos trabalhos de identificação automática usa as definições do PropBank.


Um parênteses, antes de explicar o PropBank: pretendo manter o foco deste blog na língua portuguesa, mas nessa postagem vou tratar de recursos e exemplos em inglês. Ainda não temos quase nada pronto para a anotação automática de papéis semânticos em português, mas minha pesquisa e outras do&nbsp;NILC&nbsp;vão preencher esta lacuna


O PropBank é um projeto ambicioso. Ele&nbsp;define os papéis (ou argumentos) que podem aparecer com&nbsp;mais de 3000 verbos do inglês. E não é só isso: para os verbos com mais de um significado (que são vários), existe um conjunto de argumentos para cada um deles.&nbsp;


Um ponto negativo do PropBank é que, por causa da sua filosofia, os papéis semânticos não têm nomes intuitivos e naturais como agente&nbsp;ou paciente, mas apenas números: Arg0, Arg1, Arg2, etc. O significado de cada um deles depende do verbo que estão acompanhando. Apenas alguns argumentos bem genéricos como Local&nbsp;ou Tempo&nbsp;servem para todos os verbos.&nbsp;Vou ilustrar com um caso em particular.


O primeiro sentido do verbo feed&nbsp;no PropBank possui 3 possíveis argumentos: Arg0&nbsp;é quem alimenta, Arg1&nbsp;é a "comida" (que pode ser metafórica) e Arg2&nbsp;é o alimentado. Numa exemplo do próprio PropBank:
Lotus Development Corp. feeds its evaluations into a computer, but&nbsp;only for storage; the decisions are made by supervisors.&nbsp;Os três elementos marcados são, respectivamente, Arg0, Arg1&nbsp;e Arg2.


Acho que deu pra ter uma ideia geral de como a coisa funciona. Agora vou mostrar o que podemos de fato fazer com os tais papéis semânticos.


Usei aqui o SENNA, um software distribuído gratuitamente e que pode ser encontrado&nbsp;aqui.&nbsp;Como quase todos os sistemas de anotação de papéis semânticos, ele é baseado em aprendizado de máquina supervisionado - quer dizer, primeiro ele foi treinado com exemplos de frases contendo as marcações certas, e a partir daí aprendeu a detectar padrões.


Para os mais interessados, há&nbsp;este artigo&nbsp;que explica o desenvolvimento do sistema. Eu mesmo entendi bem pouco, tamanha foi a engenhosidade dos seus criadores, e pretendo ler novamente. Mas vamos ver o que ele nos oferece.


Escrevi um script Python que pega a saída produzida pelo SENNA e junta com as informações fornecidas pelo PropBank. No final, o sistema mostra todos os verbos que encontrou na frase e seus respectivos argumentos com breves descrições.&nbsp;


Peguei algumas frases do site da CNN para ver no que dá. Primeira:
"No one should pretend that they have solved anything other than an artificial political crisis," said Bob Bixby, executive director of the Concord Coalition, a nonpartisan deficit watchdog group.E o resultado:


Verbo: solve
Argumentos:
Arg0  (solver): they
Arg1  (the problem): anything other than an artificial political crisis

Verbo: pretend
Argumentos:
Arg0  (pretender): " No one
Arg1  (premise): that they have solved anything other than an artificial political crisis
ArgM-MOD  (modal): should

Verbo: say
Argumentos:
Arg0  (Sayer): Bob Bixby , executive director of the Concord Coalition , a nonpartisan deficit watchdog group
Arg1  (Utterance): " No one should pretend that they have solved anything other than an artificial political crisis


A não ser pelas aspas finais, a meu ver o SENNA acertou tudo aqui. Mais uma: 
Malone added that NASA is trying to develop a plan to recover the item, but it could take weeks to get it.
Verbo: add
Argumentos:
Arg0  (speaker): Malone
Arg1  (utterance): that NASA is trying to develop a plan to recover the item

Verbo: develop
Argumentos:
Arg0  (speaker): NASA
Arg1  (non-intentional theme): a plan to recover the item

Verbo: get
Argumentos:
Arg1  (thing gotten): it.

Verbo: recover
Argumentos:
Arg0  (entity getting something): NASA
Arg1  (thing gotten): the item

Verbo: take
Argumentos:
Arg0  (Taker): it
Arg1  (thing taken): weeks
ArgM-MOD  (modal): could
ArgM-PNC  (purpose): to get it.

Verbo: try
Argumentos:
Arg0  (Agent/Entity Trying): NASA
Arg1  (thing tried): to develop a plan to recover the item


Agora o resultado já não foi tão claro. Faltou dizer que a NASA é um argumento de get, e o verbo develop&nbsp;pelo visto não está com seu sentido correto. Aliás, esse é outra dificuldade da tarefa: eu não usei nenhum tipo de desambiguação para os verbos. Se usasse, os resultados tenderiam a ser um pouco melhores.


Mesmo assim, o sistema acerta a maioria dos argumentos, mesmo em frases relativamente grandes e complexas. Isso é certamente um bom sinal para a pesquisa de PLN.&nbsp;


Cheguei a testar o sistema com frases de textos infantis, mas não achei que houve uma melhora real. Ainda que costumem ser menos elaborados, possuem também muitas metáforas, além de um estilo e vocabulário que o sistema não está acostumado (parece engraçado falar assim, mas é a verdade, já que ele foi treinado com textos jornalísticos).


O post já está ficando grande demais, mas vou deixar esse último exemplo:

One very windy day the stagecoach arrived in town with an unusual passenger. (...)&nbsp;I had seen pictures of Abraham Lincoln and that is who this man reminded me of, although I knew Abraham Lincoln would not have been wearing a preacher's clothes.
Verbo: arrive
Argumentos:
Arg1  (entity in motion / 'comer'): the stagecoach
Arg4  (end point, destination): in town with an unusual passenger
ArgM-TMP  (when): One very windy day

Verbo: wear
Argumentos:
Arg1  (clothing): a preacher 's clothes
ArgM-MOD  (modal): would
ArgM-NEG  (negation): not

Verbo: see
Argumentos:
Arg0  (viewer): I
Arg1  (thing viewed): pictures of Abraham Lincoln

Verbo: know
Argumentos:
Arg0  (knower): I
Arg1  (thing known or thought): Abraham Lincoln would not have been wearing a preacher 's clothes

Verbo: remind
Argumentos:
Arg0  (cause, agent): this man
Arg2  (recipient): me of


Por hoje fico por aqui. Espero escrever um novo post parecido com este no futuro próximo, dessa vez totalmente em português.