LR-POR / PorGram

A Portuguese HPSG Grammar
Other
2 stars 1 forks source link

populate verb type hierarchy #19

Closed leoalenc closed 2 years ago

leoalenc commented 3 years ago

@arademaker, diferentes estratégias podem ser utilizadas para povoar a hierarquia de tipos verbais baseada na valência:

  1. treebanks, como o UD Bosque e o Tycho Brahe
  2. dicionários gerais on-line com informações sobre a regência verbal, como o Michaelis
  3. dicionários de regimes verbais como o de Francisco Fernandes, ou de valências, como o dicionário gramatical de verbos organizado por Francisco da Silva Borba et al.
  4. gramáticas de referência, como Cunha e Cintra (1985) e Mateus et al. (1989)
  5. artigos e monografias da área de linguística descritiva, linguística computacional ou PLN, especialmente os trabalhos de Mario Perini e Márcia Cançado e colaboradoras, da UFMG, minha dissertação de mestrado e tese de doutorado, tese do meu orientando Jessé Mourão etc.
  6. classes verbais da BrGram
  7. redes léxico-semânticas do tipo da WordNet
  8. tipos verbais da ERG, da gramática do espanhol construída por meio da Matriz Gramatical etc.
  9. VerbNet-BR (http://www.nilc.icmc.usp.br/verbnetbr/), Propbank-Br (http://www.nilc.icmc.usp.br/portlex/, versão 1.1 anotou parte do Bosque e constriui uma lista de senses a partir dos senses de EN). E finalmente, https://github.com/System-T/UniversalPropositions.
  10. Treebank do UD Deep
  11. Tools como https://github.com/hltcoe/PredPatt/
leoalenc commented 3 years ago

@arademaker, no commit https://github.com/LR-POR/PorGram/commit/10eccde91fba1bcbf1dd27d3cb185a94e55d6490, incluí algumas dezenas de instâncias de verbos e auxiliares, recorrendo a Mateus et al. (1989), que compilam listas de verbos para diversas das classes que propõem, e Cunha e Cintra (1985), que apresentam diversos verbos (que classifico como auxiliares) que formam locuções verbais com gerúndio.

arademaker commented 3 years ago

Vi que vc ainda fez a inclusão usando o formulário da MATRIX, dado as linhas modificadas no choice file. Me pergunto se será um problema começarmos a criar entradas lexicais diretamente no tdl. Provavelmente isto deverá ser feito em um my-lexicon.tdl correto?

Em tempo, os nomes my-xxx.tdl parecem estranho por parecerem pessoais e não locais da gramática. Talvez local-xxx.tdl ou custom-xxx.tdl?

leoalenc commented 3 years ago

Vi que vc ainda fez a inclusão usando o formulário da MATRIX, dado as linhas modificadas no choice file. Me pergunto se será um problema começarmos a criar entradas lexicais diretamente no tdl. Provavelmente isto deverá ser feito em um my-lexicon.tdl correto?

@arademaker, não seria problema nenhum editar ou criar o TDL, criando arquivos xxx.tdl, onde xxx é uma string diferente de lexicon, já criei vários, ver lista de arquivos do léxico em lkb/my-script. No caso dos verbos que incluí recentemente, populando a hierarquia, achei mais prático usar o questionário porque ficam mais claras para mim nessa interface as propriedades de cada tipo, além disso, acho muito útil o gráfico que pode ser gerado a qualquer momento mostrando as relações entre os tipos.

Em tempo, os nomes my-xxx.tdl parecem estranho por parecerem pessoais e não locais da gramática. Talvez local-xxx.tdl ou custom-xxx.tdl?

Sim, vamos pensar numa alternativa, um prefixo sugestivo e mnemônico. local sugere que os outros arquivos não são locais, custom parece problemático porque os arquivo gerados a partir de choices foram produzidos, em última instância, pelo customization questionnaire da Matriz Gramatical.

leoalenc commented 3 years ago

@arademaker, por acaso descobri que dois tipos de portuguese.tdl, gerados pela Matriz Gramatical, têm o prefixo my-:

my-head-adj-phrase my-adj-head-phrase

leoalenc commented 3 years ago

@arademaker e @wellington36, o objetivo final é preencher a última coluna da tabela com os dados de 80% do Bosque (corpus de desenvolvimento) e utilizar a gramática com o léxico enriquecido para analisar os 20% restantes (corpus de teste não visto). Essa tabela serve apenas para ilustrar a tarefa, pois contém apenas 4 dos tipos da gramática.

Tipo verbal Exemplos Instâncias Propriedades Árvores Verbos do Bosque
question-verb-lex 1. o artista perguntou que ratazanas os cachorros perseguiram
2. o artista perguntou qual cachorro perseguiu o gato
3. o cachorro perguntou se o gato late
4. o artista perguntou quem perseguiu o gato
ignorar, saber O complemento oracional é introduzido pelo complementador se ou por um pronome ou determinante interrogativo. Árvores Verbos do Bosque
que-subj-verb-lex 1. o gato queria que o cachorro dormisse
2. o artista exigiu que o cachorro não perseguisse o gato
O complemento oracional é introduzido pelo complementador que e o modo do complemento é subjuntivo. desejar, esperar, preferir etc. Árvores Verbos do Bosque
X-que-subj-verb-lex 1. o gato fez com que os cachorros ladrassem
2. o cliente insistiu em que os artistas vendessem o cachorro
O complemento oracional é introduzido pelo complementador que precedido de X, onde X é uma preposição, e o modo do complemento é subjuntivo. fazer, insistir etc. Árvores Verbos do Bosque
inf-trans-first-arg-control-verb-lex 1. o gato queria dormir
2. o gato vai querer dormir
O complemento oracional está no infinitivo "nu" não flexionado. O sujeito externo do infinitivo é o sujeito do verbo matriz, que realiza papel temático desse verbo. desejar, esperar, preferir, ousar etc. Árvores Verbos do Bosque
bare-inf-aux-lex 1. o gato pode latir
2. o gato está precisando dormir
O complemento oracional está no infinitivo "nu" não flexionado. No entanto, o sujeito do verbo matriz não realiza papel temático desse verbo. poder, dever, precisar etc. Árvores Verbos do Bosque
ter-aux-lex 1. o cachorro tem latido O complemento oracional está no particípio passado não flexionado. haver Árvores Verbos do Bosque
ind-cl 1. o cachorro declarou que o gato late O complemento oracional é introduzido pelo complementador que e o modo do complemento é indicativo. dizer etc. Árvores Verbos do Bosque
dat-obj 1. o cachorro obedece a o artista O verbo rege um único complemento, introduzido pela preposição a. obedecer etc. Árvores Verbos do Bosque
nonrefl-gen-obj 1. o cachorro gosta de o artista O verbo rege um único complemento, introduzido pela preposição de. gostar, depender etc. Árvores Verbos do Bosque
refl-gen-obj 1. o artista queixou-se de o cachorro O verbo rege um pronome reflexivo expletivo e um único complemento, introduzido pela preposição de. queixar etc. Árvores Verbos do Bosque
nom-acc-dat-ditransitive-verb-lex 1. o artista doou uma bicicleta a o estudante O verbo rege dois complementos: um objeto direto e um indireto (ou oblíquo), introduzido pela preposição a ou para. dar, doar etc. Árvores Verbos do Bosque
ind-cl-dat-verb-lex 1. o artista contou a o estudante que o gato tinha matado uma ratazana O verbo rege dois complementos: um objeto indireto (ou oblíquo), introduzido pela preposição a ou para, e um complemento oracional introduzido pelo complementador que com o verbo encaixado no indicativo. . contar etc. Árvores Verbos do Bosque
X-compl-subj-raise-aux-with-pred 1. o cachorro começou a latir
2. o cachorro parou de latir
3. o artista insistiu em perseguir o cachorro
4. o cachorro tem que dormir
Verbo de alçamento do sujeito com um único complemento, que consiste num verbo no infinitivo não flexionado nucleado por X, onde X é um complementador (a, de, que, em etc.). começar, parar, insistir, ter etc. Árvores Verbos do Bosque
leoalenc commented 3 years ago

@leoalenc, a questão desta tarefa é classificar os verbos do Bosque de acordo com certas propriedades (no caso temos 4 mas são bem mais).

@wellington36, exato. Na tabela, como você percebeu, estão apenas uns poucos exemplos. De hoje para amanhã completo essa tabela com os tipos faltantes. Essa tabela, porém, não será exaustiva, pois a gramática ainda está no começo. Desse modo, para muitos verbos, o tipo será unknown.

leoalenc commented 3 years ago

Não sei se está claro ainda como está tarefa deve ser seguida, talvez devêssemos ter uma lista dos tipos verbais para classificação. Dai surge alguns questionamentos: como guardar e organizar os verbos classificados? (uma tabela talvez), temos mais de 20mil verbos no Bosque 80% significa 16mil como analisar tudo?

@wellington36 e @arademaker, vamos pensar juntos no formato dessa tabela com os resultados. Inicialmente, imagino algo simples, neste formato:

lema sent_id form:feats dependentes tipo
dizer CP392-7 disse:Ind.Sing.3.Past.Fin obl nsubj ccomp ind-cl
reivindicar CP2-1 reivindicar:Inf obj nsubj trans

A propósito, a análise da sentença CP2-1 está com vários problemas, aparentemente, erros sistemáticos que podem estar presentes em várias outras sentenças. Vou abrir issue lá no repositório.

leoalenc commented 3 years ago

@leoalenc acho que estrutura dessa tabela boa para um começo, sugiro uma linha para cada lema (verbo), e as demais colunas podem ter mais de um valor por linha.

@wellington36, prefiro uma gigante tabela no formato "bruto" mesmo que sugeri, com uma linha por célula. Ou seja, cada forma verbal do Bosque ocupará uma linha da tabela. Eu prefiro ter esses dados brutos e usar eu mesmo as unix text processing utilities ou Python para agrupá-los. Como o Bosque não analisa o infinitivo flexionado, agora vejo que é importante uma coluna adicional para a forma verbal (fiz a correção no comentário anterior).

wellington36 commented 3 years ago

@leoalenc uma duvida que me veio se cada linha é uma certo verbo a coluna dependencies seria o que? anteriormente acreditava nela como sendo as possiveis relações entre o verbo e o head, mas por exemplo o dizer como verbo aparece 507 vezes dentre elas com relação: root, fixed, parataxis, xcomp, conj, advcl, acl e csubj.

leoalenc commented 3 years ago

@leoalenc Também se queremos deixar um por linha penso que uma forma automatica de preenchimento seria o ideal, restando pensar como fazer.

@wellington36, exato, o objetivo é mesmo preencher automaticamente a tabela. Para tanto, é preciso elaborar um algoritmo que percorra as sentenças do corpus e, dentro de cada sentença, extraia cada forma verbal com seu lema, features e dependentes, aplicando sobre essas informações uma função (também a ser implementada) que, com base nas features e nos dependentes (e noutras propriedades de nós da árvore, como o tipo de SCONJ do nó neto), atribua o rótulo de classificação correto com base na tipologia dada (ou UNKNOWN se for o caso). Por exemplo, em CP392-7, para classificar a forma disse precisamos extrair o nó neto SCONJ=que.

leoalenc commented 3 years ago

@leoalenc uma duvida que me veio se cada linha é uma certo verbo a coluna dependencies seria o que? anteriormente acreditava nela como sendo as possiveis relações entre o verbo e o head, mas por exemplo o dizer como verbo aparece 507 vezes dentre elas com relação: root, fixed, parataxis, xcomp, conj, advcl, acl e csubj.

@wellington36, boa pergunta. Vai ficar mais claro se você comparar o exemplo de tabela que construí com os exemplos do banco de árvores. Os dependentes de um nó são o que o nome já diz, ou seja, os nós filhos. Entenda-se dependente de forma estrita, ou seja, dependente imediato. Em outras palavras, trata-se do conjunto de funções sintáticas governadas pelo verbo em questão.

wellington36 commented 3 years ago

@leoalenc só garantindo que estamos na mesma página aqui o que nos interresa do Verbo são suas feats, os deprels dos seus filhos (obj e nsubj no caso), o lemma do verbo o id da sentença. image

wellington36 commented 3 years ago

@leoalenc seguindo a lógica a cima fiz um código simples em python (com pyconll) para coletar os dados que precisamos, me adiantei um pouco pois queria testar essa biblioteca e aproveitei a situação, mas claro que é nessessario discutir se será feito em python ou haskell ou qualquer outra linguagem e como será feito. De qualquer forma segue um exemplo de output com a sentença que aparece na tabela acima.

sent_id: CP392-7 | lemma: dizer | feats: {'Mood': {'Ind'}, 'Number': {'Sing'}, 'Person': {'3'}, 'Tense': {'Past'}, 'VerbForm': {'Fin'}} | depes: ['obl', 'nsubj', 'ccomp', 'punct']
sent_id: CP392-7 | lemma: limitar | feats: {'Mood': {'Ind'}, 'Number': {'Sing'}, 'Person': {'3'}, 'Tense': {'Past'}, 'VerbForm': {'Fin'}} | depes: ['mark', 'expl', 'xcomp']
sent_id: CP392-7 | lemma: tornar | feats: {'VerbForm': {'Inf'}} | depes: ['mark', 'advmod', 'obj']
sent_id: CP392-7 | lemma: perdurar | feats: {'Mood': {'Ind'}, 'Number': {'Plur'}, 'Person': {'3'}, 'Tense': {'Pres'}, 'VerbForm': {'Fin'}} | depes: ['nsubj', 'advmod']
leoalenc commented 3 years ago

@leoalenc seguindo a lógica a cima fiz um código simples em python (com pyconll) para coletar os dados que precisamos, me adiantei um pouco pois queria testar essa biblioteca e aproveitei a situação, mas claro que é nessessario discutir se será feito em python ou haskell ou qualquer outra linguagem e como será feito. De qualquer forma segue um exemplo de output com a sentença que aparece na tabela acima.

sent_id: CP392-7 | lemma: dizer | feats: {'Mood': {'Ind'}, 'Number': {'Sing'}, 'Person': {'3'}, 'Tense': {'Past'}, 'VerbForm': {'Fin'}} | depes: ['obl', 'nsubj', 'ccomp', 'punct']
sent_id: CP392-7 | lemma: limitar | feats: {'Mood': {'Ind'}, 'Number': {'Sing'}, 'Person': {'3'}, 'Tense': {'Past'}, 'VerbForm': {'Fin'}} | depes: ['mark', 'expl', 'xcomp']
sent_id: CP392-7 | lemma: tornar | feats: {'VerbForm': {'Inf'}} | depes: ['mark', 'advmod', 'obj']
sent_id: CP392-7 | lemma: perdurar | feats: {'Mood': {'Ind'}, 'Number': {'Plur'}, 'Person': {'3'}, 'Tense': {'Pres'}, 'VerbForm': {'Fin'}} | depes: ['nsubj', 'advmod']

@wellington36, muito bom! Parabenizo a iniciativa. Para mim, a linguagem é indiferente, mas @arademaker deverá conversar com você a respeito. Para poder realizar a classificação conforme os tipos de verbos da gramática, seguindo a minha tabela, precisamos acrescentar mais um tipo de informação: a classe de palavra e o lema de mark. No exemplo em questão, poderíamos fazer algo como mark:SCONJ:que e mark:SCONJ:a. A propósito, veja https://github.com/UniversalDependencies/UD_Portuguese-Bosque/issues/337#issue-978610528.

leoalenc commented 3 years ago

@arademaker e @wellington36, esclarecendo melhor o que escrevi anteriormente, no caso de nó verbal X que domina imediatamente um nó mark Y, precisamos incluir as propriedades de Y (lema e classe de palavra) na lista de informações de Z, onde Z é o nó verbal que domina imediatamente X. Aplicando isso ao exemplo CP392-7 do comentário anterior, o algoritmo de classificação precisa ser alimentado com a informação de que o nó do verbo dizer tem um neto que é mark:SCONJ:que, para poder atribuir-lhe o tipo ind-cl, além da informação sobre os filhos ccomp (ele precisa saber que o verbo é finito) e nsubj. Analogamente, para classificar limitar, o algoritmo precisa saber que tem um neto mark:SCONJ:a e um filho xcomp no infinitivo. Enfim, para implementar o algoritmo de classificação, é preciso saber converter as especificações daquela minha tabela em uma árvore de decisão baseada em propriedades da árvore da sentença da qual faz parte o verbo a ser classificado.

wellington36 commented 3 years ago

@leoalenc em "verbo dizer tem um neto que é mark:SCONJ:que" não seria o verbo limitar que tem este neto? Mas acredito ter entendido o que o senhor quer pegar.

leoalenc commented 3 years ago

@leoalenc em "verbo dizer tem um neto que é mark:SCONJ:que" não seria o verbo limitar que tem este neto? Mas acredito ter entendido o que o senhor quer pegar.

@wellington36, no meu desenho da árvore, limitar tem um filho mark:SCONJ:que, mas, como limitar é filho de dizer, é este último que tem um neto mark:SCONJ:que. Quer gerar o gráfico da árvore para verificarmos se é isso mesmo?

wellington36 commented 3 years ago

@leoalenc de fato entendi, de qualquer forma segue o gráfico da árvore.

UD_Portuguese-Bosque__master__pt_bosque-ud-dev conllu

arademaker commented 3 years ago

@leoalenc, a questão desta tarefa é classificar os verbos do Bosque de acordo com certas propriedades (no caso temos 4 mas são bem mais).

@wellington36, exato. Na tabela, como você percebeu, estão apenas uns poucos exemplos. De hoje para amanhã completo essa tabela com os tipos faltantes. Essa tabela, porém, não será exaustiva, pois a gramática ainda está no começo. Desse modo, para muitos verbos, o tipo será unknown.

@leoalenc os tipos da primeira coluna não estão relacionados à hierarquia do lexicon no formulario da MATRIX?

arademaker commented 3 years ago

@leoalenc estamos anexando primeira saída. Imagino que agora queremos filtrar alguns casos. Por agora, removemos os filhos de um verbo que sejam: PUNCT ou ligados via conj e advmod.

valencias.csv

leoalenc commented 3 years ago

@leoalenc estamos anexando primeira saída. Imagino que agora queremos filtrar alguns casos. Por agora, removemos os filhos de um verbo que sejam: PUNCT ou ligados via conj e advmod.

valencias.csv

@arademaker, muito bom! Nas primeiras linhas, detectei casos a serem excluídos da tabela e possíveis problemas de anotação:

publicar,Gender=Fem|Number=Sing|VerbForm=Part,CF1-3,

Formas do particípio não nos interessam porque geralmente são desprovidas de funções sintáticas dependentes, como no caso acima.

revelar,Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin,CF1-3,Brasília:PROPN:parataxis Pesquisa:PROPN:nsubj dado:NOUN:obj

Brasília:PROPN:parataxis é irrelevante para a classificação. Nessa coluna somente devem constar funções sintáticas dependentes mencionadas nos critérios de classificação. Essas funções são depreensíveis dos tipos verbais, estando visível, no caso dos verbos implementados via questionário, no campo argument structure.

querer,Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin,CF1-3,maioria:NOUN:nsubj participar:VERB:ccomp

Traços de participar? Tipo de SCONJ?

coincidir,Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin,CF1-8,muito:PRON:nsubj prioridade:NOUN:obj

Verbo coincidir regendo obj? Erro de anotação?

leoalenc commented 3 years ago

@leoalenc os tipos da primeira coluna não estão relacionados à hierarquia do lexicon no formulario da MATRIX?

@arademaker, sim, muitos estão. No entanto, conforme #42, vários tipos tiveram de ser criados manualmente, uma vez que o questionário não abrange as respectivas molduras de subcategorização. Muitos outros tipos ainda serão criados manualmente.

leoalenc commented 3 years ago

@arademaker e @wellington36, vejam a nova versão da primeira tabela. Ainda não está completa, mas torna a "brincadeira" de extração de valências e classificação de verbos bastante interessante.

arademaker commented 3 years ago

@leoalenc, procurando por outras formas de VerbForm=Part encontramos casos com dependentes obj. Então seriam todos estes erros?

informar,Gender=Masc|Number=Plur|VerbForm=Part,CP944-7,coisa:NOUN:obj
relacionar,Gender=Fem|Number=Plur|VerbForm=Part,CP955-2,número:NOUN:obj
burlar,VerbForm=Part,CP965-3,depois:ADV:mark ter:AUX:aux mulher:NOUN:obj promessa:NOUN:obl
envolver,Gender=Masc|Number=Plur|VerbForm=Part,CP966-5,concurso:NOUN:obj

ignorando as linhas de VerbForm=Part temos

(venv) ar@tenis ud-portuguese-bosque % cat valencias.csv | grep -v "VerbForm=Part" | wc -l
   16896
arademaker commented 3 years ago

@leoalenc, no questionario, encontrei o verb type trans e o argument structure transitive (nom-acc), mas onde este tipo é declarado?

arademaker commented 3 years ago

@leoalenc o caso de quer/participar:


CF1-3> BRASÍLIA Pesquisa Datafolha publicada hoje revela um dado supreendente: recusando uma postura radical, a esmagadora maioria (77%) dos eleitores quer o PT participando do Governo Fernando Henrique Cardoso.

─┮  
 │ ╭─╼ BRASÍLIA PROPN parataxis 1 6  
 │ ├─┮ Pesquisa PROPN nsubj 2 6  
 │ │ ├─╼ Datafolha PROPN flat:name 3 2  
 │ │ ╰─┮ publicada VERB acl 4 2  
 │ │   ╰─╼ hoje ADV advmod 5 4  
 ╰─┾ revela VERB root 6 0  
   │ ╭─╼ um DET det 7 8  
   ├─┾ dado NOUN obj 8 6  
   │ ├─╼ supreendente ADJ amod 9 8  
   │ │ ╭─╼ : PUNCT punct 10 26  
   │ │ ├─┮ recusando VERB advcl 11 26  
   │ │ │ │ ╭─╼ uma DET det 12 13  
   │ │ │ ╰─┾ postura NOUN obj 13 11  
   │ │ │   ╰─╼ radical ADJ amod 14 13  
   │ │ ├─╼ , PUNCT punct 15 26  
   │ │ │ ╭─╼ a DET det 16 18  
   │ │ │ ├─╼ esmagadora ADJ amod 17 18  
   │ │ ├─┾ maioria NOUN nsubj 18 26  
   │ │ │ │ ╭─╼ ( PUNCT punct 19 21  
   │ │ │ │ ├─╼ 77 NUM nummod 20 21  
   │ │ │ ├─┾ % SYM appos 21 18  
   │ │ │ │ ╰─╼ ) PUNCT punct 22 21  
   │ │ │ │ ╭─╼ de ADP case 23 25  
   │ │ │ │ ├─╼ os DET det 24 25  
   │ │ │ ╰─┶ eleitores NOUN nmod 25 18  
   │ ╰─┾ quer VERB acl:relcl 26 8  
   │   │   ╭─╼ o DET det 27 28  
   │   │ ╭─┶ PT PROPN nsubj 28 29  
   │   ╰─┾ participando VERB ccomp 29 26  
   │     │ ╭─╼ de ADP case 30 32  
   │     │ ├─╼ o DET det 31 32  
   │     ╰─┾ Governo NOUN obj 32 29  
   │       ╰─┮ Fernando PROPN nmod 33 32  
   │         ├─╼ Henrique PROPN flat:name 34 33  
   │         ╰─╼ Cardoso PROPN flat:name 35 33  
   ╰─╼ . PUNCT punct 36 6  
arademaker commented 3 years ago

@leoalenc para coincidem, de fato o http://www.portaldalinguaportuguesa.org/index.php?action=lemma&lemma=13836 me diz ser intransitivo, mas então devemos entender que prioridades seria OBL? Qual teste nos permite confirmar isso?

De fato, tentando colocar na voz passiva, vemos que não pode ser obj. Seria então suficiente para classificar como obl?

CF1-8> Muitas das prioridades do novo governo coincidem com as prioridades do PT.

─┮  
 │ ╭─┮ Muitas PRON nsubj 1 9  
 │ │ │ ╭─╼ de ADP case 2 4  
 │ │ │ ├─╼ as DET det 3 4  
 │ │ ╰─┾ prioridades NOUN nmod 4 1  
 │ │   │ ╭─╼ de ADP case 5 8  
 │ │   │ ├─╼ o DET det 6 8  
 │ │   │ ├─╼ novo ADJ amod 7 8  
 │ │   ╰─┶ governo NOUN nmod 8 4  
 ╰─┾ coincidem VERB root 9 0  
   │ ╭─╼ com ADP case 10 12  
   │ ├─╼ as DET det 11 12  
   ├─┾ prioridades NOUN obj 12 9  
   │ │ ╭─╼ de ADP case 13 15  
   │ │ ├─╼ o DET det 14 15  
   │ ╰─┶ PT PROPN nmod 15 12  
   ╰─╼ . PUNCT punct 16 9  
arademaker commented 3 years ago

Na homepage de UD, existem algumas interfaces de query para os corpora UD. Em partular

http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616dba17a9a99&clustering=e.label

Cada um dos criterios da tabela acima deve, potencialmente, ser expresso na forma de uma query como esta acima. Por exemplo, deve ser possivel expressar:

O verbo rege um único complemento, introduzido pela preposição a.

No issue https://github.com/UniversalDependencies/UD_Portuguese-Bosque/issues/340 falo de outra ferramenta que devemos conseguir: 1) instalar localmente e controlar atualizar os dados sempre que corrigirmos algo no Bosque; 2) parece ter uma linguagem de query igualmente (ou até mais) poderosa que esta grew.

Em nossa biblioteca Lisp para ler/escrever arquivos CoNLL-U, tentamos começar uma interface de query, https://github.com/LR-POR/cl-conllu/wiki/Queries, mas ela deve ser bem ineficiente (não temos indexação) e a linguagem está bem mal documentada...

arademaker commented 3 years ago

Paguei um dos comentários acima porque agora lendo com mais calma vi que @leoalenc ja tinha explicado sobre os mark que são netos do verbo governado por outro verbo.

wellington36 commented 3 years ago

Seguindo a interface de query proposta por @arademaker a terceira linha da tabela seria:

pattern {
  GOV [upos="VERB"]; PREP [upos="SCONJ"]; QUE [form="que"];
  PREP < QUE;
  GOV -> QUE;
}
leoalenc commented 3 years ago

CP944-7

@arademaker, veja:

text = Nuno Bio não tem dúvidas de que se trata de «uma tentativa frustrada por parte dos orgãos competentes da faculdade de obrigar os caloiros, menos informados destas coisas, a pagar, para poder afirmar depois que há muita gente a pagar propinas». sent_id = CP944-7 source = CETEMPúblico n=944 sec=soc sem=94b id = 4863

Um obj constitui argumento nuclear que se realiza tipicamente como NP, conforme https://universaldependencies.org/u/dep/obj.html. Nesse exemplo, temos um PP realizando argumento não nuclear, o que me faz pensar que se trata de um obl. Na verdade, a regência do verbo é informar alguém de alguma coisa. No exemplo em tela, como o verbo está no particípio passivo, o obj da forma ativa, ou seja, caloiros, realiza-se como subj.

leoalenc commented 3 years ago

@leoalenc, no questionario, encontrei o verb type trans e o argument structure transitive (nom-acc), mas onde este tipo é declarado?

@arademaker, a definição dos tipos específicos do português, gerados pela Matriz Gramatical a partir das respostas do questionário, estão no arquivo portuguese.tdl. Os dados fornecidos no questionário constituem a declaração do tipo, fornecendo todas as informações necessárias à sua diferenciação em relação aos demais tipos da hierarquia. Essas informações indicam tratar-se de um verbo com estrutura argumental constituída de dois argumentos, um marcado com o caso nominativo e outro, com o caso acusativo. Como pode constatar, a terminologia utilizada, documentada aqui, é similar à da Teoria das Dependências Universais, ver:

https://universaldependencies.org/u/feat/Case.html#Nom https://universaldependencies.org/u/dep/obj.html https://universaldependencies.org/u/feat/Case.html#Acc

O tipo trans é, portanto, de um verbo que rege um nsubj e um obj, ou seja, na terminologia de Sag, Wasow e Bender (2003, p. 62), um verbo estritamente transitivo.

leoalenc commented 3 years ago

@arademaker, concorda, então, que esse argumento não pode ser obj, uma vez que não é nuclear, ver Falk (2001, p. 58). Portanto, também não é iobj, veja:

The indirect object of a verb is any nominal phrase that is a core argument of the verb but is not its subject or (direct) object. https://universaldependencies.org/u/dep/iobj.html

Depreendo, pelo exemplos dados, que só temos um iobj quando também temos um obj regido pelo verbo. Parece que a função que sobra para o segundo argumento de coincidir é obl:

https://universaldependencies.org/u/dep/obl.html

FALK, Y. N. Lexical-functional grammar: an introduction to parallel constraint-based syntax. Stanford: CSLI, 2001.

arademaker commented 3 years ago

@leoalenc combinei agora com @wellington36 que vamos completar

https://github.com/LR-POR/ud-matrix/blob/master/examples.conllu

A idéia é que cada exemplo da sua tabela acima será analisado por UDPipe, e no cabeçalho termos o tipo em PorGram e a query que traz os padrões UD que ocorrem no corpus bosque

lucasrct commented 3 years ago

Oi @leoalenc, estava lendo esse issue e vendo as definições dos tipos verbais e vendo as queries e output delas, me deparei com um caso que fiquei na dúvida: o verbo forçar, no que tange o caso X-compl-subj-raise-aux-with-pred com X = a

Nesse caso, alguém força algo ou força alguém/algo a algo, foi o segundo caso que apareceu na query e que fiquei em dúvida,

O delegado de polícia forçou o suspeito a confessar.

Isso ainda se enquadra no caso em questão? Pois difere um pouco da definição no quesito que quem confessou foi o suspeito e não o delegado de polícia.

leoalenc commented 3 years ago

Oi @leoalenc, estava lendo esse issue e vendo as definições dos tipos verbais e vendo as queries e output delas, me deparei com um caso que fiquei na dúvida: o verbo forçar, no que tange o caso X-compl-subj-raise-aux-with-pred com X = a

Nesse caso, alguém força algo ou força alguém/algo a algo, foi o segundo caso que apareceu na query e que fiquei em dúvida,

O delegado de polícia forçou o suspeito a confessar.

Isso ainda se enquadra no caso em questão? Pois difere um pouco da definição no quesito que quem confessou foi o suspeito e não o delegado de polícia.

@lucasrct, obrigado pela oportuna pergunta. O tipo X-compl-subj-raise-aux-with-pred, onde X é uma preposição que funciona como complementador, como o próprio nome do tipo especifica, aplica-se a verbos de alçamento do sujeito, denominados raising verbs na literatura gerativa anglofônica, tanto de base transformacional quanto não transformacional, como é o caso da HPSG. O verbo forçar, contudo, é um verbo de controle do objeto. Atualmente, temos na PorGram:

~/hpsg/por $ grep -EhA 3 "^forçar[^:]+:=" *.tdl
forçar := a-inf-ditrans-second-arg-control-verb-lex &
  [ STEM < "forçar" >,
    SYNSEM.LKEYS.KEYREL.PRED "_forçar_v_rel" ].

~/PorGram $ awk '$2 ~ /:=/ && $3 ~ /[a-z]+-compl-subj-raise-aux-with-pred/' *.tdl
 começar_2 := a-compl-subj-raise-aux-with-pred &
 parar := de-compl-subj-raise-aux-with-pred &
 insistir_4 := em-compl-subj-raise-aux-with-pred &
 ter_3 := que-de-compl-subj-raise-aux-with-pred &

Conforme a definição do tipo a-inf-ditrans-second-arg-control-verb-lex, forçar é um verbo ditransitivo, ou seja, rege dois complementos, possuindo, portanto, aridade 3 (o sujeito não conta como complemento na HPSG). O segundo argumento é marcado com acusativo (um obj em UD). O terceiro é o infinitivo regido do complementador a. Esse último complemnto constitui um xcomp em UD.

Seria uma brincadeira interessante extrair os tipos de verbos da gramática e construir queries para extração de exemplos no Bosque a partir das definições dos tipos, traduzindo HPSG para UD. As sentenças de my-test_sentences.txt que exemplificam os tipos de verbos poderiam ser colocadas automaticamente numa tabela como a que construí acima aplicando a gramática às sentenças não ambíguas. Veja o que temos hoje em results.txt:

~/hpsg/por $ grep '\bforç' ~/PorGram/results.txt
532 a estudante forçou o artista a matar a ratazana 1 310

No momento, temos 315 sentenças não ambíguas, das 432 sentenças analisadas:

$ awk '$1 ~ /[0-9]+/ && $(NF-1) ~! /^1$/ && $2 !~ /^\*/' results.txt | wc -l
 315

$ awk '$1 ~ /[0-9]+/ && $(NF-1) ~ /[1-9]/ && $2 !~ /^\*/' results.txt | wc -l
 432

Sobre os critérios para distinção entre verbos de alçamento e verbos controle, veja meus comentários anteriores noutras issues deste repositório. Em HPSG, a referência fundamental é o capítulo 12 de Sag, Wasow e Bender (2003).

arademaker commented 3 years ago

Seria uma brincadeira interessante extrair os tipos de verbos da gramática e construir queries para extração de exemplos no Bosque a partir das definições dos tipos, traduzindo HPSG para UD.

na tabela, o tipo bare-inf-aux-lex é definido como:

O complemento oracional está no infinitivo "nu" não flexionado.

estou imaginando que 'nu' é 'não', é isso? Bem, assumindo isso, usei o lkb para análise a sentença dada como exemplo. usando a opção de highlight chart nodes:

image

então o tipo instanciado para o verbo é inf-trans-first-arg-control-ve. Tentei entender o tipo, olhando a feature structure, mas confesso que não faço idéia como seguir daqui na tentativa de identificar os complementos. Vejo uma feature VAL que tem uma estrutura que também tem uma feature VAL

image

Se navego pela unfilled FS, chego a definição do tipo trans-first-arg-control-verb-lex:

image

Mas partimos do tipo bare-inf-aux-lex, e este nem foi mencionado na análise da sentença pelo LKB.

leoalenc commented 3 years ago

@arademaker , nu é a tradução de bare. Na linguística formal, especialmente de base gerativa, em modelos como Minimalism, HPSG etc., diz-se que um sintagma XP é bare quando não contém um especificador ou algum outro item análogo (que não um complemento ou adjunto) expandindo a projeção do núcleo X, em línguas como o inglês e o português esse item se situa na periferia esquerda. Desse modo, bare NP é o sintagma nominal gold em gold is expensive por oposição ao sintagma nominal de this car is expensive. No caso de infinitivo nu, em inglês é o inifinitivo de Mary can swim por oposição ao de Mary wants to swim, veja este dicionário de termos técnicos, por exemplo. Estou analisando as preposições que introduzem os infinitivos como complementadores, seguindo análises gerativas do francês, por exemplo, exercendo, portanto, papel análogo ao to do inglês, também analisado como complementador por diversos autores, diferentemente de Wasow, Sag e Bender (2003, p. 361), que analisam esse to como auxiliar.
@arademaker, peço desculpa pela confusão, mas você apontou um erro importante na minha tabela, decorrente de correção que fiz posteriormente, documentada em #45. Obrigado! Isso aponta para um problema no desenvolvimento da gramática: como manter atualizada a documentação, diante de constantes mudanças no código? Acredito que o desenvolvimento em Java e Python, por exemplo, tem algo a ensinar. As documentações são geradas automaticamente a partir do código, não é? Quando fiz a tabela, ainda não sabia como implementar o controle do sujeito e do objeto etc. manualmente. Controle não é suportado pelo questionário. Na gramática atual, temos no léxico:

$ grep -En "bare\-inf\-aux\-lex" *.tdl
 lexicon.tdl:831:poder := bare-inf-aux-lex &
 lexicon.tdl:835:dever := bare-inf-aux-lex &
 lexicon.tdl:839:parecer := bare-inf-aux-lex &
 lexicon.tdl:843:precisar := bare-inf-aux-lex &
 lexicon.tdl:847:costumar := bare-inf-aux-lex &
 portuguese.tdl:475:bare-inf-aux-lex := subj-raise-aux-with-pred &

$ grep -En "inf-trans-first-arg-control" *.tdl
 control-verbs.tdl:1:preferir_1 := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:5:prometer_2 := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:9:planejar := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:13:ousar :=  inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:17:desejar_2 :=inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:21:querer_2 :=inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:25:saber_3 :=inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:29:detestar_4 :=inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:33:lamentar_3 :=inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:37:conseguir := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:41:tentar := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:45:dizer_3 := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:50:acreditar_2 := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:54:tentar := inf-trans-first-arg-control-verb-lex &
 control-verbs.tdl:58:tencionar := inf-trans-first-arg-control-verb-lex &
 my-portuguese.tdl:453:inf-trans-first-arg-control-verb-lex := trans-first-arg-control-verb-lex & [ ARG-ST.REST.FIRST.LOCAL.CAT.HEAD.FORM infinitive].

Vemos que, se a tabela fosse criada automaticamente a partir da gramática e dos exemplos, esse equívoco não teria ocorrido! Sobre a inspeção dos tipos, eu pessoalmente acho mais legível olhar diretamente o código TDL no emacs. O formato é mais amigável. Conclusão: no exemplo que você analisou no LKB, o tipo de querer é mesmo inf-trans-first-arg-control-verb-lex e não bare-inf-verb-lex como está na tabela. Esse último tipo é dos verbos de alçamento do sujeito, tratados como auxiliares pela Grammar Matrix.

leoalenc commented 3 years ago

@lucasrct e @wellington36, o @arademaker sugeriu ontem uma abordagem alternativa para a tarefa: em vez de usar as queries como meio de se chegar aos tipos verbais, ele propôs que se extraíssem os dependentes dos verbos e se criassem agrupamentos de verbos e dependentes. Por exemplo, verbos com obj e iobj, verbos com obj e xcomp etc. Achei a ideia excelente porque promove uma divisão de tarefas que me parece mais adequada no momento. De fato, para entender o código da gramática e saber o que cada tipo realmente significa, é preciso estudar uma certa bibliografia, o que leva alguns meses. Recomendo a @lucasrct e @wellington36 fazer esse percurso, mas, no momento, não há tempo suficiente, dado o prazo que tempos para o artigo. A proposta do @arademaker resolve esse problema. O único conhecimento necessário será da teoria de UD e da linguagem de query para extrair os grupos! Algumas informações do ponto de vista da gramática serão, ao meu ver, úteis para execução dessa tarefa.

  1. Apenas os argumentos nucleares serão relevantes para, posteriormente, povoar a hierarquia de tipos da gramática. É possível que, no futuro, quando a atual hierarquia de tipos for expandida para incluir determinados verbos com objetos preposicionados (por exemplo, colocar), precisemos buscar por exemplos com obl (@arademaker, a propósito, como o Bosque anota esse tipo de verbo? Se o alvo for realizado como iobj, então entra nos agrupamentos.). No momento, porém, não temos verbos desse tipo na gramática.
  2. Além de nsubj, obj, iobj, csubj, ccomp e xcomp, precisamos de informações adicionais sobre esses nós (modo ou forma verbal do verbo do csubj, ccomp e xcomp) e sobre os seus filhos, a saber, os lemas de case e mark.
  3. Importante também incluir reflexivo anotado como expl e dependente do verbo em questão.
leoalenc commented 3 years ago

@arademaker, @lucasrct e @wellington36, parece que não precisaremos exigir no levantamento de grupos de verbos que mark preceda o seu governante, dada a possibilidade de erro de análise do exemplo apresentado: https://github.com/UniversalDependencies/UD_Portuguese-Bosque/issues/353

wellington36 commented 3 years ago

@arademaker e @leoalenc, dado que faltam apenas 11 dias concordo que devemos agilizar, acho a ideia de fazer um agrupamento muito interresante, mas temos que definir bem isso e como será feito.

No grew-match penso que seria algo assim: http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616737ff410f6&clustering=e.label, aqui podemos ter um problema com a limitação de 1000 casos da ferramenta, observando outras ferramentas online que aparecem no site do UD (SETS, PML Tree Query, Kontext maintained, INESS), acredito no grew-match como uma boa opção, principalmente dado o pouco tempo que temos para aprender a usar outra ferramenta. Para a tarefa em questão talvez usar uma biblioteca voltada a analise de conllu do UD como pyconll ou conllu.

leoalenc commented 3 years ago

@arademaker e @leoalenc, dado que faltam apenas 12 dias concordo que devemos agilizar, acho a ideia de fazer um agrupamento muito interresante, mas temos que definir bem isso e como será feito.

No grew-match penso que seria algo assim: http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616737ff410f6&clustering=e.label, aqui podemos ter um problema com a limitação de 1000 casos da ferramenta, observando outras ferramentas online que aparecem no site do UD (SETS, PML Tree Query, Kontext maintained, INESS), acredito no grew-match como uma boa opção, principalmente dado o pouco tempo que temos para aprender a usar outra ferramenta. Para a tarefa em questão talvez usar uma biblioteca voltada a analise de conllu do UD como pyconll ou conllu.

@arademaker e @lucasrct, concordo com @wellington36, o tempo está exíguo. Acho que a limitação de 1000 casos não representa um problema, haja vista não precisarmos esgotar o assunto num artigo que, aparentemente, explora uma via completamente nova para povoamento de um léxico de valências. Outros trabalhos usaram treebanks, com certeza, mas este nosso parece ser o primeiro sobre a língua portuguesa usando um corpus UD e tendo a perspectiva de uma gramática HPSG. Existe a opção de artigo curto. Melhor emplacar um artigo curto do que nada. Nesse caso, os resultados podem ser parciais. Acho mesmo que a abordagem anterior, não obstante suas inegáveis limitações, poderia contribuir com a expansão do léxico da gramática. Deixo ao @arademaker a decisão de bater o martelo no rumo a ser tomado. Fico a postos para esclarecimentos da parte da gramática.

leoalenc commented 3 years ago

@wellington36 , cliquei no link http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616737ff410f6&clustering=e.label que você indicou, os resultados não me pareceram animadores. Precisamos extrair clusters com as dependências listadas no meu comentário. Por exemplo:

nsubj obj iobj nsubj nsubj expl nsubj xcomp nsubj obj xcomp nsubj ccomp nsubj obj ccomp nsubj iobj ccomp (btw, existe isso?)

etc.

Além disso, precisamos das informações que listei sobre a preposição do iobj, a conjunção ou conjunções do xcomp etc. A partir de uma tabela com os clusters, as propriedades, os verbos e alguns exemplos curtos, eu poderia manualmente atribuir os tipos candidatos aos verbos encontrados. Por exemplo:

nsubj ==> nonrefl-int-verb-lex

nsubj refl ==> refl-int-verb-lex

Essa estratégia tem uma vantagem importante sobre a anterior, que é poder recuperar tipos de verbos ainda não codificados na gramática. Os resultados contribuiriam, portanto, não apenas para povoar o léxico, mas também expandir a hierarquia de tipos. Isso ficou cada vez mais claro para mim ao longo das diversas ocasiões em que @arademaker apresentou resultados de queries. Por exemplo, ele apresentou o verbo optar regendo xcomp com SCONJ por, tipo não contemplado na gramática, para a análise do qual seria necessário criar o tipo por-inf-trans-first-arg-control-verb-lex.

arademaker commented 3 years ago
  1. É possível que, no futuro, quando a atual hierarquia de tipos for expandida para incluir determinados verbos com objetos preposicionados (por exemplo, colocar), precisemos buscar por exemplos com obl (@arademaker, a propósito, como o Bosque anota esse tipo de verbo? Se o alvo for realizado como iobj, então entra nos agrupamentos.). No momento, porém, não temos verbos desse tipo na gramática.

obj pelo que vi em alguns casos: http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=6168589922e1a

wellington36 commented 3 years ago

nsubj iobj ccomp (btw, existe isso?)

@leoalenc, respondendo ao comentario temos 11 casos desse tipo, vide: http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=6168622521909

leoalenc commented 3 years ago

nsubj iobj ccomp (btw, existe isso?)

@leoalenc, respondendo ao comentario temos 11 casos desse tipo, vide: http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=6168622521909

@wellington36 , muito obrigado! Dados interessantíssimos! Ao meu ver, apontam para uma inconsistência na anotação do bosque, pois o analisador sintático estatístico tratou como obj o primeiro complemento desse tipo de verbo, naqueles meus exemplos construídos, retirados do conjunto de teste da gramática. Teci considerações a respeito disso em comentário da questão número três daquele repositório. Isso parece reforçar a importância do exercício que estamos fazendo para a correção do bosque, porque a modelação formal das valências na gramática assegurará uma consistência das anotações.

leoalenc commented 3 years ago
  1. É possível que, no futuro, quando a atual hierarquia de tipos for expandida para incluir determinados verbos com objetos preposicionados (por exemplo, colocar), precisemos buscar por exemplos com obl (@arademaker, a propósito, como o Bosque anota esse tipo de verbo? Se o alvo for realizado como iobj, então entra nos agrupamentos.). No momento, porém, não temos verbos desse tipo na gramática.

obj pelo que vi em alguns casos: http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=6168589922e1a

@arademaker , no exemplo abaixo, extraído desses resultados, o PP complemento de colocar é um obl:

text = Uma vantagem de 1m34s sobre os segundos, José Carlos Macedo / Miguel Borges, em Renault Clio 16V, garante ao piloto do Lancia HF Integrale uma forte dose de tranquilidade para conseguir a vitória na prova, o que o colocaria em excelente posição para a conquista do título. sent_id = CP99-4 source = CETEMPúblico n=99 sec=des sem=93a id = 526

http://match.grew.fr/data/61688295d560b/525.svg

Nesse caso, o obl integra a valência verbal. O problema é que, noutros exemplos, como o primeiro da lista que você compilou, não é argumento do verbo, constituindo, portanto, um adjunto:

http://match.grew.fr/data/61688295d560b/198.svg

Nesse caso, nos dias certos não constitui o alvo do deslocamento, subentendido (infere-se que nos locais apropriados, determinados pelas autoridades, por exemplo, na calçada), mas uma circunstância temporal do evento de colocar.

leoalenc commented 3 years ago

@wellington36, @arademaker e @lucasrct, ressalto que, para estabelecimento da valência verbal, os grupos que exemplifiquei acima constituem subconjuntos de Rel, onde onde Rel é o conjunto de dependências relevantes para valência {d1,d2,...,dn}. Por relevante entenda-se o escopo da valência verbal na gramática no momento (desconsiderando, por ora, obl). A tarefa consiste em determinar, para cada sentença, para token T de verbo, o maior subconjunto S de Rel* que constitui um subconjunto dos dependentes de T. Seja o exemplo http://match.grew.fr/data/61688295d560b/198.svg

O algoritmo deve retornar:

separar <nsubj,obj> colocar <nsubj,obj> recolher <>

Sobre essa última forma, é preciso levar em conta que está no particípio numa estrutura passiva, o que mostra a importância de extrair a forma verbal, ao lado de modo, como delineei em comentários anteriores.

lucasrct commented 3 years ago

@leoalenc Acredito que entendi o que você está pedindo, mas para confirmar gostaria de ver esse exemplo que você comentou, só que acho que você colocou o link errado pois nenhum verbo dentre separar, colocar e recolher está na sentença do link.

wellington36 commented 3 years ago

@leoalenc Acredito que entendi o que você está pedindo, mas para confirmar gostaria de ver esse exemplo que você comentou, só que acho que você colocou o link errado pois nenhum verbo dentre separar, colocar e recolher está na sentença do link.

@lucasrct, o verbo em questão é este, marcado:

image