anotações sintáticas

Dada a sentença “O garoto, que mora na rua 12, estava correndo atrás da bola.”, são várias as análises sintáticas possíveis dependendo do formalismo adotado. Estes formalismos dividem-se em duas grandes classes: `phrase-structure` ou `dependencies` mas existem variações entre teorias dentro destas classes. Vejamos dois formalismos de dependências.

O sistema PALAVRAS tem como saída padrão para a análise por dependências da sentença acima, o seguinte trecho:

O [o] <*> <artd> DET M S @>N #1->2
garoto [garoto] <Hbio> N M S @SUBJ> #2->11
, #3->0
que [que] <clb> <clb-fs> <rel> SPEC M S @SUBJ> #4->5
mora [morar] <vK> <mv> <np-close> V PR 3S IND VFIN @FS-N< #5->2
em [em] <sam-> PRP @<SA #6->5
a [o] <-sam> <artd> DET F S @>N #7->8
rua [rua] N F S @P< #8->6
12 [12] <card> NUM M/F P @<SC #9->5
, #10->0
estava [estar] <fmc> <aux> V IMPF 3S IND VFIN @FS-STA #11->0
correndo [correr] <clb> <mv> V GER @ICL-AUX< #12->11
atrás de [atrás=de] <sam-> PRP @<ADVL #13->12
a [o] <artd> <-sam> DET F S @>N #14->15
bola [bola] <cc> <tool> <food-c-h> <act> N F S @P< #15->13
. #16->0

Um parser de dependências treinado com um corpus anotado seguindo o modelo de dependências Universal Dependencies, neste caso o corpus UD_Portuguese (Bosque em UD produzido pelo nosso grupo), produz a seguinte saída para a mesma sentença:

1	O	_	DET	DET	_	2	det	_	_
2	garoto	_	NOUN	NOUN	_	12	nsubj	_	SpaceAfter=No
3	,	_	PUNCT	.	_	5	punct	_	_
4	que	_	PRON	PRON	_	5	nsubj	_	_
5	mora	_	VERB	VERB	_	2	acl:relcl	_	_
6-7	na	_	_	_	_	_	_	_	_
6	en	en	ADP	ADP	_	8	case	_	_
7	a	o	DET	DET	Definite=Def|Gender=Fem|Number=Sing|PronType=Art	8	det	_	_
8	rua	_	NOUN	NOUN	_	5	nmod	_	_
9	12	_	NUM	NUM	NumType=Card	8	appos	_	SpaceAfter=No
10	,	_	PUNCT	.	_	5	punct	_	_
11	estava	_	AUX	AUX	_	12	aux	_	_
12	correndo	_	VERB	VERB	_	0	root	_	_
13	atrás	_	ADV	ADV	_	12	advmod	_	_
14-15	da	_	_	_	_	_	_	_	_
14	de	de	ADP	ADP	_	16	case	_	_
15	a	o	DET	DET	Definite=Def|Gender=Fem|Number=Sing|PronType=Art	16	det	_	_
16	bola	_	NOUN	NOUN	_	13	nmod	_	SpaceAfter=No
17	.	_	PUNCT	.	_	12	punct	_	_

Existem diferenças teóricas e técnicas entre estes dois modelos de dependências. As diferenças teórias são as que caracterizam cada modelo ou formalismo. Por exemplo, em UD, o `root` da sentença, o nó raiz da árvore sintática, é o verbo `correr`. Para o PALAVRAS o root é o verbo `estar` que, alias, não é exatamente o root, porque o root para o PALAVRAS é um nó 0, que não tem nenhum token associado. PALAVRAS identificou `atrás de` como uma MWE funcionando como preposição enquanto UD não fez o mesmo agrupamento. Para o PALAVRAS, todas as pontuações apontam para o root da sentença. Para UD, o tratamento das pontuações não é tão simples. Vale perceber que o parser UDPipe, que usei para produzir a saída acima, errou no desmembramento da contração `na`.

Mas para revisão do corpus, estou agora mais interessado nas diferenças técnicas. Ambas as saídas codificam de forma diferente várias informações: os links de dependência, as POS tags, as features, lemas etc. Ambos representam um token por linha, mas o PALAVRAS apresenta as informações de cada token de uma forma mais `flat`, uma sopa de símbolos, apelando para alguns caracteres especiais que identificam os tipos de cada símbolo. Lema entre conchetes, tags e features em maiusculas, relações sintáticas começam com o símbolo `@` e outras tags sintáticas e semânticas entre `<…>`. Em contrapartida, o formato CoNLL-U adotado por UD propõe que cada informação esteja em uma coluna de um formato tabular. Em UD, as features são explicitamente definidas, por exemplo, `Gender=Fem`. No PALAVRAS o símbolo `F` codifica esta mesma informação.

Pensando na tarefa de revisão de anotações sintáticas, qual formato seria mais adequado para edições? Quais outros formatos possíveis existem? Esta discussÃo é certamente menos relevante se adotarmos uma postura de revisão de corpora centrada no suporte de alguma ferramenta de anotação, como Brat ou Webanno. Mas a verdade é que nenhuma destas ferramentas é tão flexível como a edição direta de arquivos texto com suporte de alguma interface de visualização e `debug` da anotação.