LR-POR / PorGram

A Portuguese HPSG Grammar
Other
2 stars 1 forks source link

organize the test sentences into test suites #5

Closed leoalenc closed 1 year ago

leoalenc commented 3 years ago

@arademaker, estou revendo a tradução ou adaptação desse conjunto teste para o português do Brasil, de modo a poder avaliar a cobertura da gramática. Num primeiro momento, vou simplesmente juntar num arquivo todas as traduções possíveis que me ocorrerem ou que me forem sugeridas. Levarei em conta, também, as sentenças equivalentes dos conjuntos teste do alemão e francês. Num segundo momento, seria interessante organizar as traduções seguindo estas orientações, para o que peço ajuda, se isso for realmente relevante para o desenvolvimento da PorGram:

The MRS test suite is currently used both as a collection of phenomena, and as a collection of translation equivalents.

As not all languages have exactly the same phenomena as English, we make the following distinctions .

Canonical examples are all numbered with X1. Extra examples finish with X[2-5]. That is X[1-5] should all have roughly the same MRS as the English Similar constructions that aren't translations end with X[6-9]. This may have a different MRS, but a similar phenomenon.

http://moin.delph-in.net/wiki/MatrixMrsTestSuite

Esta issue será fechada quando esses dois objetivos forem cumpridos.

arademaker commented 3 years ago

Eu mencionei este assunto em https://github.com/delph-in/docs/issues/17, veja que Erg tem no repositório dela tanto esta MRs test suite como a CSLI test suite, sendo a segunda, segundo o Stephan (veja quote no issue) sobre estruturas sintáticas e esta MRS sobre representações semânticas.

Uma solução seria adotar a mesma estratégia que Erg, incorporar neste repo as test suites e suas anotações golden como profiles. O LKB_FOS no Linux se conecta ao TSDB e pode trabalhar com profiles ao invés de text files.

arademaker commented 3 years ago

@leoalenc eu gostaria de unificar os arquivos test_sentences e my-test_sentences.txt que estão no repositório. Isto está relacionado ao novo repositório que movi para cá http://github.com/LR-POR/ud-matrix e ao issue #19. A tabela do #19 poderá conter apenas os IDs das sentenças nos respectivos test suites quando organizarmos eles. Mas temos hoje várias novas sentenças que não estavam nos datasets originais:

% wc -l my-test_sentences.txt test_sentences
     542 my-test_sentences.txt
     299 test_sentences
leoalenc commented 3 years ago

@leoalenc eu gostaria de unificar os arquivos test_sentences e my-test_sentences.txt que estão no repositório. Isto está relacionado ao novo repositório que movi para cá http://github.com/LR-POR/ud-matrix e ao issue #19. A tabela do #19 poderá conter apenas os IDs das sentenças nos respectivos test suites quando organizarmos eles. Mas temos hoje várias novas sentenças que não estavam nos datasets originais:

% wc -l my-test_sentences.txt test_sentences
     542 my-test_sentences.txt
     299 test_sentences

@arademaker, _testsentences é sempre gerado pela Matriz a partir do arquivo choices, que contém esses exemplos. Desse modo, seguindo sua sugestão, vou eliminar _testsentences.

arademaker commented 3 years ago

Não sei se eliminar faz sentido afinal outros tantos arquivos são também gerados pelo choices.

Mas certamente preciso entender seus exemplos melhor. A ideia é termos dentro do diretório tsdb os profiles para as test suítes MRS e CSLI, traduzidas. Mas vc criou um outro tanto de sentenças com variações das sentenças destes test suítes, certo? O que fazer com estas? Talvez criar outra test suíte? Ou manter nas mesmas relacionando de alguma forma as sentenças originais e suas variantes? Falta de atenção da minha parte, lendo com calma seu comentário inicial aqui, já temos a resposta do que fazer e como relacionar as sentenças pelos identificadores. Só vou precisar da sua ajuda para fazer esta relação das sentenças extras como as sentenças originais. Me avise quando puder, talvez em uma call possamos fazer juntos? Eu posso começar e peço para vc revisar depois?

Para casa profile que tivermos no tsdb, a ideia é ter as mesmas sentenças analisadas em ud neste repositório chamado agora UD-Matrix mas que precisa ser renomeado.

leoalenc commented 3 years ago

Não sei se eliminar faz sentido afinal outros tantos arquivos são também gerados pelo choices.

Mas certamente preciso entender seus exemplos melhor. A ideia é termos dentro do diretório tsdb os profiles para as test suítes MRS e CSLI, traduzidas. Mas vc criou um outro tanto de sentenças com variações das sentenças destes test suítes, certo? ~O que fazer com estas? Talvez criar outra test suíte? Ou manter nas mesmas relacionando de alguma forma as sentenças originais e suas variantes?~ Falta de atenção da minha parte, lendo com calma seu comentário inicial aqui, já temos a resposta do que fazer e como relacionar as sentenças pelos identificadores. Só vou precisar da sua ajuda para fazer esta relação das sentenças extras como as sentenças originais. Me avise quando puder, talvez em uma call possamos fazer juntos? Eu posso começar e peço para vc revisar depois?

Para casa profile que tivermos no tsdb, a ideia é ter as mesmas sentenças analisadas em ud neste repositório chamado agora UD-Matrix mas que precisa ser renomeado.

@arademaker, no momento, não temos uma versão final do conjunto de teste MRS em português do Brasil. E não ainda não traduzi o conjunto de teste CSLI. Portanto, o único conjunto de teste que tem sido utilizado para testar a gramática é _my-testsentences.txt, de que o arquivo apagado constitui um subconjunto. Esse conjunto de teste foi construído progressivamente para testar as diferentes versões da gramática. No diretório test, você pode acompanhar uma parte do desenvolvimento desse conjunto, comparando os diferentes arquivos com o prefixo out e os arquivos correspondentes com o prefixo choices em grammar_choices. Na verdade, não subi todos esses arquivos do meu diretório local, que contém toda a série desde as versões iniciais, ou seja, out01.txt e choices01.txt. Os exemplos de _my-testsentences.txt foram criados livremente por mim para testar os diferentes fenômenos que fui implementando, primeiro exclusivamente por meio do questionário, depois por meio de codificação manual em TDL. Procurei seguir a sequência do mais fácil para o mais difícil, conforme o meu aprendizado progressivo do sistema e do formalismo subjacente. Na implementação desses fenômenos, tive como norte maior o objetivo de permitir que a gramática analisasse o conjunto MRS. No entanto, não há vínculo direto entre _my-testsentences.txt e esse conjunto. Concluindo, para o que você pretende fazer, o que temos no momento é _my-testsentences.txt, que vai continuar crescendo, acompanhando a expansão da gramática. Num futuro próximo, podemos aplicar a gramática à versão do conjunto MRS que estou preparando, com os exemplos em português do Brasil. Analisar o conjunto MRS vai constituir, conforme parece, uma milestone.

leoalenc commented 3 years ago

@arademaker, veja https://github.com/LR-POR/PorGram/commit/6c66770fd7076c012a278fb137159396c0ea361b.

arademaker commented 3 years ago

related to #31

arademaker commented 1 year ago

We now have a core test suite but we need to revise some details:

  1. the ungrammatical ones must still be in the test set, so we can also test the grammar's robustness.
  2. the items should have global identifiers for model training once we have more treebanks (profiles), so we can allocate blocks of 8 digits for each profile. The core will be 00000000-99999999
  3. items will be enumerated not sequentially but given space between them for possible minor variations that we may want to introduce.

Once I have fixed that, I will close this issue, recreating the core profile. The test folder will be removed after the steps above, and the choice file will be updated not to have examples at all. It doesn't hurt to have the examples, but they are not supposed to be used for grammar development, just illustrative examples (maybe we can keep five small sentences).

We already have some sentences from the MRS Test suite translation in the core. So we may need to decide if in the future we many revise the core profile, removing the ones that are from MRS and keeping MRS separated from the new variations created by @leoalenc

arademaker commented 1 year ago

In c8f31413a433f6c1d76d6579fc6cb9e52962c4af

I used the command below to create the core.tsv

awk 'BEGIN {OFS="@"; print "i-id","i-input","i-wf";} $0 ~ /^\*/ {i=sprintf("%08.0f",FNR); print i,substr($0,2),0; next} {i=sprintf("%08.0f",FNR); print i,$0,1;}' ../../test/my-test_sentences.txt > core.tsv

Next, I prepared the tsdb/work/core to treebank with the command below. But now, we have ungrammatical sentences, so we need to consider each of the errors below if they were introduced on purpose.

% delphin process -s core -g ~/hpsg/porgram.dat --full-forest --options='--disable-generalization' ../work/core
Processing |#                               | 24/659NOTE: lexemes do not span position 2 `ladrou-se'!
NOTE: post reduction gap
NOTE: ignoring `o cachorro ladrou-se'
Processing |#####                           | 120/659NOTE: lexemes do not span position 1 `lagartãos'!
NOTE: post reduction gap
NOTE: ignoring `os lagartãos admiram o cachorro'
Processing |######                          | 128/659NOTE: lexemes do not span position 3 `inteligentea'!
NOTE: post reduction gap
NOTE: ignoring `a lagartinha é inteligentea'
Processing |######                          | 129/659NOTE: lexemes do not span position 3 `inteligenta'!
NOTE: post reduction gap
NOTE: ignoring `a lagartinha é inteligenta'
Processing |######                          | 131/659NOTE: lexemes do not span position 3 `feroza'!
NOTE: post reduction gap
NOTE: ignoring `a lagartinha é feroza'
Processing |######                          | 133/659NOTE: lexemes do not span position 3 `ferozas'!
NOTE: post reduction gap
NOTE: ignoring `as lagartinhas são ferozas'
Processing |######                          | 134/659NOTE: lexemes do not span position 3 `ferozeas'!
NOTE: post reduction gap
NOTE: ignoring `as lagartinhas são ferozeas'
Processing |########                        | 175/659NOTE: lexemes do not span position 2 `está-se'!
NOTE: post reduction gap
NOTE: ignoring `o cachorro está-se triste'
Processing |########                        | 176/659NOTE: lexemes do not span position 2 `é-se'!
NOTE: post reduction gap
NOTE: ignoring `o cachorro é-se triste'
Processing |########                        | 177/659NOTE: lexemes do not span position 6 `tivesse-se'!
NOTE: post reduction gap
NOTE: ignoring `o gato detestou que o cachorro tivesse-se latido'
Processing |########                        | 178/659NOTE: lexemes do not span position 7 `latido-se'!
NOTE: post reduction gap
NOTE: ignoring `o gato detestou que o cachorro tivesse latido-se'
Processing |################################| 659/659
NOTE: parsed 0 / 659 sentences, avg 12638k, time 18.66695s
arademaker commented 1 year ago

@leoalenc, the test_sentences should be the output of the matrix. It should match the test-sentences section in the choices file. But they are different. So, should I assume the current version of the files in the repo does not correspond to the ones generated by the matrix given the current choices file?

I confirmed that results.txt has sentences we don't have in core.txt. So results.txt may be based on a file that was not updated in the repository.

awk '$0 ~ /^[0-9]/ {s=gsub(/[ ]?[0-9]+[ ]?/,"",$0); print $0}' results.txt > results.raw
diff results.raw core.txt
arademaker commented 1 year ago

Considering the questions above. I also found two different versions of choices files:

  1. choices
  2. gold/choices89.txt

Can @leoalenc confirm which one is the last one?

@arademaker , choices is the last one. It was generated by the Grammar Matrix.

leoalenc commented 1 year ago

@arademaker , with https://github.com/LR-POR/PorGram/commit/436380819c6af8f43c42d2362664d3f25de6fd26, I removed two duplicates from core.txt:

sort core.txt | uniq -c | sort -nr | head

2 que gato o cachorro perseguiu 2 qual gato o cachorro perseguiu 1 vós estais felizes 1 uma artista imitou aquele gato 1 tu estás feliz 1 três ratazanas caçaram aquele cachorro 1 todos os gatos temem o cachorro 1 todos os gatos perseguiram algum cão 1 todos gatos temem o cachorro 1 todos gatos perseguiram alguns cães

leoalenc commented 1 year ago

@arademaker , the grammar does not generate any output for the following sentences:

26 a estudante disse para o artista para trazer uma bola 368 o cachorro tinha insistido em parar de latir

This is an excellent question for Dan!

This is why results.txt has fewer sentences than core.txt.

leoalenc commented 1 year ago

The file test_sentences not been used for the development of the grammar for a long time, see my first comment above. It is deprecated. The sole basis for the development of the grammar @arademaker is the file my-test_sentences.txt, which was created and has been updated manually.

arademaker commented 1 year ago

The comment https://github.com/LR-POR/PorGram/issues/5#issuecomment-1419438419 was fixed.

arademaker commented 1 year ago

@leoalenc can you double-check the examples in

https://github.com/LR-POR/PorGram/blob/main/tsdb/skeletons/core.txt

I found some cases that I expected to be ungrammatical (marked as 0 in the last field):

6300@que o cachorro perseguiu@1
6500@todas ratazanas temem o gato@1
6520@todos gatos perseguiram algum cão@1
6530@todos gatos perseguiram alguma ratazana@1
6540@todos gatos perseguiram algumas ratazanas@1
6550@todos gatos perseguiram alguns cães@1
6560@todos gatos temem o cachorro@1
leoalenc commented 1 year ago

@leoalenc can you double-check the examples in

https://github.com/LR-POR/PorGram/blob/main/tsdb/skeletons/core.txt

I found some cases that I expected to be ungrammatical (marked as 0 in the last field):


6300@que o cachorro perseguiu@1

6500@todas ratazanas temem o gato@1

6520@todos gatos perseguiram algum cão@1

6530@todos gatos perseguiram alguma ratazana@1

6540@todos gatos perseguiram algumas ratazanas@1

6550@todos gatos perseguiram alguns cães@1

6560@todos gatos temem o cachorro@1

@arademaker , all sentences mentioned are grammatical. However, you are right to raise doubts about this. In fact, the first sentence seems to be more common in European Portuguese. This construction appears on page 240 of the Grammar of the Portuguese Language, in the second edition, by Maria Elena Mira Matheus and other authors, published in Lisbon in 1989 by the publisher Caminho. The use of the universal quantifier in plural without article is considered incorrect by prescriptive approaches. Personally, I prefer the version with article. However, in my personal dialect, the construction without definite article is also possible. It is attested by Mario A. Perini in his Descriptive Grammar of Brazilian, Portuguese, published by Vozes in 2016, see page 364.

leoalenc commented 1 year ago

@arademaker , the grammar does not generate any output for the following sentences:

26 a estudante disse para o artista para trazer uma bola 368 o cachorro tinha insistido em parar de latir

This is an excellent question for Dan!

This is why results.txt has fewer sentences than core.txt.

@arademaker , the grammar analyses both sentences with LKB if we set the *maximum-number-of-edges* parameter to 20000, see https://github.com/LR-POR/PorGram/commit/2193fce41efab3df6ea60c9c33d37b8424d4b974.

leoalenc commented 1 year ago

@arademaker , some sentences from core.txt are legitimately ambiguous, e.g.

5510@os cachorros amarelos ladraram@1

The sentence should have two readings. ladraram

I'm going to correct this. In the future, I could design a tense feature architecture to avoid this. Would you like to ask Dan if this effort is worthy?

arademaker commented 1 year ago

Last number is 1 for grammatical and 0 for ungrammatical. We are not recording ambiguity. A good question for @danflink

Thanks.