Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

populate verb type hierarchy #19

Closed
leoalenc opened this issue Jul 8, 2021 · 84 comments
Closed

populate verb type hierarchy #19

leoalenc opened this issue Jul 8, 2021 · 84 comments
Assignees
Labels
enhancement New feature or request

Comments

@leoalenc
Copy link
Contributor

leoalenc commented Jul 8, 2021

@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
Copy link
Contributor Author

leoalenc commented Aug 5, 2021

@arademaker, no commit 10eccde, 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
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Contributor Author

@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
Copy link
Contributor Author

leoalenc commented Aug 19, 2021

@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
Copy link
Contributor Author

@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
Copy link
Contributor Author

leoalenc commented Aug 23, 2021

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
Copy link
Contributor Author

@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
Copy link

@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
Copy link
Contributor Author

leoalenc commented Aug 24, 2021

@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
Copy link
Contributor Author

leoalenc commented Aug 24, 2021

@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
Copy link

@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
Copy link

@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
Copy link
Contributor Author

@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 UniversalDependencies/UD_Portuguese-Bosque#337 (comment).

@leoalenc
Copy link
Contributor Author

@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
Copy link

wellington36 commented Aug 26, 2021

@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
Copy link
Contributor Author

leoalenc commented Aug 26, 2021

@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
Copy link

wellington36 commented Aug 26, 2021

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

UD_Portuguese-Bosque__master__pt_bosque-ud-dev conllu

@arademaker
Copy link
Contributor

@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
Copy link
Contributor

@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

@LR-POR LR-POR deleted a comment from wellington36 Oct 18, 2021
@LR-POR LR-POR deleted a comment from wellington36 Oct 18, 2021
@LR-POR LR-POR deleted a comment from wellington36 Oct 18, 2021
@leoalenc
Copy link
Contributor Author

leoalenc commented Oct 18, 2021

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: #19 (comment). Para obj e iobj, precisamos da ADP...

@leoalenc
Copy link
Contributor Author

leoalenc commented Oct 18, 2021

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 #19 (comment)

@LR-POR LR-POR deleted a comment from leoalenc Oct 18, 2021
@LR-POR LR-POR deleted a comment from leoalenc Oct 18, 2021
@leoalenc
Copy link
Contributor Author

leoalenc commented Oct 18, 2021

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
Copy link
Contributor

arademaker commented Oct 18, 2021

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
Copy link
Contributor Author

leoalenc commented Oct 18, 2021

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
Copy link
Contributor

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.

  • precisamos preservar a ordem dos filhos da esquerda para direita do verbo, serão mais clusters, mas teremos mais informação. Então o padrão subj,V,obj será diferente de obj,V,subj. Casos onde OBJ ocorre antes do VERBO (http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616dbf0d44f69)
  • precisamos, para filhos de um verbo introduzidos por uma preposição (complementados) saber qual foi o complementador (filho mark ou case do filho do verbo)
  • precisamos saber quando o verbo está na passiva (tem um filho AUX conectado via aux:pass) ou ativa.
  • precisamos usar estes dados para conseguir identificar possíveis analises erradas. Como?
  • precisamos então conseguir associar estas diáteses encontradas a tipos da gramática. Como?

@leoalenc
Copy link
Contributor Author

leoalenc commented Oct 18, 2021

@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
Copy link
Contributor

@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
Copy link
Contributor

arademaker commented Oct 18, 2021

@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
Copy link
Contributor Author

leoalenc commented Oct 18, 2021

  • 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
Copy link

lucasrct commented Oct 19, 2021

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
Copy link
Contributor Author

@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
Copy link
Contributor

arademaker commented Dec 22, 2021

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 added a commit that referenced this issue Dec 22, 2021
@leoalenc
Copy link
Contributor Author

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
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants