-
Notifications
You must be signed in to change notification settings - Fork 0
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
como extrair as preposições e complementadores? #18
Comments
Entendi o ponto @leoalenc! Eu acredito que tenhamos uma funcionalidade parecida atualmente na ferramenta, mas isso ocorre a nível do verbo. Você pode dar um .print() em um objeto do tipo verbo para ver todas as ocorrências dele no bosque, com as informações que discutimos no issue 19. O seu ponto seria então de enriquecer esse objeto <nsubj,VERB,obj> com os valores específicos, como por exemplo adicionando a informação do 'de' no objeto. Isso é possível, mas aumentaria bastante o conjunto de classes no final! Eu escrevi o script para considerar os casos nsubj:pass e aux:pass como um caso diferente também, então pode existir a seguinte construção <nsubj:pass, VERB>, por exemplo. |
No exemplo do README
É possível gerar essa lista para cada verbo. Essa lista contem, em particular, as informações que você considerou nesse issue. |
@lucasrct , obrigado. Mas como temos em vista o artigo, conceitualmente não é adequado como está, pois |
Eu tenho a impressão de que @leoalenc precisa mesmo de outra agregação, pelas chaves que ele descreveu. Afinal serão estas classes que ele irá tentar manualmente mapear para os tipos definidos na gramática. Sobre a passiva, não acho que queremos classes distintas como Sugiro fixarmos a identificação via o AUX ligado por aux:pass:
Ou seja, mesmo que tenhamos erros, temos provavelmente casos de voz passiva sem sujeito. Tanto [1] quanto [2] podem ser usados. Se quiser pode mesmo usar ambos os critérios e saberemos que eventualmente alguns casos serão perdidos, mas ok. Isso é outro issue. |
Entendi o ponto, mas ainda não está claro exatamente o melhor formato. @leoalenc ou @arademaker, poderiam dar mais um exemplo de uma frase / verbo e o output desejado? Sobre o caso da voz passiva, os critérios então seriam a existência de nsubj:pass ou ( aux:pass E VerbForm = Part), ou Voice = Pass, é isso? |
Em https://github.com/LR-POR/ud-matrix/blob/master/examples.conllu#L7-L15 Devemos extrair:
não, o critério é: se tem filho aux:pass e Voice=Pass é passiva! |
Obrigado, está mais claro agora, vou trabalhar na mudança, não me parece algo muito complicado de alterar no código. A ideia então é trocar também o VERB pelo verbo específico? Ou criaremos clusteres de todos os verbos que satisfazem obj:que,nsubj,VERB, por exemplo |
@leoalenc vc pode ajudar a completar outros casos e/ou corrigir a entrada que espera. Veja https://github.com/LR-POR/ud-matrix/blob/master/examples.conllu#L4 acho que assim vai ficar super concreto para o @lucasrct |
Precisamos incluir mais informações nas chaves:
https://github.com/LR-POR/tools/blob/main/etc/valence_script/README.md @lucasrct , veja agora, novamente, este exemplo de comentário anterior: 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 Para obter o verbo pedir na moldura do exemplo, a chave do dicionário acima deve ser:
numa única moldura
Pode-se convencionar colocar |
@arademaker , eu acho que fui bastante explícito no meu último comentário sobre as informações que precisam ser agregadas. Prefiro não incluir essas informações lá no outro repositório para não gerar confusão. |
@lucasrct e @arademaker , como estava no readme era o formato adequado para mim, busco, por exemplo:
e obtenho os 20 primeiros verbos com a moldura. Como disse, só falta agregar as informações sobre o
retornaria lista com gostar, depender, precisar etc., motivada por exemplos do corpus como
retornaria lista com obedecer, ajudar, avisar etc., motivada por exemplos do corpus como
retornaria lista com devorar, destruir, consertar etc., motivada por exemplos do corpus como
|
Entendo, mas o ponto é que fizemos os exemplos simples exatamente para facilitar a compreensão sobre UD e a tradução para a PorGram e usar exemplos das. sentenças complexas do corpus confunde... O fato é que embora esteja claro para você e para mim, não está (ou estava) claro para o @lucasrct |
Só para conferir se estamos na mesma página: As alterações que estou fazendo são:
Como lidar com os tokens nsubj:pass? Coloco no mesmo bolo que os nsubj? Como lidar com os casos nsubj:pass? Junto no mesmo bolo dos nsubj? |
@lucasrct, proponho esta alteração:
@lucasrct , se tivermos
Vou entender que se trata do sujeito de uma forma na voz passiva. @arademaker , que acha? |
O verbo ter na seguinte frase, teria qual configuraçao?
Tanto o token sconj que (token 6) quanto o token sconj de (token 16) são filhos do verbo informar que é filho de ter via xcomp. Nesse caso, deveríamos captar o 'de' e nao o 'que', correto? Como decidir automaticamente, nesses casos? O token mais próximo do verbo? |
Subi o script atualizado, a única questao é que existem casos onde o verbo de xcomp está ligado a mais de 1 token sconj, e isso não foi tratado ainda, portanto aparecerá dois tokens na visualizaçao. |
para verbos com mais de um SCONJ, devemos simplesmente listar na valencia esta existencia. Note que isto permitirá identificarmos erros nos dados, como no caso de dois Em tempo, eu acho que não devemos
Me parece (posso ter entendido errado) que queremos qualquer filho case/mark dos nós VERB ligados a outro verbo via xcomp ou ccomp. E tanto para ccomp quanto xcomp queremos a forma do verbo secundário.
|
Eu editei seu comentário para apresentar a sentença de forma mais visual. O
Certo @leoalenc ? ou seja, realmente não acho que o
|
@lucasrct, de fato, @arademaker tem razão, a sentença tem erros de anotação, mas o script deve ser cego pra isso, refletindo o que está no corpus. O que for extraído de dados errados vai normalmente parecer estranho linguisticamente e isso servirá para corrigir posteriormente o corpus.
Ver http://match.grew.fr/[email protected]&custom=6170d0589dc63 http://match.grew.fr/data/6170d0589dc63/1055_1.svg Considerando o dado de entrada errado, vamos ter realmente duas conjunções filhas de informar, gerando uma moldura espúria:
que retorna o verbo ter (e talvez outros).
|
|
Pronto @arademaker, criei a função e já a documentei. Acabei de fazer o PR. Vou também documentar melhor o código e pretendo te-lo documentado até o fim do dia. |
@arademaker, concordo, isso seria extremamente útil para testar a ferramenta. @lucasrct, poderia criar dicionário de Python a partir desses exemplos e colocar na pasta da ferramenta? |
@leoalenc A função foi criada, ela se chama extract_valences, e, inicialmente possui como entrada o path de um .conllu, mas irei modificá-la para ser um pouco mais agrangente, como sugerido pelo @arademaker, podendo ter um padrão ou um diretório como input! |
@lucasrct, parabéns pelo programa extrator de valências. Com as modificações necessárias, será de extrema valia para a construção do léxico da PorGram e de outras gramáticas, inclusive de outras línguas. Infelizmente, receio que eu não vou poder fazer muita coisa com o extrator no estado atual para povoar o léxico da PorGram. De fato, como expliquei nos meus comentários em LR-POR/PorGram#19 (comment), saber que um verbo ocorre com a moldura
'<nsubj,VERB,obj>'
não é suficiente para atribuí-lo a um dos tipos da gramática, uma vez que eu preciso saber se o objeto é direto ou se é introduzido por meio de uma preposição e qual exatamente é essa preposição. Do mesmo modo, preciso, paraxcomp
eccomp
, das propriedades listadas nos meus comentários da mencionada issue.@arademaker, alguma ideia de como fazer isso no estágio atual do programa? @lucasrct, você teria como integrar essas informações?
https://github.com/LR-POR/ud-matrix/blob/master/examples.conllu#L186-L199
Eu preciso da seguinte moldura para codificar esse verbo na gramática:
Observe que incluí
act
para caracterizar o verbo como forma na voz ativa, ou podemos convencionar que apenasVERB
é voz ativa eVERB:pass
é voz passiva. Como @arademaker e eu temos comentado em diversos lugares, são vários os indicativos de voz passiva, mas bastariansubj:pass
ouVoice=Pass
ouVerbForm=Part
Eaux:pass
para atribuir a voz passiva.The text was updated successfully, but these errors were encountered: