-
Notifications
You must be signed in to change notification settings - Fork 1
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
Comments
@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. |
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? |
@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.
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. |
@arademaker, por acaso descobri que dois tipos de portuguese.tdl, gerados pela Matriz Gramatical, têm o prefixo my-:
|
@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.
|
@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. |
@wellington36 e @arademaker, vamos pensar juntos no formato dessa tabela com os resultados. Inicialmente, imagino algo simples, neste formato:
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. |
@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. |
@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 |
@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. |
@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. |
@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. |
@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.
|
@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. |
@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. |
@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? |
@leoalenc de fato entendi, de qualquer forma segue o gráfico da árvore. |
@leoalenc os tipos da primeira coluna não estão relacionados à hierarquia do lexicon no formulario da MATRIX? |
@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 |
Obrigado, @lucasrct. Veja item 2 de novo: #19 (comment). Para obj e iobj, precisamos da ADP... |
@lucasrct , parabéns! Mas, de fato, precisamos disso que @arademaker apontou. Veja meus exemplos aqui e nos comentários #19 (comment) |
@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:
Assim, as primeiras linhas ficariam:
|
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. |
|
@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. |
http://match.grew.fr/?corpus=UD_Portuguese-Bosque@dev&custom=616dc0a898287&clustering=V.VerbForm Um caso de Fin e 999 de Part. |
Ah, tudo bem, mas acho que é uma pista para identificarmos possíveis inconsistencias de analises. |
@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.
@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. |
@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? |
@lucasrct , obrigado, isso era esperado, pois, no caso de
@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:
É possível que apenas um dos itens esteja presente, mas é melhor isso do que nada. LISTA 2
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.
Em seguida, com base nas diferentes listas desse tipo, eu criaria um outro dicionário cujas chaves seriam molduras como |
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. |
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 |
@arademaker, diferentes estratégias podem ser utilizadas para povoar a hierarquia de tipos verbais baseada na valência:
The text was updated successfully, but these errors were encountered: