CompLin / nheengatu

Tools and resources for the computational processing of Nheengatu (Modern Tupi)
7 stars 1 forks source link

implementar função parseExampleHartt #433

Open heliolbs opened 3 months ago

heliolbs commented 3 months ago

Com base na sugestão deste comentário de @leoalenc na issue #424, uma função parseExampleHartt deve ser criada para facilitar a anotação de sentenças de Hartt (1938):

heliolbs commented 3 months ago

@leoalenc , como devo entregar a nova função parseExampleHartt?

  1. Posto o código diretamente aqui como comentário?
  2. Faço o upload de um arquivo .py com a função dentro?
  3. Deixo disponível no repositório privado?
leoalenc commented 3 months ago

@leoalenc , como devo entregar a nova função parseExampleHartt?

  1. Posto o código diretamente aqui como comentário?
  2. Faço o upload de um arquivo .py com a função dentro?
  3. Deixo disponível no repositório privado?

@heliolbs , por enquanto, pode colocar aqui como comentário, usando a marcação de código de markdown.

heliolbs commented 3 months ago

@leoalenc , foram testados três cenários diferentes no desenvolvimento dessa primeira versão da função parseExampleHartt, todos cumprindo a exigência de quatro linhas de handleSentsHartt:

  1. Exemplo com referência cruzada em Ávila (2021) (exemplo 40 citado no comentário da issue #424): código PASSOU
  2. Exemplo sem referência cruzada em Ávila (2021) (exemplo 91): código PASSOU
  3. Exemplo com referência cruzada em Ávila (2021) e comentário inline (#) (exemplo 36): código FALHOU

Acredito que esse cenário 3 possa ser resolvido dentro da função handleSentsHartt por meio de RegEx e replace de string para remoção do comentário.

Segue abaixo o código sugerido para a função parseExampleHartt:

def parseExampleHartt(example,page,copyboard=True,annotator=ANNOTATOR,check=True,outfile=False,overwrite=False,metadata={}, translate=False):
    """
    Annotate an example from Hartt (1938) by:
    - receiving a dictionary from handleSentsHartt;
    - checking the third line of the example for the indication of cross reference with Avila (2021) to decide whether to insert the relevant metadata;
    - insert the other metadata;
    - invoking _parseExample

    The examples below (40 and 91) were extracted as they were from "dominickmaia/hartt/frases.txt":

    >>> input_string='''40 - ixé xamonó amú osú omopók nesuí nekamutí.
40 - Ixé xamunú amú usú umupuka ne suí ne kamutí.
40 - Ixé amundú amú usú umupuka ne suí ne kamutí. (Hartt, 322, adap.) - Eu mando outro ir quebrar-te o teu pote.
40 - mando um outro ir quebrar teu pote.
    '''
    >>> Yauti.parseExampleHartt(input_string,page=322)
    >>> input_string='''91 - intí án sekyrimbá xasupir aráma mbaa iporéi reté aá (Ereré).
91 - Intí ã se kirimbá xasupiri arama maã i pusé reté waá.
91 - NA
91 - não tenho bastante força para aguentar uma coisa muito pesada.'''
    >>> Yauti.parseExampleHartt(input_string,page=325)
    """
    sents={}
    person="Antônio Levy Melo Nogueira"
    transcriber={'text_orig_transcriber': person,
    'text_por_modernizer': person}
    handled=handleSentsHartt(example)

    metadata={}
    # Checking the existence of cross reference
    if handled['avila'] != 'NA':
        sec=mkSecTextAvila(handled['avila'])
        metadata.update(sec)

    metadata.update(transcriber)

    # Organizing main attributes
    prefix="Hartt1928"
    sent_nr=handled['index'][0]
    sents['sent_id']=mkSentId(prefix,sentid=sent_nr)
    sents['text']=handled['text']
    sents['text_por']=handled['text_por']
    sents['text_source']=f"p. {page}, No. {sent_nr}"
    sents['text_orig']=handled['text_orig']

    return _parseExample(sents,copyboard=copyboard,annotator=annotator,check=check,outfile=outfile, overwrite=overwrite,metadata=metadata,translate=translate)
leoalenc commented 3 months ago

@heliolbs , poderia preparar docstring dessa sua função com os dois tipos de situações que testou? Veja, por exemplo, as docstrings dessas funções mais recentes que implementei no módulo AnnotateConllu. Por outro lado, seria interessante revisar os exemplos anotados para incluir logo no treebank. @dominickmaia ?

heliolbs commented 3 months ago

heliolbs , poderia preparar docstring dessa sua função com os dois tipos de situações que testou?

Posso sim, @leoalenc . Vou editar em breve meu último comentário acima inserindo a docstring.

Veja, por exemplo, as docstrings dessas funções mais recentes que implementei no módulo AnnotateConllu.

Vou seguir os exemplos das funções handleSentsHartt, parseSingleLineExample e parseExampleAmorim para compor a docstring da nova função.

Por outro lado, seria interessante revisar os exemplos anotados para incluir logo no treebank. dominickmaia ?

Pode elaborar um pouco essa instrução, @leoalenc ? Não me aprofundei na anotação dos exemplos que usei no teste da função, pois os valores de teste PASSOU e FALHOU dependeram apenas dos metadados dos exemplos e da ausência de erro de execução da função.

heliolbs commented 3 months ago

@leoalenc , o meu penúltimo comentário foi editado com a inserção da docstring da função parseExampleHartt.