Open leoalenc opened 3 years ago
Obrigado @leoalenc , de fato, encontrei vários outros casos com o comando:
cat *.conllu | udapy -q util.Eval node='if node.feats["Gender"] != node.parent.feats["Gender"] and node.upos == "ADJ": node.parent.draw()'
Curioso, não estamos conseguindo ensinar para os parsers a regra simples da gramática do POR sobre concordência de gênero entre substantivo e adjetivo! Com o comando abaixo temos o número de casos:
% cat *.conllu | udapy -q util.Eval node='if node.feats["Gender"] != node.parent.feats["Gender"] and node.upos == "ADJ" and node.deprel == "amod": print(node)' | wc -l
212
Vou manter este issue aberto e generalizar o problema. Em tempo, é sempre melhor inspecionar e trabalhar no branch workbench
, onde os arquivos estão na pasta documents
separador por notícia.
Casos mais curiosos são:
CP837-3 De facto, é necessário uma certa dose de fé para considerar o uso do DIU, admite Debra Bronstein, vice-presidente responsável pelo «marketing» na GynoPharma.
Neste caso, vice-presidente está Fem
apenas porque o anotador fez a concordância com o nome Debra
. Faz sentido? Ou deveríamos omitir para vice-presidente
e responsável
o Gender=Fem
?
@arademaker , esse caso é mesmo interessante! Estou surpreso com a quantidade de casos. Anotei a dica sobre o melhor ramo no qual se trabalhar.
Casos mais curiosos são:
CP837-3 De facto, é necessário uma certa dose de fé para considerar o uso do DIU, admite Debra Bronstein, vice-presidente responsável pelo «marketing» na GynoPharma.
Neste caso, vice-precidente está
Fem
apenas porque o anotador fez a concordância com o nomeDebra
. Faz sentido? Ou deveríamos omitir paravice-presidente
eresponsável
oGender=Fem
?
Sim, @arademaker, a construção em questão é um aposto, e a regra para apostos na língua portuguesa (e em várias outras línguas, como o alemão) é que concordam com o antecedente. Vejamos:
admite o deputado, diretor do hospital e encarregado pelo programa admite a deputada, diretora do hospital e encarregada pelo programa admite o deputado, diretora do hospital e encarregada pelo programa admite a deputada, diretor do hospital e encarregado pelo programa
Desse modo, é correta, ao meu ver, a atribuição de traço de gênero aos dependentes apositivos de um núcleo em consonância com o traço de gênero deste. Numa gramática baseada em unificação o aposto apresentaria os mesmos traços que o núcleo regente, mesmo quando o núcleo do aposto for subespecificado.
Boa. Temos então uma regra interessante. Não apenas um adj precisa concordar com o noun que ele modifica via amod, mas também a relação de appos precisa propagar concordância.
Boa. Temos então uma regra interessante. Não apenas um adj precisa concordar com o noun que ele modifica via amod, mas também a relação de appos precisa propagar concordância.
@arademaker, um ADJ deve concordar também com o seu nsubj:
A menina é bonita. Ela é simples.
@arademaker, outro caso de concordância do ADJ é este:
acho essa solução mais barata acho essa solução mais simples essa solução parece simples essa solução parece complicada
Nesse tipo de construção, o ADJ é o núcleo de um xcomp, devendo concordar com o seu sujeito. Em UD, porém, não é expressa a relação de um xcomp com o seu sujeito, diferentemente do que ocorre numa análise gerada por uma gramática em HPSG ou LFG que modela a relação de controle obrigatório.
As duas primeiras não são xcomp são? Ou vc as colocou exatamente para contrastar como as duas últimas?
Em tempo, até agora vejo então umas regras interessantes para detectar inconsistências mas não temos como automaticamente corrigir. Quando existir diferença, teremos que manualmente decidir pela análise do head ou do dependente.
As duas primeiras não são xcomp são? Ou vc as colocou exatamente para contrastar como as duas últimas?
@arademaker, ao meu ver, em todos esses exemplos temos o ADJ como núcleo que exerce a função xcomp dos verbos achar e parecer, respectivamente. Veja os exemplos análogos em inglês na documentação de UD. Não considero parecer mero verbo de ligação como ser.
Em tempo, até agora vejo então umas regras interessantes para detectar inconsistências mas não temos como automaticamente corrigir. Quando existir diferença, teremos que manualmente decidir pela análise do head ou do dependente.
@arademaker, o núcleo (em inglês, head) determina as propriedades do dependente com o qual estabelece relação de concordância. Portanto, a análise que deve prevalecer normalmente é a do núcleo, caso esteja completamente especificado. Haverá situações, contudo, em que o inverso ocorrerá:
Palhaços são alegres.
No núcleo palhaços, temos NOUN/Gender=Masc|Number=Plur. Admitindo um léxico em que a forma alegres não é especificada para gênero, numa gramática de unificação normalmente vamos ter também NOUN/Gender=Masc|Number=Plur na representação do adjetivo. O melhor é incluirmos esse item na pauta de uma próxima conversa nossa ao vivo, pois envolve a própria concepção desse nível de um treebank no formato UD constituído pelos traços morfossintáticos. Por outro lado, seria interessante demonstrar no LKB como isso tudo funciona numa gramática HPSG.
Correto, mas no corpus podem haver erros no head, talvez possamos olhar uma amostra ver se os casos. ~Além disso, para a relação appos a propagação não é clara, podemos adotar que o token mais à esquerda dita a concordância.~ correção, antecedente rege a relação, dito acima.
O caso da cópula onde o head é o adj é interessante. Segue a discussão do "syntactic theory" do subj se comportar como determinante, certo?
@leoalenc , o @wellington36 achou este caso também. Podemos deixar para considerar NUM depois, mas esta analise também sugere casos de dois saltos, um token que tem que concordar em outro que não é ligado à ele imediatamente mas intermediado por algum outro:
@leoalenc com este comando podemos pegar os casos em que o ADJ não concorda em Gender ou Number com o parent.
cat *.conllu | udapy -q util.Eval node='if (node.feats["Gender"] != node.parent.feats["Gender"] and node.upos == "ADJ" and node.deprel == "amod") or (node.feats["Number"] != node.parent.feats["Number"] and node.upos == "ADJ" and node.deprel == "amod"): print(node)' | wc -l
284
Mas tem os casos como ditos no comentário acima onde o ADJ ou o NOUN pode não ter Gender ou Number, com este comando tiro estes casos, mas é melhor analisar antes de ignorar eles.
cat *.conllu | udapy -q util.Eval node='if (node.feats["Gender"] != node.parent.feats["Gender"] and node.upos == "ADJ" and node.deprel == "amod" and node.parent.feats["Gender"] != "" and node.feats["Gender"] != "") or (node.feats["Number"] != node.parent.feats["Number"] and node.upos == "ADJ" and node.deprel == "amod" and node.parent.feats["Gender"] != "" and node.feats["Gender"] != ""): print(node)' | wc -l
194
@wellington36 , o problema já está claro, e o uso da udapy também já exemplifiquei acima. A questão agora é corrigirmos com as regras acima apresentadas. Elas estão claras para você? Como vc está pensando em implementar o código que irá corrigir os casos ?
O problema desta tarefa é que as vezes miramos em um problema e acertamos outro. Rodando o que seria nosso caso mais simples acima, ADJ modificando NOUN com divergência em Gender/Number, temos:
% cat *.conllu | udapy -q util.Eval node='if (node.upos == "ADJ" and node.deprel == "amod" and node.parent.upos == "NOUN" and node.feats["Gender"] != node.parent.feats["Gender"] and node.feats["Number"] != node.parent.feats["Number"]): print(node)'
<CF24-3#13, grandes>
<CF27-2#15, duradouros>
<CF149-1#8, diária>
<CF170-4#9, completa>
<CF377-1#14, holandes>
<CF483-4#20, gratuitos>
<CF506-3#23, imparciais>
<CF968-2#15, capazes>
<CP42-3#9, recente>
<CP44-4#15, excessiva>
<CP66-4#23, trémula>
<CP115-11#8, contente>
<CP139-4#23, dispostas>
<CP149-6#14, locais>
<CP190-2#17, temporal>
<CP271-7#8, fascinantes>
<CP372-2#26, público>
<CP395-3#31, novas>
<CP582-2#40, primários>
<CP697-1#42, rodoviários>
<CP831-4#4, livres>
<CP910-5#18, médias>
<CP987-2#8, permanentes>
Olhando o primeiro caso, surpresa, a árvore estava errada, o ADJ grandes
estava modificando safra
(dai a falta de concordância) e não os estragos
. Corrigi a árvore aproveitando para resolver outro problema, tokenização de 1994/95
que para mim é uma conjunção de dois anos: 1994 e 1995.
A árvore final é:
CF24-3 A seca que atingiu as áreas produtoras de grãos não deve causar grandes estragos na safra 1994/95.
─┮
│ ╭─╼ A DET det 1 2
│ ╭─┾ seca NOUN nsubj 2 11
│ │ │ ╭─╼ que PRON nsubj 3 4
│ │ ╰─┾ atingiu VERB acl:relcl 4 2
│ │ │ ╭─╼ as DET det 5 6
│ │ ╰─┾ áreas NOUN obj 6 4
│ │ ├─╼ produtoras ADJ amod 7 6
│ │ │ ╭─╼ de ADP case 8 9
│ │ ╰─┶ grãos NOUN nmod 9 6
│ ├─╼ não ADV advmod 10 11
╰─┾ deve VERB root 11 0
╰─┮ causar VERB xcomp 12 11
│ ╭─╼ grandes ADJ amod 13 14
├─┶ estragos NOUN obj 14 12
│ ╭─╼ em ADP case 15 17
│ ├─╼ a DET det 16 17
├─┾ safra NOUN obl 17 12
│ ╰─┮ 1994 NUM nummod 18 17
│ │ ╭─╼ / PUNCT punct 19 20
│ ╰─┶ 95 NUM conj 20 18
╰─╼ . PUNCT punct 21 12
E o mesmo comando acima já não retorna este sentença:
% cat *.conllu | udapy -q util.Eval node='if (node.upos == "ADJ" and node.deprel == "amod" and node.parent.upos == "NOUN" and node.feats["Gender"] != node.parent.feats["Gender"] and node.feats["Number"] != node.parent.feats["Number"]): print(node)'
<CF27-2#15, duradouros>
<CF149-1#8, diária>
...
Note ainda que minha busca foi mais simples que a sua:
if (node.upos == "ADJ" and node.deprel == "amod" and node.parent.upos == "NOUN" and
node.feats["Gender"] != node.parent.feats["Gender"] and
node.feats["Number"] != node.parent.feats["Number"]):
print(node)
Os dois casos seguintes também foram erros nas árvores sintáticas.
CF377-1 Já os quatro leilões realizados durante a Expomilk venderam 124 cabeças de raças holandes, jersei, pardo-suíço e girolanda.
Um caso onde a concordância não está correta porque talvez seja mesmo uma sentença agramatical? e no corpus não queremos corrigir isso... @leoalenc ?
Outro caso @leoalenc :
CF483-4 Geralmente procurados por estudantes adolescentes, esses serviços são abertos a qualquer interessado e têm a vantagem de ser gratuitos ou cobrar preços baixos se comparados aos de empresas de consultoria.
gratuitos estava como amod
de vantagem... a copula modificando o substantivo. Troquei para acl
?!
─┮
│ ╭─╼ Geralmente ADV advmod 1 2
│ ╭─┾ procurados VERB acl 2 8
│ │ │ ╭─╼ por ADP case 3 4
│ │ ├─┾ estudantes NOUN obl:agent 4 2
│ │ │ ╰─╼ adolescentes ADJ amod 5 4
│ │ ╰─╼ , PUNCT punct 6 2
│ ├─╼ esses DET det 7 8
│ ╭─┶ serviços NOUN nsubj:pass 8 10
│ ├─╼ são AUX aux:pass 9 10
╰─┾ abertos VERB root 10 0
│ ╭─╼ a ADP case 11 13
│ ├─╼ qualquer DET det 12 13
├─┶ interessado NOUN obj 13 10
│ ╭─╼ e CCONJ cc 14 15
├─┾ têm VERB conj 15 10
│ │ ╭─╼ a DET det 16 17
│ ├─┾ vantagem NOUN obj 17 15
│ │ │ ╭─╼ de SCONJ mark 18 20
│ │ │ ├─╼ ser AUX cop 19 20
│ │ ╰─┾ gratuitos ADJ acl 20 17
│ │ │ ╭─╼ ou CCONJ cc 21 22
│ │ ╰─┾ cobrar VERB conj 22 20
│ │ ╰─┮ preços NOUN obj 23 22
│ │ ╰─╼ baixos ADJ amod 24 23
│ │ ╭─╼ se SCONJ mark 25 26
│ ╰─┾ comparados VERB advcl 26 15
│ │ ╭─╼ a ADP case 27 28
│ ╰─┾ os PRON obj 28 26
│ │ ╭─╼ de ADP case 29 30
│ ╰─┾ empresas NOUN nmod 30 28
│ │ ╭─╼ de ADP case 31 32
│ ╰─┶ consultoria NOUN nmod 32 30
╰─╼ . PUNCT punct 33 10
No commit 49bc94b55772cc2c04ab4430d1d5805ec23c1c31, mais casos de análises sintáticas erradas (attachment errado) e mais um caso de tokenização errada corrigidos. Apenas um caso de feature errada corrigida.
O caso da cópula onde o head é o adj é interessante. Segue a discussão do "syntactic theory" do subj se comportar como determinante, certo?
@arademaker, sim, na HPSG, seguindo a teoria X-barra, há um paralelismo entre determinantes e sujeitos, expresso no fato de ocuparem a posição de especificador.
@leoalenc , o @wellington36 achou este caso também. Podemos deixar para considerar NUM depois, mas esta analise também sugere casos de dois saltos, um token que tem que concordar em outro que não é ligado à ele imediatamente mas intermediado por algum outro:
@arademaker e @wellington36, na expressão R$ 615,7 mil, equivalentes a [...], o ADJ é um aposto, que naturalmente concorda em número com o numeral, maior que um. Quanto ao gênero masculino, parece decorrer a unidade monetária real. Vejamos:
Comprei 100 rúpias, necessárias (?necessários) para comprar o ingresso.
CF377-1 Já os quatro leilões realizados durante a Expomilk venderam 124 cabeças de raças holandes, jersei, pardo-suíço e girolanda.
Um caso onde a concordância não está correta porque talvez seja mesmo uma sentença agramatical? e no corpus não queremos corrigir isso... @leoalenc ?
@arademaker, talvez ocorra aí a chamada concordância ideológica com o termo subentendido gado, ou seja, raça de gado. Sugiro não corrigir, se foi isso mesmo que o jornalista escreveu, apesar da gramaticalidade (sob a ótica da língua padrão) discutível.
Outro caso @leoalenc :
CF483-4 Geralmente procurados por estudantes adolescentes, esses serviços são abertos a qualquer interessado e têm a vantagem de ser gratuitos ou cobrar preços baixos se comparados aos de empresas de consultoria.
gratuitos estava como
amod
de vantagem... a copula modificando o substantivo. Troquei paraacl
?!─┮ │ ╭─╼ Geralmente ADV advmod 1 2 │ ╭─┾ procurados VERB acl 2 8 │ │ │ ╭─╼ por ADP case 3 4 │ │ ├─┾ estudantes NOUN obl:agent 4 2 │ │ │ ╰─╼ adolescentes ADJ amod 5 4 │ │ ╰─╼ , PUNCT punct 6 2 │ ├─╼ esses DET det 7 8 │ ╭─┶ serviços NOUN nsubj:pass 8 10 │ ├─╼ são AUX aux:pass 9 10 ╰─┾ abertos VERB root 10 0 │ ╭─╼ a ADP case 11 13 │ ├─╼ qualquer DET det 12 13 ├─┶ interessado NOUN obj 13 10 │ ╭─╼ e CCONJ cc 14 15 ├─┾ têm VERB conj 15 10 │ │ ╭─╼ a DET det 16 17 │ ├─┾ vantagem NOUN obj 17 15 │ │ │ ╭─╼ de SCONJ mark 18 20 │ │ │ ├─╼ ser AUX cop 19 20 │ │ ╰─┾ gratuitos ADJ acl 20 17 │ │ │ ╭─╼ ou CCONJ cc 21 22 │ │ ╰─┾ cobrar VERB conj 22 20 │ │ ╰─┮ preços NOUN obj 23 22 │ │ ╰─╼ baixos ADJ amod 24 23 │ │ ╭─╼ se SCONJ mark 25 26 │ ╰─┾ comparados VERB advcl 26 15 │ │ ╭─╼ a ADP case 27 28 │ ╰─┾ os PRON obj 28 26 │ │ ╭─╼ de ADP case 29 30 │ ╰─┾ empresas NOUN nmod 30 28 │ │ ╭─╼ de ADP case 31 32 │ ╰─┶ consultoria NOUN nmod 32 30 ╰─╼ . PUNCT punct 33 10
@arademaker, concordo, é acl. O que me parece questionável é a seguinte análise:
são AUX aux:pass 9 10
╰─┾ abertos VERB root 10 0
Não me parece que tenhamos voz passiva nesse caso. Eu analisaria abertos como ADJ.
Não me parece que tenhamos voz passiva nesse caso. Eu analisaria abertos como ADJ.
@leoalenc, correto, uma cópula. Não tinha prestado a devida atenção.
CP190-2 R. -- Há muito que defendo que os acordos de concertação social devem ultrapassar as dimensões temporal e de conteúdo que têm tido.
Não parece errado dimensões X e Y
. Mas nossa regra de ADJ -> NOUN
onde ADJ deve concordar com NOUN aqui daria um falso positivo.
Outro caso de possível condicional na regra. O token fascinantes
modifica não o token povo
, mas toda a subtree que povo
é HEAD.
CP271-7 «É um povo e uma época fascinantes.
─┮
│ ╭─╼ « PUNCT punct 1 4
│ ├─╼ É AUX cop 2 4
│ ├─╼ um DET det 3 4
╰─┾ povo NOUN root 4 0
│ ╭─╼ e CCONJ cc 5 7
│ ├─╼ uma DET det 6 7
├─┶ época NOUN conj 7 4
├─╼ fascinantes ADJ amod 8 4
╰─╼ . PUNCT punct 9 4
CP190-1 P. -- Qual foi a opinião que já exprimiu aos parceiros (e ao Governo) sobre a concertação estratégica proposta pelo «Plano Cavaco»?
O primeiro token, provavelmente abreviação do nome de uma pessoa, curiosamente está com anotação de Gender, mas nada temos na sentença para suportar esta análise.
CF17-2 Um dos injustiçados é Alfredo Volpi, que recebe apenas um painel, com cinco telas que servem para ilustrar sua «evolução» de figurativo a abstrato.
como analisar evolução de figurativo à abstrato
?
─┮
╰─┮ Um NUM root 1 0
│ ╭─╼ de ADP case 2 4
│ ├─╼ os DET det 3 4
├─┶ injustiçados NOUN nmod 4 1
├─╼ é AUX cop 5 1
├─┮ Alfredo PROPN nsubj 6 1
│ ├─╼ Volpi PROPN flat:name 7 6
│ │ ╭─╼ , PUNCT punct 8 10
│ │ ├─╼ que PRON nsubj 9 10
│ ╰─┾ recebe VERB acl:relcl 10 6
│ │ ╭─╼ apenas ADV advmod 11 12
│ │ ╭─┶ um NUM nummod 12 13
│ ╰─┾ painel NOUN obj 13 10
│ ├─╼ , PUNCT punct 14 13
│ │ ╭─╼ com ADP case 15 17
│ │ ├─╼ cinco NUM nummod 16 17
│ ╰─┾ telas NOUN nmod 17 13
│ │ ╭─╼ que PRON nsubj 18 19
│ ╰─┾ servem VERB acl:relcl 19 17
│ │ ╭─╼ para SCONJ mark 20 21
│ ╰─┾ ilustrar VERB advcl 21 19
│ │ ╭─╼ sua DET det 22 24
│ │ ├─╼ « PUNCT punct 23 24
│ ╰─┾ evolução NOUN obj 24 21
│ ├─╼ » PUNCT punct 25 24
│ │ ╭─╼ de ADP case 26 27
│ ├─┶ figurativo ADJ amod 27 24
│ │ ╭─╼ a ADP case 28 29
│ ╰─┶ abstrato ADJ amod 29 24
╰─╼ . PUNCT punct 30 1
caso interessante:
CF106-1 Revista tem fotos pornô de Harding
% rg "^pornô\t" ~/work/morpho-br/adjectives/*
/Users/ar/work/morpho-br/adjectives/adjectives-ad.dict
31014:pornô pornô+A+F+SG
31015:pornô pornô+A+M+SG
─┮
│ ╭─╼ Revista NOUN nsubj 1 2
╰─┾ tem VERB root 2 0
╰─┮ fotos NOUN obj 3 2
├─╼ pornô ADJ amod 4 3
│ ╭─╼ de ADP case 5 6
╰─┶ Harding PROPN nmod 6 3
«Somos obrigados a tornar os nossos programas o mais interessantes possível, num ambiente onde existem múltiplas escolhas», refere Victor Neufeld, o produtor executivo do programa 20/20, da ABC, citado pela Associated Press.
Como analisaria o mais interessantes possível
em CP223-1.
╭─╼ a SCONJ _ mark
─┾ tornar VERB VerbForm=Inf xcomp
│ ╭─╼ os DET Definite=Def|Gender=Masc|Number=Plur|PronType=Art det
│ ┢─╼ nossos DET Gender=Masc|Number=Plur|PronType=Prs det
┡─┶ programas NOUN Gender=Masc|Number=Plur obj
│ ╭─╼ o DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art det
│ ┢─╼ mais ADV _ advmod
┡─┾ interessantes NOUN Gender=Masc|Number=Plur xcomp
│ ╰─╼ possível ADJ Gender=Masc|Number=Sing amod
│ ╭─╼ , PUNCT _ punct
│ ┢─╼ em ADP _ case
│ ┢─╼ um DET Definite=Ind|Gender=Masc|Number=Sing|PronType=Art det
╰─┾ ambiente NOUN Gender=Masc|Number=Sing obl
│ ╭─╼ onde PRON Gender=Masc|Number=Sing|PronType=Rel obl
╰─┾ existem VERB Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin acl:relcl
│ ╭─╼ múltiplas ADJ Gender=Fem|Number=Plur amod
╰─┶ escolhas NOUN Gender=Fem|Number=Plur nsubj
Uma verdade subjectiva incorporada através de normas sociais e, inversa e complementarmente, práticas sociais que avaliam do grau de integração de cada um.
Como analisaria e, inversa e complementarmente
em CP458-6.
╭─╼ de ADP _ case
─┾ normas NOUN Gender=Fem|Number=Plur obl
┡─╼ sociais ADJ Gender=Fem|Number=Plur amod
│ ╭─╼ e CCONJ _ cc
│ ┢─┮ inversa ADJ Gender=Fem|Number=Sing amod
│ │ │ ╭─╼ e CCONJ _ cc
│ │ ╰─┶ complementarmente ADV _ conj
│ ┢─╼ , PUNCT _ punct
╰─┾ práticas NOUN Gender=Fem|Number=Plur conj
┡─╼ sociais ADJ Gender=Fem|Number=Plur amod
│ ╭─╼ que PRON Gender=Fem|Number=Plur|PronType=Rel nsubj
╰─┾ avaliam VERB Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin acl:relcl
│ ╭─╼ de ADP _ case
│ ┢─╼ o DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art det
╰─┾ grau NOUN Gender=Masc|Number=Sing obj
│ ╭─╼ de ADP _ case
╰─┾ integração NOUN Gender=Fem|Number=Sing nmod
│ ╭─╼ de ADP _ case
╰─┾ cada DET Gender=Masc|Number=Sing nmod
╰─╼ um NUM NumType=Card fixed ```
Ao que tudo indica, o modo de subsistência do casal consistia na publicação de anúncios -- no «Jornal de Notícias» e no semanário «Expresso» -- de emprego fictícios, relacionados com actividades agrícolas no estrangeiro, nomeadamente em Inglaterra.
Como anaalisaria de emprego fictícios
em CP568-4
text = na publicação de anúncios -- no «Jornal de Notícias» e no semanário «Expresso» -- de emprego fictícios, relacionados com actividades agrícolas no estrangeiro, nomeadamente em Inglaterra
╭─╼ em ADP _ case
┢─╼ a DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art det
─┾ publicação NOUN Gender=Fem|Number=Sing obj
│ ╭─╼ de ADP _ case
┡─┶ anúncios NOUN Gender=Masc|Number=Plur nmod
│ ╭─╼ -- PUNCT _ punct
│ ┢─╼ em ADP _ case
│ ┢─╼ o DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art det
│ ┢─╼ « PUNCT _ punct
┡─┾ Jornal PROPN Gender=Masc|Number=Sing nmod
│ │ ╭─╼ de ADP _ case
│ ┡─┶ Notícias PROPN Number=Sing nmod
│ │ ╭─╼ » PUNCT _ punct
│ │ ┢─╼ e CCONJ _ cc
│ │ ┢─╼ em ADP _ case
│ │ ┢─╼ o DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art det
│ ┡─┾ semanário NOUN Gender=Masc|Number=Sing conj
│ │ │ ╭─╼ « PUNCT _ punct
│ │ ╰─┾ Expresso PROPN Gender=Masc|Number=Sing appos
│ │ ╰─╼ » PUNCT _ punct
│ ╰─╼ -- PUNCT _ punct
│ ╭─╼ de ADP _ case
╰─┾ emprego NOUN Gender=Masc|Number=Sing nmod
┡─╼ fictícios ADJ Gender=Masc|Number=Plur amod
│ ╭─╼ , PUNCT _ punct
╰─┾ relacionados VERB Gender=Masc|Number=Plur|VerbForm=Part acl
│ ╭─╼ com ADP _ case
╰─┾ actividades NOUN Gender=Fem|Number=Plur obl
┡─╼ agrícolas ADJ Gender=Fem|Number=Plur amod
│ ╭─╼ em ADP _ case
│ ┢─╼ o DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art det
╰─┾ estrangeiro NOUN Gender=Masc|Number=Sing nmod
│ ╭─╼ , PUNCT _ punct
│ ┢─╼ nomeadamente ADV _ advmod
│ ┢─╼ em ADP _ case
╰─┶ Inglaterra PROPN Gender=Fem|Number=Sing nmod
Uma analise que pensei foi pensar no "--" como um abre e fecha parenteses, ou seja, o "no «Jornal de Notícias» e no semanário «Expresso»" seria algo extra e o sentido da sentença se mantém apenas com "Ao que tudo indica, o modo de subsistência do casal consistia na publicação de anúncios de emprego fictícios, relacionados com actividades agrícolas no estrangeiro, nomeadamente em Inglaterra." dessa forma parece fazer mais sentido "fictícios" ser ADJ de "anúncios".
@wellington36 , este issue sobre a correção e identificação de erros no agreements de ADJ e NOUN, minha sugestão é que casos pontuais virem issues separados, individuais. No caso acima, penso que fictícios podem ser mesmo os empregos. Commit 9d475b36a corrigi a sentença.
Do último PR agora faltam 80 casos que fora divididos em categorias:
(CF17-2#27, figurativo), (CF17-2#29, abstrato), (CF74-1#2, VIRGEM), (CF106-1#4, pornô), (CF182-1#1, Querido), (CF245-2#11, superior), (CF426-2#15, trivial), (CF506-3#23, imparciais), (CF833-2#21, financeiro), (CP103-2#6, contíguas), (CP190-2#17, temporal), (CP223-1#12, possível), (CP258-5#14, última), (CP568-4#38, fictícios), (CP616-2#74, financeiros), (CP726-3#30, similar), (CP883-6#20, restantes)
(CP52-12#16, móvel), (CP211-1#11, restritas), (CP605-3#33, directivo), (CP759-2#65, superiores), (CP764-5#7, política), (CP890-1#13, primeiro), (CP908-1#6, antiacidez), (CP968-8#59, industrial), (CP973-5#29, respeitante)
(CP187-2#67, nova), (CP211-4#16, primeiro), (CP268-2#31, responsável), (CP367-2#45, grande), (CP395-5#23, diversas), (CP457-8#12, última), (CP541-3#15, superior), (CP558-3#46, argelinas), (CP595-3#24, dispostos), (CP632-7#13, acidentado), (CP751-3#1, Discreto), (CP868-1#10, segunda)
(CF38-2#19, médio), (CF66-4#20, 1º.), (CF377-1#14, holandes), (CF683-2#18, II), (CP232-4#4, francês), (CP290-4#33, XVII), (CP308-4#4, segundo), (CP396-1#30, petrolífero), (CP450-10#29, mesmo), (CP458-5#18, XVI), (CP477-4#28, 4º), (CP645-10#26, central), (CP667-4#16, segundo), (CP733-1#64, Khmer), (CP843-2#57, educativa)
(CF125-3#21, baratos), (CF649-5#23, intensos), (CP271-7#8, fascinantes), (CP396-1#42, paisagísticos), (CP419-1#22, respectivos), (CP448-4#13, passados), (CP497-5#6, russas), (CP543-2#57, municipais), (CP709-5#29, locais), (CP831-4#4, livres), (CP895-22#21, políticas), (CP987-2#8, permanentes)
(CF304-1#30, quartas), (CF840-5#16, cover), (CP786-2#26, antiaborto), (CP798-1#7, pró-referendo), (CP968-8#22, hard-core)
(CF754-3#35, responsável), (CP161-5#23, domésticos), (CP348-3#24, últimos)
(CF150-1#4, feliz), (CF535-2#28, Fria), (CF911-5#29, Fria), (CP109-2#61, Cultural), (CP161-6#3, Municipal), (CP454-3#10, Municipais), (CP469-4#16, básica)
alguns dos casos acima resolvidos em 43e03ab51 @wellington36
Em bad5a9945 alguns outros dos casos classificados como 'difíceis' acima.
Em caf460cbc, corrigi alguns problemas introduzidos no último commit. Mas o que falta para resolver este issue?
Agora temos 59 casos, faltando principalmente os que considerei como casos difíceis onde varios já foram mencionados nesse issue ou em outros, dos demais casos com falta de Gender/Number acabei de corrigir e mandarei no próximo PR, e dos marcados como possível erro de escrita (um deles um pouco mais delicado que foi mencionado em reunião (CP348-3#24, últimos) que será necessário modificar a sentença toda), antes de fazer esse PR (sai hoje ou no máximo amanhã) vou dar mais uma verificada em todos os casos de falso positivo e exceções a regra, com intuito de garantir que não estamos deixando mais nenhum caso relevante de lado. Espero com esse PR deixar apesar os casos marcados como casos difíceis, falso positivo e exceções a regra. Segue status atual de casos (sem contar as correções já feitas para o próximo PR).
59 casos:
(CF17-2#27, figurativo), (CF17-2#29, abstrato), (CF106-1#4, pornô), (CF182-1#1, Querido), (CF245-2#11, superior), (CF426-2#15, trivial), (CF833-2#21, financeiro), (CP103-2#6, contíguas), (CP190-2#17, temporal), (CP223-1#12, possível), (CP258-5#14, última), (CP457-8#12, última), (CP568-4#38, fictícios), (CP726-3#30, similar), (CP883-6#20, restantes)
(CP605-3#33, directivo)
(CF66-4#20, 1º.), (CF377-1#14, holandes), (CF683-2#18, II), (CP232-4#4, francês), (CP290-4#33, XVII), (CP308-4#4, segundo), (CP396-1#30, petrolífero), (CP450-10#29, mesmo), (CP458-5#18, XVI), (CP477-4#28, 4º), (CP496-6#14, XVIII), (CP645-10#26, central), (CP667-4#16, segundo), (CP733-1#64, Khmer), (CP843-2#57, educativa)
(CF125-3#21, baratos), (CF649-5#23, intensos), (CP271-7#8, fascinantes), (CP396-1#42, paisagísticos), (CP419-1#22, respectivos), (CP448-4#13, passados), (CP497-5#6, russas), (CP543-2#57, municipais), (CP709-5#29, locais), (CP831-4#4, livres), (CP895-22#21, políticas), (CP987-2#8, permanentes)
(CF304-1#30, quartas), (CF840-5#16, cover), (CP786-2#26, antiaborto), (CP798-1#7, pró-referendo), (CP968-8#22, hard-core)
(CF754-3#35, responsável) , (CP161-5#23, domésticos) , (CP348-3#24, últimos)
(CF150-1#4, feliz) , (CF535-2#28, Fria) , (CF911-5#29, Fria) , (CP109-2#61, Cultural) , (CP161-6#3, Municipal) , (CP454-3#10, Municipais) , (CP469-4#16, básica) , (CP632-7#13, acidentado)
No https://github.com/UniversalDependencies/UD_Portuguese-Bosque/pull/327 temos algumas correções de casos com falta de Gender or Number que não foram pegos antes e casos introduzidos pelo issue #300. Tal revisão foi possível graças ao último comentário, os casos que não foram pegos antes podem ser pegos pelo seguinte comando:
cat *.conllu | udapy -q util.Eval node='if ((node.feats["Gender"] != node.parent.feats["Gender"] or node.feats["Number"] != node.parent.feats["Number"] or node.feats["Gender"] == "" or node.feats["Number"] == "") and node.parent.upos == "NOUN" and node.upos == "ADJ" and node.deprel == "amod"): node.parent.parent.draw(attributes="form,lemma,upos,feats,deprel")'
Pelo https://github.com/UniversalDependencies/UD_Portuguese-Bosque/pull/327 temos 46 casos divididos em:
(CF17-2#27, figurativo), (CF17-2#29, abstrato), (CF106-1#4, pornô), (CF182-1#1, Querido), (CF426-2#15, trivial), (CF833-2#21, financeiro), (CP103-2#6, contíguas), (CP190-2#17, temporal), (CP223-1#12, possível), (CP258-5#14, última), (CP457-8#12, última), (CP568-4#38, fictícios), (CP726-3#30, similar)
(CF66-4#20, 1º.), (CF377-1#14, holandes), (CF683-2#18, II), (CP232-4#4, francês), (CP290-4#33, XVII), (CP308-4#4, segundo), (CP396-1#30, petrolífero), (CP450-10#29, mesmo), (CP458-5#18, XVI), (CP477-4#28, 4º), (CP496-6#14, XVIII), (CP645-10#26, central), (CP667-4#16, segundo), (CP733-1#64, Khmer), (CP843-2#57, educativa)
(CF125-3#21, baratos), (CF649-5#23, intensos), (CP271-7#8, fascinantes), (CP396-1#42, paisagísticos), (CP419-1#22, respectivos), (CP448-4#13, passados), (CP497-5#6, russas), (CP543-2#57, municipais), (CP709-5#29, locais), (CP831-4#4, livres), (CP895-22#21, políticas), (CP987-2#8, permanentes)
(CF304-1#30, quartas), (CF840-5#16, cover), (CP786-2#26, antiaborto), (CP798-1#7, pró-referendo), (CP968-8#22, hard-core)
(CP348-3#24, últimos)
Segundo comentário https://github.com/UniversalDependencies/UD_Portuguese-Bosque/issues/365#issuecomment-968065709 temos alguns casos de fora de nossa query (casos de concordancia entre NOUN/ADJ), no caso concordância entre PROPN/ADJ que podem ser encontradas com a atualização da query:
cat *.conllu | udapy -q util.Eval node='if ((node.feats["Gender"] != node.parent.feats["Gender"] or node.feats["Number"] != node.parent.feats["Number"] or node.feats["Gender"] == "" or node.feats["Number"] == "") and node.parent.upos in ["NOUN","PROPN"] and node.upos == "ADJ" and node.deprel == "amod"): print(node)' | wc -l
83
@arademaker, ou talvez possamos discutir isso em outro issue com nome de agreement PROPN/ADJ via amod
?
Maybe worth to check here https://github.com/UniversalDependencies/UD_English-EWT/issues/186
@arademaker, I accidentally found the following parsing error:
The correct analysis should be simples ADJ Gender=Fem|Number=Plur_.
I was looking up the different ways the adjective simples, which does not show any formal variation in gender and number, is analysed.