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

@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

@lucasrct , de fato me enganei, o link correto é

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

lucasrct commented 3 years ago

@leoalenc criei aqui um script capaz de extrair os filhos de cada verbo no bosque, só estou ainda pensando na melhor maneira de lidar guardar o resultado e interpretar.

Um exemplo,

o verbo 'comer' aparece 16 vezes no corpus de treino do bosque, sendo que suas configurações de filhos que ocorreram foram:

['advmod', 'aux', 'cc', 'obj'], ['mark', 'nsubj', 'obj'], ['conj', 'mark', 'obj'], ['expl', 'nsubj', 'obl'], ['aux', 'obj', 'obl'], ['conj', 'conj', 'conj', 'mark'], ['obl'], ['obj'], ['conj', 'conj', 'mark', 'obl'], [], ['cc', 'nsubj', 'obj'], ['cc', 'obl'], ['mark', 'obj'], ['mark']

É esse o caminho? Existe alguma deprel que podemos excluir da agregação? (Já removi as deprel do formato 'punct')

leoalenc commented 3 years ago

É esse o caminho? Existe alguma deprel que podemos excluir da agregação? (Já removi as deprel do formato 'punct')

@lucasrct , Muito bom! Sim, várias dependências não são relevantes, estamos interessados apenas no seguinte:

nsubj sujeito obj objeto direto iobj objeto indireto xcomp ccomp csubj expl

Para o objeto e o objeto indireto, precisamos do adp ligado via case. Para xcomp, csubj e ccomp, precisamos das conjunções ligadas por mark. Também são necessárias mais algumas informações adicionais, estão nos comentários, mas posso listar depois.

lucasrct commented 3 years ago

@leoalenc Ainda estou absorvendo o que estou lendo na thread, tentando fazer um trabalho paralelo ao de criar o script, por isso estou tentando segmentar a execução. Conforme vou lendo e entendendo mais a fundo, vou enriquecendo o script com mais informações.

lucasrct commented 3 years ago

@leoalenc Uma dúvida a respeito de:

Para o objeto e o objeto indireto, precisamos do adp ligado via case.

image

Nesse caso, deveríamos colocar a informação referente à preposição em após o colocar? Pois essa preposição não é filha de um token obj.

leoalenc commented 3 years ago

@leoalenc Uma dúvida a respeito de:

Para o objeto e o objeto indireto, precisamos do adp ligado via case. [...] Nesse caso, deveríamos colocar a informação referente à preposição em após o colocar? Pois essa preposição não é filha de um token obj.

@lucasrct , essa preposição não interessa, exatamente porque não é filha do obj e sim do obl. Depois de extraído o máximo subconjunto de dependentes de Rel conforme minha definição acima, interessam apenas os filhos desse dependentes ligados via case e mark.

leoalenc commented 3 years ago

@lucasrct , lembrando que, no meu comentário acima, objeto é obj e objeto indireto é iobj.

leoalenc commented 3 years ago

@lucasrct , veja este outro exemplo:

http://match.grew.fr/data/616adee240cc5/42.svg

Foi retirado desta query elaborada pelo @wellington36:

http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=6168622521909

Eu preciso obter, para cada verbo, de cada sentença do corpus, listas como as seguintes:

Lista 1:

VERB:pedir+Ind+Sing+3+Past+Fin
nsubj
iobj:case+ADP+a
ccomp:mark+SCONJ+que+Sub
xcomp:VERB+transformar+Inf

Lista 2:

VERB:empenhar+Sub+Plur+3+Pres+Fin
expl:PRON+se+Acc+Masc+Plur+3+Pres
obj:case+ADP+em

Lista 3:

VERB:transformar+Inf
obj:case+ADP+em

Coloquei os dependentes de cada um dos três verbos num formato vertical para facilitar a leitura, mas a saída inicial do algoritmo deve ser, para cada sentença, uma lista de listas:

VERB:pedir+Ind+Sing+3+Past+Fin nsubj iobj:case+ADP+a ccomp:mark+SCONJ+que+Sub xcomp:VERB+transformar+Inf

VERB:empenhar+Sub+Plur+3+Pres+Fin expl:PRON+se+Acc+Masc+Plur+3+Pres obj:case+ADP+em

VERB:transformar+Inf obj:case+ADP+em

Observe o seguinte sobre a notação utilizada:

  1. Eu não transcrevo os atributos, mas apenas os valores deles, para economizar espaço.
  2. No caso de obj e iobj, extraio a ADP ligada por case.
  3. No caso de ccomp, extraio a conjunção ligadas por mark e o modo do verbo encaixado, ou seja, empenhar que está ligado a pedir via ccomp.
  4. No caso de xcomp, extraio os valores dos atributos do verbo (se houver uma conjunção subordinada, também preciso de suas informações, como fiz com o ccomp).
  5. Extraio os valores dos atributos do expl.

Obrigado por sua colaboração. Caso tenha dúvidas, formule-as aqui e, se eu demorar a responder, pode enviar mensagem alertando pelo Telegrama.

leoalenc commented 3 years ago

@lucasrct, vi agora que pedir no exemplo dado rege também um obj realizado pelo pronome se, que deverá entrar na lista:

VERB:pedir+Ind+Sing+3+Past+Fin
nsubj
iobj:case+ADP+a
ccomp:mark+SCONJ+que+Sub
obj
xcomp:VERB+transformar+Inf

@arademaker e @wellington36, a propósito, há pelo menos três erros na anotação desse exemplo. Vou abrir issue no repositório do Bosque:

  1. Esse pronome se na função de obj não se vincula a pedir, mas a transformar!
  2. Deveria estar anotado como expl.
  3. Esse xcomp, na verdade, não é um xcomp de pedir, pois não constitui argumento nuclear.
leoalenc commented 3 years ago

@lucasrct , esqueci do verbo surgir no exemplo dado acima:

Lista 4

VERB:surgir+Sub+Plur+3+Pres+Fin
nsubj

Esse verbo tem um filho ligado via mark, no entanto, como esse verbo vincula-se via advcl a pedir, essa informação não é relevante.

lucasrct commented 3 years ago

@leoalenc Estou terminando de bolar o script para a extração da informação.

Em um caso como esse

http://match.grew.fr/data/616b52deefab9/3968.svg

Em que o verbo crer possui 2 outros verbos ligados pela relação 'ccomp', é necessária a informação dos dois? Não são numerosos no corpus esses casos, mas gostaria de tratá-los da forma adequada.

leoalenc commented 3 years ago

@leoalenc Estou terminando de bolar o script para a extração da informação.

Em um caso como esse

http://match.grew.fr/data/616b52deefab9/3968.svg

Em que o verbo crer possui 2 outros verbos ligados pela relação 'ccomp', é necessária a informação dos dois? Não são numerosos no corpus esses casos, mas gostaria de tratá-los da forma adequada.

@lucasrct , Muito bem! Sim, no caso de repetições, precisamos extrair todas. no exemplo que você mostrou, trata-se, na verdade, de um erro do analisador sintático estatístico. O segundo ccomp é dependente do primeiro. Ou seja, temos, nesse exemplo, três verbos: O primeiro verbo é crer, Cuja lista é ccomp

Não creio que o povo americano queira que… 

O segundo verbo é querer, cuja lista é composta de nsubj ccomp

>O povo americano queira que eu...

O terceiro verbo é fazer Cuja lista é composta de nsubj obj

Eu fizesse isso

Evidentemente, o seu algoritmo não pode resolver essas questões. É importante que você me prepare as listas com duplicatas que eu posso examinar manualmente e fazer as correções necessárias.

lucasrct commented 3 years ago

@leoalenc Aqui está a lista com os verbos que possuem 2 ccomp (não existe casos de mais de dois no corpus de treino)


sent_id: CP233-4
Verbo: gostar (gostaria)
Frase: Continuo a dizer que acho bem que os Barmens saibam que a Delegação está aberta para todos eles,e gostaria imenso que eles aparecessem em vez de uma vez por mês, dez vezes porque temos todas as condições criadas para os receber.

sent_id: CP387-2
Verbo: acreditar (acreditar)
Frase: os cubanos podem simplesmente não acreditar que os Estados Unidos os retenham perpetuamente em Guantanamo, ou que os enviem para outros países, e então a fuga continuará.

sent_id: CP419-3
Verbo: acrescentar (acrescenta)
Frase: O jornal acrescenta que os gibraltinos receiam que a medida seja um primeiro passo para os britânicos desistirem da soberania sobre o rochedo, situado num promontório no sul de Espanha, devolvendo-o aos espanhóis.

sent_id: CP775-6
Verbo: crer (creio)
Frase: Não creio que o povo americano queira que eu fizesse isso».

sent_id: CF395-5
Verbo: ver (vi)
Frase: Nunca vi um partido render-se tão rápida e incondicionalmente como o PT está fazendo.
leoalenc commented 3 years ago

@leoalenc Aqui está a lista com os verbos que possuem 2 ccomp (não existe casos de mais de dois no corpus de treino)

sent_id: CP419-3 Verbo: acrescentar (acrescenta) Frase: O jornal acrescenta que os gibraltinos receiam que a medida seja um primeiro passo para os britânicos desistirem da soberania sobre o rochedo, situado num promontório no sul de Espanha, devolvendo-o aos espanhóis.

@lucasrct, muio obrigado! Não examinei a árvore dependencial de todas essas ocorrências, porque a busca pelo padrão abaixo retornou apenas este resultado, correspondente ao exemplo acima.

http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616db5b440864

Podemos observar, @arademaker e @wellington36, que o analisador estatístico sistematicamente comete o mesmo tipo de erro que apontei antes, atribuindo ao primeiro verbo que rege um ccomp, ou seja, acreditar no exemplo em tela, um outro ccomp da mesma sentença, regido pelo verbo encaixado, i.e., recear.

lucasrct commented 3 years ago

Estou pensando aqui na melhor maneira para exibir os dados @leoalenc, por exemplo:

Verbos que possuem como subconjunto de relações [nsubj,obj]

[situar, continuar, manter, esperar, deixar, ser, correr, querer, fugir, ir, encontrar, gastar, juntar, reivindicar, faltar, lembrar, considerar, especializar, dispor, encomendar, vir, financiar, sair, pagar, acontecer, ...]

Não acho que apenas isso seja uma informação suficiente, mas ao mesmo tempo, não acho que apenas alguns exemplos de alguns verbos seria o suficiente para decidirmos sobre todos.

lucasrct commented 3 years ago

Um exemplo do output que você deu a ideia acima: Todas as formas de ocorrência do verbo esperar

esperar+Ger ccomp VERB+mark+SCONJ+que nsubj 
esperar+Ind+Sing+3+Pres+Fin xcomp ADJ+terminado nsubj 
esperar+Ind+Plur+1+Imp+Fin obj 
esperar+Ind+Sing+1+Pres+Fin ccomp VERB+mark+SCONJ+que nsubj 
esperar+Ind+Sing+3+Imp+Fin xcomp VERB+aparecer 
esperar+Ind+Plur+3+Imp+Fin xcomp VERB+encontrar 
esperar+Inf obj 
esperar+Ger obj 
esperar+Ind+Plur+3+Pres+Fin xcomp VERB+ver nsubj 
esperar+Ind+Sing+1+Pres+Fin ccomp VERB+mark+SCONJ+que 
esperar+Ind+Sing+1+Pres+Fin obj 
esperar+Inf obj PRON+se+Acc+Masc+Plur+3+Prs
esperar+Sub+Sing+3+Pres+Fin xcomp VERB+subir 
esperar+Ind+Sing+3+Pres+Fin xcomp VERB+encontrar nsubj 
esperar+Ger obj nsubj 
esperar+Ind+Plur+1+Pres+Fin xcomp VERB+continuar 
esperar+Ind+Plur+3+Imp+Fin obj nsubj 
esperar+Ind+Sing+3+Pres+Fin obj iobj nsubj 
esperar+Ind+Sing+1+Pres+Fin xcomp VERB+vir 
esperar+Ind+Plur+3+Pres+Fin obj iobj nsubj 
esperar+Ind+Sing+1+Pres+Fin 
esperar+Ind+Plur+3+Pres+Fin obj nsubj 
esperar+Ind+Plur+3+Pres+Fin PRON+se+Acc+Fem+Plur+3+Prs
esperar+Inf ccomp VERB+mark+SCONJ+que 
esperar+Ind+Sing+1+Imp+Fin obj nsubj 
esperar+Ind+Sing+3+Pres+Fin obj nsubj 
esperar+Ind+Sing+1+Pres+Fin xcomp VERB+sair 
esperar+Ind+Sing+3+Past+Fin obj nsubj 
esperar+Ind+Sing+1+Pres+Fin xcomp ADJ+último 
esperar+Ind+Sing+3+Pres+Fin ccomp VERB+mark+SCONJ+que nsubj 
esperar+Ger ccomp VERB+mark+SCONJ+que
arademaker commented 3 years ago

Um exemplo do output que você deu a ideia acima: Todas as formas de ocorrência do verbo esperar

Acho que também precisamos saber a morfologia do verbo da clausula subordinada...

arademaker commented 3 years ago

Na query acima, @leoalenc pergunta de verbos com dois ccomp e um nsubj e temos 2 casos. Mas tirando do padrão o nsubj, ficamos com 10 casos:

http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616db650bebb1

leoalenc commented 3 years ago

@lucasrct , veja este outro exemplo:

http://match.grew.fr/data/616adee240cc5/42.svg

Foi retirado desta query elaborada pelo @wellington36:

http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=6168622521909

Eu preciso obter, para cada verbo, de cada sentença do corpus, listas como as seguintes:

Lista 1:

VERB:pedir+Ind+Sing+3+Past+Fin
nsubj
iobj:case+ADP+a
ccomp:mark+SCONJ+que+Sub
xcomp:VERB+transformar+Inf

Lista 2:

VERB:empenhar+Sub+Plur+3+Pres+Fin
expl:PRON+se+Acc+Masc+Plur+3+Pres
obj:case+ADP+em

Lista 3:

VERB:transformar+Inf
obj:case+ADP+em

Coloquei os dependentes de cada um dos três verbos num formato vertical para facilitar a leitura, mas a saída inicial do algoritmo deve ser, para cada sentença, uma lista de listas:

VERB:pedir+Ind+Sing+3+Past+Fin nsubj iobj:case+ADP+a ccomp:mark+SCONJ+que+Sub xcomp:VERB+transformar+Inf

VERB:empenhar+Sub+Plur+3+Pres+Fin expl:PRON+se+Acc+Masc+Plur+3+Pres obj:case+ADP+em

VERB:transformar+Inf obj:case+ADP+em

Observe o seguinte sobre a notação utilizada:

  1. Eu não transcrevo os atributos, mas apenas os valores deles, para economizar espaço.
  2. No caso de obj e iobj, extraio a ADP ligada por case.
  3. No caso de ccomp, extraio a conjunção ligadas por mark e o modo do verbo encaixado, ou seja, empenhar que está ligado a pedir via ccomp.
  4. No caso de xcomp, extraio os valores dos atributos do verbo (se houver uma conjunção subordinada, também preciso de suas informações, como fiz com o ccomp).
  5. Extraio os valores dos atributos do expl.

Obrigado por sua colaboração. Caso tenha dúvidas, formule-as aqui e, se eu demorar a responder, pode enviar mensagem alertando pelo Telegrama.

@lucasrct , veja de novo acima, especialmente o item 2.

leoalenc commented 3 years ago

Estou pensando aqui na melhor maneira para exibir os dados @leoalenc, por exemplo:

Verbos que possuem como subconjunto de relações [nsubj,obj]

[situar, continuar, manter, esperar, deixar, ser, correr, querer, fugir, ir, encontrar, gastar, juntar, reivindicar, faltar, lembrar, considerar, especializar, dispor, encomendar, vir, financiar, sair, pagar, acontecer, ...]

Não acho que apenas isso seja uma informação suficiente, mas ao mesmo tempo, não acho que apenas alguns exemplos de alguns verbos seria o suficiente para decidirmos sobre todos.

Obrigado, @lucasrct. Veja item 2 de novo: https://github.com/LR-POR/PorGram/issues/19#issuecomment-944928100. Para obj e iobj, precisamos da ADP...

leoalenc commented 3 years ago

Um exemplo do output que você deu a ideia acima: Todas as formas de ocorrência do verbo esperar

Acho que também precisamos saber a morfologia do verbo da clausula subordinada...

@lucasrct , parabéns! Mas, de fato, precisamos disso que @arademaker apontou. Veja meus exemplos aqui e nos comentários https://github.com/LR-POR/PorGram/issues/19#issuecomment-944928100

leoalenc commented 3 years ago

Um exemplo do output que você deu a ideia acima: Todas as formas de ocorrência do verbo esperar

esperar+Ger ccomp VERB+mark+SCONJ+que nsubj 
esperar+Ind+Sing+3+Pres+Fin xcomp ADJ+terminado nsubj 
esperar+Ind+Plur+1+Imp+Fin obj 
[...]

@lucasrct , esse tipo de lista constitui excelente ponto de partida. Precisamos consolidar as informações agregadas ao lema, no caso esperar. Somente uma informação me aprece necessária:

esperar+Act (para forma ativa) esperar+Pass (para forma passiva)

Assim, as primeiras linhas ficariam:

esperar+Act ccomp VERB+mark+SCONJ+que nsubj esperar+Act xcomp ADJ+terminado nsubj esperar+Act obj esperar+Act ccomp VERB+mark+SCONJ+que nsubj esperar+Act xcomp VERB+aparecer esperar+Act xcomp VERB+encontrar esperar+Act obj

arademaker commented 3 years ago

para determinar a forma passiva, o que podemos usar? me parece que procurar pelo AUX filho do verbo que é um aux:pass é o mais correto/seguro:

% awk '$8 ~ /aux:pass/' *.conllu  | wc -l
    1194
% awk '$8 ~ /nsubj:pass/' *.conllu  | wc -l
     999

nem todas as formas passivas tem o sujeito da passiva.

leoalenc commented 3 years ago

para determinar a forma passiva, o que podemos usar? me parece que procurar pelo AUX filho do verbo que é um aux:pass é o mais correto/seguro: [...] nem todas as formas passivas tem o sujeito da passiva.

@arademaker , sim, o auxiliar da passiva é importante, outro indício é a forma do verbo, que deve estar no particípio passado. Essa informação é crucial porque, do contrário, não será feita uma modelação correta da valência a partir das molduras encontradas no corpus: Por exemplo, imaginemos o seguinte exemplo fictício: as casas foram destruídas pela enchente. A moldura extraída será de apenas um sujeito nsubj. Se eu não tiver a informação sobre o uso passivo do verbo, eu vou concluir erroneamente que se trata de um uso intransitivo do verbo, como, por exemplo: ??as casas destruíram. Por sinal, esse uso não é corrente. O agente da passiva não é importante, no exemplo dado, pela enchente, acho que ele está sendo analisado no bosque como obl, certo?

arademaker commented 3 years ago

Verbos que possuem como subconjunto de relações [nsubj,obj] [...] Não acho que apenas isso seja uma informação suficiente, mas ao mesmo tempo, não acho que apenas alguns exemplos de alguns verbos seria o suficiente para decidirmos sobre todos.

leoalenc commented 3 years ago

@arademaker , A ordem dos elementos da moldura não é relevante para determinar a valência! É por isso que eu usei o termo subconjunto naquela minha tentativa de formalização.

arademaker commented 3 years ago

@arademaker , sim, o auxiliar da passiva é importante, outro indício é a forma do verbo, que deve estar no particípio passado.

http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616dc0a898287&clustering=V.VerbForm

Um caso de Fin e 999 de Part.

arademaker commented 3 years ago

@arademaker , A ordem dos elementos da moldura não é relevante para determinar a valência! É por isso que eu usei o termo subconjunto naquela minha tentativa de formalização.

Ah, tudo bem, mas acho que é uma pista para identificarmos possíveis inconsistencias de analises. ~Por exemplo, passivas não anotadas como deveriam...~ (esquece, acabamos de ver que nestes casos a anotação de construções passivas geralmente recebe como complemento nsubj:pass e obl:agent) por isso sugeri ao @lucasrct tentar preservar e, eventualmente, podemos agrupar, se necessário posteriormente, formas cuja diferença seja apenas na ordem.

leoalenc commented 3 years ago
  • [ ] precisamos usar estes dados para conseguir identificar possíveis analises erradas. Como?

@arademaker , associando às molduras exemplos curtos vai me permitir identificar coisas estranhas. Alguns padrões detectados já dispararam o sinal de alerta, como aqueles casos de nsubj ccomp ccomp.

  • [ ] precisamos então conseguir associar estas diáteses encontradas a tipos da gramática. Como?

@arademaker , se eu tiver diante de mim uma lista como a última que o @lucasrct preparou, com as informações que faltam e fazendo as consolidações recomendadas, eu vou saber exatamente em cada caso qual o tipo de verbo da gramática correspondente, pelo menos é o que espero pra maioria dos casos. Eventualmente, teremos material espúrio gerado por erros do bosque, que precisarão de uma análise manual, como já apontei diversas vezes.

lucasrct commented 3 years ago

Observe o seguinte sobre a notação utilizada:

  1. Eu não transcrevo os atributos, mas apenas os valores deles, para economizar espaço.
  2. No caso de obj e iobj, extraio a ADP ligada por case.
  3. No caso de ccomp, extraio a conjunção ligadas por mark e o modo do verbo encaixado, ou seja, empenhar que está ligado a pedir via ccomp.
  4. No caso de xcomp, extraio os valores dos atributos do verbo (se houver uma conjunção subordinada, também preciso de suas informações, como fiz com o ccomp).
  5. Extraio os valores dos atributos do expl.

Obrigado por sua colaboração. Caso tenha dúvidas, formule-as aqui e, se eu demorar a responder, pode enviar mensagem alertando pelo Telegrama.

@lucasrct , veja de novo acima, especialmente o item 2.

@leoalenc, obrigado pelos direcionamentos! Quanto ao item 2, eu o considerei no script, o que acontece é que muitos casos com obj não possuem um token ADP ligado via case... por isso não aparecem.

Quanto à informação da voz passiva, visto que, pelo que entendi, não existe um método automatizável e seguro de garantir se determinado verbo está na voz passiva, acredito que o ideal seria não colocar por enquanto, visto que dependeria de algumas inferências e poderíamos agregar mais ruido ao processo, o que acham?

leoalenc commented 3 years ago

@leoalenc, obrigado pelos direcionamentos! Quanto ao item 2, eu o considerei no script, o que acontece é que muitos casos com obj não possuem um token ADP ligado via case... por isso não aparecem.

@lucasrct , obrigado, isso era esperado, pois, no caso de obj que constitui um chamado objeto direto, de fato não há ADP ligada via case. Do mesmo modo, no caso de XCOMP e CCOMP, nem sempre ocorre SCONJ ligada via mark. Mas, quando houver, precisamos desses elementos, tal como expliquei no meu esboço. Temos exemplos dessas diferentes situações nestas análises que constituem uma espécie de padrão ouro, tendo sido revisadas por mim e pelo @arademaker: https://github.com/LR-POR/ud-matrix/blob/master/examples.conllu

Quanto à informação da voz passiva, visto que, pelo que entendi, não existe um método automatizável e seguro de garantir se determinado verbo está na voz passiva, acredito que o ideal seria não colocar por enquanto, visto que dependeria de algumas inferências e poderíamos agregar mais ruido ao processo, o que acham?

@lucasrct , é verdade que o corpus contém erros de anotação que dificultam ou mesmo impedem a recuperação do estatuto passivo de um verbo, como discuti com @arademaker. No entanto, precisamos agregar essas informações sempre que houver, pois, sem elas, não será possível atribuir uma valência aos verbos! As informações sobre voz passiva são as seguintes:

  1. subetiqueta pass em nsubj:pass;
  2. um auxiliar passivo aux:pass como dependente imediato do verbo (visando à correção de possíveis erros de anotação, é importante, também, extrair o lema desse auxiliar;
  3. forma verbal no particípio, ou seja, VerbForm=Part, e na voz passiva, i.e., Voice=Pass.

É possível que apenas um dos itens esteja presente, mas é melhor isso do que nada. Aplicando esses critérios a este exemplo, extraído por meio desta query, obtemos inicialmente:

LISTA 2

CP98-2
VERB:prevenir+Masc+Plur+Part+Pass
aux:pass:ser+Ind+Plur+3+Fin
nsubj:pass
ccomp:mark+SCONJ+de+mark+SCONJ+que+Ind

Esse é o dado bruto, que eu gostaria que fosse armazenado num arquivo à parte ou numa determinada estrutura de dados como um dicionário de Python. Esse tipo de informação pode ser importante para checagem da análise. Para consolidação dos dados, eu faria primeiro a seguinte simplificação:

CP98-2
VERB:prevenir
nsubj:pass
ccomp:mark+SCONJ+de+mark+SCONJ+que+Ind

Em seguida, com base nas diferentes listas desse tipo, eu criaria um outro dicionário cujas chaves seriam molduras como nsubj:pass=ccomp:mark+SCONJ+de+mark+SCONJ+que+Ind e os valores, listas de verbos que ocorrem com essa moldura. Para mim, isso seria suficiente para criar entradas para esses verbos na gramática atribuindo-lhes os tipos apropriados.

arademaker commented 2 years ago

See d715dff, lexicon file extracted from bosque. code will be provided by @leoalenc but it uses data provided by the tools/etc/valence.py code from @lucasrct

leoalenc commented 2 years ago

Por sugestão de @arademaker, estou fechando a issue, que é muito ampla, devendo acompanhar todo o desenvolvimento da gramática. Passarei a abrir issues sobre grupos específicos de verbos, como, por exemplo, já fiz em #66 e #67.

arademaker commented 2 years ago

Por grupos de verbo ou por recurso usado para extração de léxico. Podemos ter um issue para extração bosque , outro para extração do dhbb, outro para extração da wordnet etc