CompLin / nheengatu

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

o termo "raméwera" (Casasnovas, 2006, p. 78): como lidar com palavras desconhecidas #512

Open leoalenc opened 3 months ago

leoalenc commented 3 months ago

# sent_id = Casasnovas2006:5:4:52 # text = Kwá kurupira unupá ramewera, paá, asuí uxari mirá-piranga uyenú, usú ã kaá kití. [...] # text_por = Este curupira batia no tronco e depois deixava no chão o pedaço de pau-brasil e ia embora. # text_source = p. 78, No. 4 # text_orig = Kwa kurupira unupá raméwera, paá, asuí uxari mirá-piranga uyenú, usuã kaá kití. # text_annotator = JLG # title_orig = Kurupira # title_por_orig = Curupira # title_eng = Curupira # aknowledgement = DACILAT Project, FAPESP's Process No. 2022/09158-5 # reviewer1 = Leonel Figueiredo de Alencar TODO

leoalenc commented 3 months ago
$ grep -Eahi "ram[eé]wera" avila*.txt
$ grep -Eahi "ram[eé] wera" avila*.txt
$
leoalenc commented 3 months ago

Avila (2021) consigna a posposição e conjunção ramé:

ramé 1) (posp.) em, de, a (com palavras que expressam tempo): Asuí mituú ramé, yayumuatiri irumu yapixama arama pãu, Paulo umbeú aintá supé, [...]. (O Novo Testamento em nyengatu, Atos 20:7, adap.) - E no domingo, ao nos reunirmos para beliscar o pão, Paulo lhes falava, [...]. 2) (conj.) (temporal:) quando; quando for; por ocasião de, de, a, em: Reyukwakú kurí Santa Igreja umundú ramé. (Aguiar, 43, adap.) - Jejuarás quando manda a Santa Igreja. [...] 3) (conj.) (condicional:) se, no caso de: Ti ramé peyuká ixé, ambeú penhẽ arama mamé pe manha ruka (Rodrigues, 80, adap.) - Se vocês não me matarem, eu conto para vocês onde está a casa da mãe de vocês. [...]

leoalenc commented 3 months ago

Em Avila (2021) consta o sufixo -wera, que se combina a bases verbais ou adjetivais para formar adjetivos e substantivos, ou a formas conjugadas, expressando o aspecto frequentativo passado.

leoalenc commented 3 months ago

@heliolbs , @dominickmaia e @juliana-gurgel , esta é uma daquelas questões fundamentais para se familiarizar com particularidades gramaticais do nheengatu mais discrepantes de línguas como o português, inglês etc., recursos mais avançados do Yauti e boas práticas de anotação. Esse exemplo evidencia que, via de regra, não devemos preencher os campos LEMMA, UPOS, XPOS, FEATS etc. do formato CoNLL-U com informações de palavras que não estão no glossário e léxico do Yauti, a não ser que se trate de nomes próprios e termos de outras línguas, como o português, ainda não incorporados ao nheengatu (ver, por exemplo, barraca em Avila2021:0:0:408 e TerraPreta2013:1:5:5).
Uma lacuna presente do Yauti é que não reconhece automaticamente diversos casos de derivação morfológica, como a sufixação aspectual com -wara e -wera, os aumentativos etc. Nesse casos, é preciso usar etiquetas especiais precedidas de "=", que deflagram funções do Yauti que comportam argumentos nomeados (Alencar 2023). Algumas sentenças do treebank contêm exemplos dessas etiquetas no atributo # inputline.

leoalenc commented 3 months ago

@heliolbs , @juliana-gurgel e, sobretudo @dominickmaia, elaborem fluxograma sobre o tratamento de palavras desconhecidas. Postem aqui o resultado.

leoalenc commented 3 months ago

Como lidar com as seguintes palavras desconhecidas pelo Yauti? Exemplos neste e nos comentários seguintes. As palavras desconhecidas estão negritadas.

O termo Pequiá de Rodrigues (1890, p. 169)

A análise seguinte é provisória, pois falta incluir o restante da sentença original no atributo text, a qual também precisa ter a ortografia normalizada conforme a proposta de Avila (2021):

# sent_id = Rodrigues1890:10:190:190 # text = [...] Pequiá [...]. # text_eng = TODO # text_por = A avó saiu e foi ajudar as netas. O gavião estava vigiando, e, vendo-a sair, saltou-lhe em cima e a carregou para um galho de pequi. # text_source = p. 169 # text_orig = Aetá aría u cema ure arama u petumu che meriareru, uirá uaçu u maiana u maan u cema, aé uana u pure i arpe, çupire uirá uaçu Pequiá racanga queté. # text_annotator = Leonel Figueiredo de Alencar # text_orig_transcriber = Susan Gabriela Huallpa Huanacuni, Biblioteca Brasiliana Guita e José Mindlin # text_por_modernizer = Susan Gabriela Huallpa Huanacuni, Biblioteca Brasiliana Guita e José Mindlin # inputline = [...] Pequiá [...].

1   [...]   [...]   PUNCT   ELIP    _   0   punct   _   TokenRange=0:5
2   Pequiá  pequiá  _   _   _   0   _   _   SpaceAfter=No|TokenRange=6:12
3   [...]   [...]   PUNCT   ELIP    PunctType=Elip  0   punct   _   SpaceAfter=No|TokenRange=13:18
4   .   .   PUNCT   PUNCT   _   1   punct   _   SpaceAfter=No|TokenRange=18:19
leoalenc commented 3 months ago

Nomes próprios

John Lennon nheengarisara serakwena unaseri waá Liverpool upé.

leoalenc commented 3 months ago

Palavras derivadas ou com clíticos

Exemplo 1

Makakaí i akanhemu umaã ramé pixanawasú.

Exemplo 2

Itayúa-ima ramé apurakiwera wasaitiwa upé.

Exemplo 3

>>> m=Metadata.Mindlin()
>>> m
{'text_orig_transcriber': 'Gabriela Lourenço Fernandes, Biblioteca Brasiliana Guita e José Mindlin', 'text_por_modernizer': 'Gabriela Lourenço Fernandes, Biblioteca Brasiliana Guita e José Mindlin'}
>>> Yauti.ppMetadata(m)
# text_orig_transcriber = Gabriela Lourenço Fernandes, Biblioteca Brasiliana Guita e José Mindlin
# text_por_modernizer = Gabriela Lourenço Fernandes, Biblioteca Brasiliana Guita e José Mindlin
>>> m.update({'text_por_orig' : 'Já noite grande ouviu alguma coisa batêbatendo no laço, foi ver, encontrou a Cobra-Grande com a raia.'})
>>> s=''' [...] opetépetéka [...]. (p. 292, No. 23)  Já noite grande ouviu alguma coisa batebatendo no laço, foi ver, encontrou a Cobra-Grande com a raia. - Pytuna puku ramé ana aé osendu maanungara opetépetéka iusana pypé, osu omaan, oasemo mboiasu iaueuyra irumo.'''
>>> Yauti.parseExample(s,'Amorim1928',17,23,23,metadata=m,translate=False)

# sentid = Amorim1928:17:23:23 # text = [...] opetépetéka [...]._ # text_eng = TODO # text_por = Já noite grande ouviu alguma coisa batebatendo no laço, foi ver, encontrou a Cobra-Grande com a raia. # text_source = p. 292, No. 23 # text_orig = Pytuna puku ramé ana aé osendu maanungara opetépetéka iusana pypé, osu omaan, oasemo mboiasu iaueuyra irumo. # text_annotator = Leonel Figueiredo de Alencar # text_orig_transcriber = Gabriela Lourenço Fernandes, Biblioteca Brasiliana Guita e José Mindlin # text_por_modernizer = Gabriela Lourenço Fernandes, Biblioteca Brasiliana Guita e José Mindlin # text_por_orig = Já noite grande ouviu alguma coisa batêbatendo no laço, foi ver, encontrou a Cobra-Grande com a raia. # inputline = [...] opetépetéka [...].

1   [...]   [...]   PUNCT   ELIP    _   0   punct   _   TokenRange=0:5
2   opetépetéka opetépetéka _   _   _   0   _   _   SpaceAfter=No|TokenRange=6:17
3   [...]   [...]   PUNCT   ELIP    PunctType=Elip  0   punct   _   SpaceAfter=No|TokenRange=18:23
4   .   .   PUNCT   PUNCT   _   1   punct   _   SpaceAfter=No|TokenRange=23:24

Exemplo 4


>>> Yauti.getLastSentWithSentId('Avila2021',sents)
'Avila2021:0:0:725'
>>> args='Avila2021:0:0:725'.split(':')
>>> args[-1]=int(args[-1])+1
>>> s='''Bukúkuri yepé wirá pituna ramewara. (Leetra Indígena. n. 3, 23, adap.) -  A coruja é um pássaro noturno. -  BUKÚKURI YEPÉ WIRÁ PITUNA RAMÉ WARA.'''
>>> Yauti.parseExample(s,*args,translate=False)

# sent_id = Avila2021:0:0:726 # text = Bukúkuri yepé wirá pituna ramewara. # text_eng = TODO # text_por = A coruja é um pássaro noturno. # text_source = Leetra Indígena. n. 3, 23, adap. # text_orig = BUKÚKURI YEPÉ WIRÁ PITUNA RAMÉ WARA. # text_annotator = Leonel Figueiredo de Alencar # inputline = Bukúkuri yepé wirá pituna ramewara.

leoalenc commented 3 months ago

Empréstimos ad hoc do português ou code-switching

Cruz (2011, p.160):

(218) sandalia panhe awa u-riku [...] Sandália, toda pessoa têm [sic].

Cruz (2011, p.164):

(229) re-ganhai ne-yukira [...] Você ganha o teu dinheiro Lit.: você ganha teu sal.

leoalenc commented 3 months ago

Outros casos

Exemplo 1

Amorim (1928, p. 298):

33 Ariré opysyka kururu ratykuera resé, omamana, aé suhiuara omunhan iepé mimby, opukuare i aua irumo, ariré opeiú koiaué: Tifefu! fó! fu! Pipi! pi!

Amorim (1928, p. 294):

33 Depois pegou no resto do cururu, enrolou, dele fez uma membi, amarrou com seu cabelo, depois tocou deste jeito: Tifefu! fó! fi! Pipi! pi!

Exemplo 2

Eita, se yawara usuú kunhã pixana.

heliolbs commented 3 months ago

@heliolbs , @juliana-gurgel e, sobretudo @dominickmaia, elaborem fluxograma sobre o tratamento de palavras desconhecidas. Postem aqui o resultado.

Seguindo os mesmos princípios estruturais de construção de fluxograma que usei em #521 , compus o fluxograma abaixo com base nas instruções e nos exemplos da presente issue. @leoalenc , peço que indique correções e melhorias, pois pretendo fluxogramar outros subprocessos do nosso processo de anotação.

Observações:

  1. Incluí seis testes de sim ou não nesse fluxograma, dos quais dois são resolvidos por correção da normalização ortográfica e quatro são resolvidos por uso das etiquetas especiais.
  2. Assumi que os seis casos são mutuamente excludentes.

image

Legenda:

leoalenc commented 3 months ago

@heliolbs, parabéns, parece excelente! Acho que agora o passo seguinte é testar o fluxograma nos exemplos concretos que compilei acima. Para tanto, acho importante a a participação da @dominickmaia e @juliana-gurgel, que, de uma forma ou de outra, têm se deparado com esses casos nas numerosas anotações de Navarro (2016), Casasnovas (2006) e Hartt (1938). Seria interessante construir uma árvore de decisão (pode ser com papel e caneta ou lápis) ou lista de passos para cada caso, com reprodução de código (como fiz acima).
Condição essencial para essa tarefa é utilizar a versão atual do Yauti (ainda vou subir para cá minha versão local com updates importantes) e atualizar o glossário glossary.txt e léxico lexcion.json na versão local de vocês com eventuais palavras a serem incorporadas na versão remota. Mostrei a @dominickmaia como fazer isso. Esta atividade também envolve construir aquelas etiquetas especiais prefixadas com =, das quais há muitos exemplos nos valores do atributo inputline do treebank.

leoalenc commented 3 months ago

@heliolbs , vejo agora que parece faltar no diagrama acima um caso embutido no passo 5 do meu fluxograma (Alencar, 2024b, p. 16), qual seja, quando a palavra deve ser incorporada ao léxico do Yauti. Acho que menciono essa situação no corpo do texto, a qual implica executar um script que recompila o léxico a partir do glossário. Por sinal, esta atividade pode ser enriquecida com alguns exemplos concretos de Hartt (1938) e Casasnovas (2006) propostos por @dominickmaia e @juliana-gurgel.

leoalenc commented 3 months ago

No exemplo 3 deste comentário, deveríamos ter, conforme a imagem da publicação original impressa, cousa em vez de coisa:

# text_por_orig = Já noite grande ouviu alguma cousa batêbatendo no laço, foi ver, encontrou a Cobra-Grande com a raia.

heliolbs commented 2 months ago

@leoalenc , levando em conta seus dois penúltimos comentários, continuei aprimorando o protótipo de fluxograma que eu havia apresentado acima. Tenho preferência por trabalhar direto com a ferramenta digital. Usei suas instruções daqui, os valores do atributo inputline no banco e informações que Juliana e Dominick vinham me passando nas últimas semanas. (Estamos nos organizando para começar a aplicar o fluxograma aos exemplos). Segue a versão que preparei de ontem para hoje (ainda incompleta) com uma granularidade mais alta, algumas inversões e inclusões de tarefas, inclusões de decisões e a diferenciação entre processo manual e processo automático:

image

Legenda:

azul escuro = dados azul claro = processos manuais azul petróleo = processos automáticos laranja = controles de fluxo

leoalenc commented 2 months ago

Bom dia, Hélio! Parece que esse comentário aparece apenas apenas no e-mail. Não consegui encontrar no repositório. É bastante importante. Você pode transferir para lá?

Em ter., 27 de ago. de 2024 às 13:46, Hélio Leonam Barroso Silva < @.***> escreveu:

@leoalenc https://github.com/leoalenc , levando em conta seus dois penúltimos comentários, continuei aprimorando o protótipo de fluxograma que eu havia apresentado acima. Tenho preferência por trabalhar direto com a ferramenta digital. Usei suas instruções daqui, os valores do atributo inputline no banco e informações que Juliana e Dominick vinham me passando nas últimas semanas. (Estamos nos organizando para começar a aplicar o fluxograma aos exemplos). Segue a versão que preparei de ontem para hoje (ainda incompleta) com uma granularidade mais alta, algumas inversões e inclusões de tarefas, inclusões de decisões e a diferenciação entre processo manual e processo automático:

image.png (view on web) https://github.com/user-attachments/assets/17fb5409-7267-4784-9765-c15ef22e4988

Legenda:

azul escuro = dados azul claro = processos manuais azul petróleo = processos automáticos laranja = controles de fluxo

— Reply to this email directly, view it on GitHub https://github.com/CompLin/nheengatu/issues/512#issuecomment-2313057197, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJXPSAARYZY3HBUVSCCCK3ZTSUOXAVCNFSM6AAAAABM6ZSMROVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJTGA2TOMJZG4 . You are receiving this because you were mentioned.Message ID: @.***>

heliolbs commented 2 months ago

Bom dia, Hélio! Parece que esse comentário aparece apenas apenas no e-mail. Não consegui encontrar no repositório. É bastante importante. Você pode transferir para lá? Em ter., 27 de ago. de 2024 às 13:46, Hélio Leonam Barroso Silva < @.***> escreveu:

Bom dia, @leoalenc . Meu comentário a que você se refere é meu último comentário acima, de 19 horas atrás.

leoalenc commented 2 months ago

@heliolbs , por favor, discuta as soluções do grupo para os vários casos acima, em termos de análise no formato CoNLL-U validada por validate.py, e poste aqui as respostas juntamente com os respectivos comandos do Yauti. O prazo é 8 de setembro de 2024.

leoalenc commented 2 months ago

Fechada por engano. Reabrindo.

heliolbs commented 2 months ago

@leoalenc , durante os estudos dos últimos dias, percebi que era necessário retroceder um pouco com meus objetivos e focar em entender melhor as etiquetas especiais do Yauti. Dei uma pausa na construção dos fluxogramas e passei a estudar o código e continuei analisando os exemplos de inputline do banco.

Seguem, no próximos comentários abaixo, os resultados preliminares das análises parciais do exemplos apresentados nos comentários acima. Em todos os casos, foi usada a função Yauti.pp() para gerar as anotações. Por enquanto, ainda não rodamos validate.py nem tratamos dos dois últimos exemplos (interjeições). Ainda há desambiguações a serem feitas, pois focamos no tratamento das palavras desconhecidas. O próximo passo será usar as etiquetas comuns para resolver o restante das ambiguidades.

Gostaríamos de saber se estamos no caminho certo quanto ao uso das etiquetas especiais:

heliolbs commented 2 months ago
# text= [...] Pikiá [...].
# text_orig = [...] Pequiá [...].
# inputline = [...] Pikiá/=n [...].

1   [...]   [...]   PUNCT   ELIP    _   0   punct   _   TokenRange=0:5
2   Pikiá   pikiá   NOUN    N   Number=Sing 0   _   _   SpaceAfter=No|TokenRange=6:11
3   [...]   [...]   PUNCT   ELIP    PunctType=Elip  0   punct   _   TokenRange=12:17

O exemplo acima teve sua ortografia normalizada, foi encontrado em Ávila, mas não está presente no glossário. Acreditamos que seja caso de inclusão. A etiqueta especial de substantivo comum '=n' foi suficiente para gerar uma anotação aparentemente correta.

heliolbs commented 2 months ago
# text = John Lennon nheengarisara serakwena unaseri waá Liverpool upé.
# inputline = John/=p Lennon/=p nheengarisara serakwena unaseri waá Liverpool/=p upé/adp.

1   John    john    PROPN   PROPN   _   2   nmod:poss   _   TokenRange=0:4
2   Lennon  lennon  PROPN   PROPN   _   3   nmod:poss   _   TokenRange=5:11
3   nheengarisara   nheengarisara   NOUN    N   Number=Sing 5   nsubj   _   TokenRange=12:25
4   serakwena   serakwena   ADJ A   _   3   amod    _   TokenRange=26:35
5   unaseri naseri  VERB    V   Mood=Ind|Person=3|VerbForm=Fin  3   acl:relcl   _   TokenRange=36:43
6   waá waá PRON    REL Number=Sing|PronType=Rel    5   nsubj   _   TokenRange=44:47
7   Liverpool   liverpool   PROPN   PROPN   _   5   obl _   TokenRange=48:57
8   upé upé ADP ADP AdpType=Post    7   case    _   SpaceAfter=No|TokenRange=58:61
9   .   .   PUNCT   PUNCT   _   1   punct   _   SpaceAfter=No|TokenRange=61:62

No exemplo acima, que não pareceu precisar de normalização ortográfica, o Yauti só acusou como palavras desconhecidas o antropônimo e o topônimo. A etiqueta especial de nome próprio '=p' parece ter sido suficiente na anotação. Embora o código do Yauti permita indicar a origem de nomes próprios, os únicos exemplos de inputline no banco que contêm essa etiqueta especial com o atributo de origem referem-se às palavras "Deus" e "Igreja". Por isso, ficamos na dúvida quanto à inserção de '=p:o|eng'.

heliolbs commented 2 months ago
# text = Makakaí i akanhemu umaã ramé pixanawasú.
# inputline = Makakaí/=ev:x|n i akanhemu umaã ramé pixanawasú/=ev:x|n.

1   Makakaí makaka  NOUN    N   Degree=Dim|Number=Sing  3   obl _   TokenRange=0:7
2   i   i   CCONJ   CCONJ   _   3   cc  _   TokenRange=8:9
2   i   i   PRON    PRON2   Case=Gen|Number=Sing|Person=3|PronType=Prs  3   nsubj   _   TokenRange=8:9
3   akanhemu    akanhemu    VERB    V2  _   0   conj    _   TokenRange=10:18
3   akanhemu    kanhemu VERB    V   Mood=Ind|Number=Sing|Person=1|VerbForm=Fin  0   root    _   TokenRange=10:18
4   umaã    maã VERB    V   Mood=Ind|Person=3|VerbForm=Fin  3   advcl   _   TokenRange=19:23
5   ramé    ramé    ADP ADP AdpType=Post    1   case    _   TokenRange=24:28
5   ramé    ramé    SCONJ   SCONJ   _   4   mark    _   TokenRange=24:28
6   pixanawasú  pixana  NOUN    N   Degree=Aug|Number=Sing  4   obj _   SpaceAfter=No|TokenRange=29:39
7   .   .   PUNCT   PUNCT   _   3   punct   _   SpaceAfter=No|TokenRange=39:40

O exemplo acima, que ainda tem três ambiguidades a serem resolvidas, contém um diminutivo e um aumentativo. A mesma etiqueta especial '=ev' foi aplicada nos dois casos seguidas pelo atributo 'x' indicativo de 'xpos'. No caso do aumentativo, a etiqueta especial '=aug' ainda está produzindo um resultado equivalente, no entanto, como há comentários no código que indicam que ela deve entrar em desuso, optamos por '=ev' nós dois casos.

heliolbs commented 2 months ago
# text = Itayúa-ima ramé apurakiwera wasaitiwa upé.
# inputline = Itayúa-ima/=prv:x|a ramé apurakiwera wasaitiwa/=col upé.

1   Itayúa-ima  itayúá  ADJ A   Derivation=Priv 3   _   _   TokenRange=0:10
2   ramé    ramé    ADP ADP AdpType=Post    3   case    _   TokenRange=11:15
2   ramé    ramé    SCONJ   SCONJ   _   3   mark    _   TokenRange=11:15
3-4 apurakiwera _   _   _   _   _   _   _   TokenRange=16:27
3   apurakí purakí  VERB    V   Mood=Ind|Number=Sing|Person=1|VerbForm=Fin  0   root    _   _
4   wera    wera    PART    FREQ    Aspect=Freq|Clitic=Yes|Tense=Past   3   advmod  _   _
5   wasaitiwa   wasaí   NOUN    N   Derivation=Coll|Number=Sing 3   obl _   TokenRange=28:37
6   upé upé ADP ADP AdpType=Post    5   case    _   SpaceAfter=No|TokenRange=38:41
6   upé upé NOUN    N   Number=Sing 3   obj _   SpaceAfter=No|TokenRange=39:42
7   .   .   PUNCT   PUNCT   _   3   punct   _   SpaceAfter=No|TokenRange=41:42

No exemplo acima, havia três palavras marcadas para análise, mas a segunda passou a ser analisada automaticamente com um dos commits dos últimos dias. As duas que restaram são casos de privativo e de coletivo. As etiquetas especiais '=prv' e '=col' foram escolhidas para lidar com eles respectivamente. O atributo 'x|a' deu conta de não deixar o privativo sem XPOS embora ainda não esteja claro se é um adjetivo mesmo. Por fim, é importante notar o problema da acentuação do lema itayúá. Experimentei usar os atributos 'a' de acentuação e 'f' de força, mas não tive sucesso. Não sei se é a ausência da palavra no glossário que está causando esse problema.

heliolbs commented 2 months ago
# text = [...] upetépetéka [...].
# text_orig = [...] opetépetéka [...].
# inputline = [...] upetépetéka/=red:l|4 [...].

1   [...]   [...]   PUNCT   ELIP    _   2   punct   _   TokenRange=0:5
2   upetépetéka petéka  VERB    V   Mood=Ind|Person=3|Red=Yes|VerbForm=Fin  0   root    _   SpaceAfter=No|TokenRange=6:17
3   [...]   [...]   PUNCT   ELIP    PunctType=Elip  2   punct   _   SpaceAfter=No|TokenRange=18:23
4   .   .   PUNCT   PUNCT   _   2   punct   _   SpaceAfter=No|TokenRange=23:24

No exemplo acima, que recebeu uma correção de desvio de normalização ortográfica, temos um caso de reduplicação. Foi necessário usar o atributo obrigatório 'l' (de length) para indicar ao Yauti o trecho repetido. A base desse derivado já está no glossário.

heliolbs commented 2 months ago
# text = sandalia panhẽ awá urikú
# text_orig = sandalia panhe awa u-riku
# inputline = sandalia/=n:o|pt panhẽ awá urikú

1   sandalia    sandalia    NOUN    N   Number=Sing 4   nsubj   _   OrigLang=por|TokenRange=0:8
2   panhẽ   panhẽ   DET TOT PronType=Tot    1   det _   TokenRange=9:14
3   awá awá DET IND PronType=Ind    1   det _   TokenRange=15:18
3   awá awá DET INT PronType=Int    1   det _   TokenRange=15:18
3   awá awá PRON    RELF    PronType=Rel    4   nsubj   _   TokenRange=15:18
4   urikú   rikú    VERB    V   Mood=Ind|Person=3|VerbForm=Fin  0   root    _   TokenRange=19:24

No exemplo acima, que tinha quatro desvios de normalização ortográfica, temos um empréstimo do português. A análise foi possível pelo uso da etiqueta especial de substantivo comum '=n' seguida do atributo de origem 'o|pt'. Como não está dicionarizado, não nos parece caso de inclusão.

É interessante notar que a locução panhẽ awá está dicionarizada como expressão fixa em Ávila (2021) do mesmo modo que mayé waá está. Desse modo, cogitamos que a desambiguação de awá seja seguida pela aplicação da deprel fixed ao nó 3.

heliolbs commented 2 months ago
# text = Reganhari ne yukira.
# text_orig = re-ganhai ne-yukira
# inputline = reganhari/=v:o|pt:s|ganhar ne yukira.

1   reganhari   ganhari VERB    V   Number=Sing|Person=2|VerbForm=Fin   0   root    _   Orig=ganhar|OrigLang=por|TokenRange=0:9
2   ne  ne  PRON    PRON2   Case=Gen|Number=Sing|Person=2|Poss=Yes|PronType=Prs 3   nmod:poss   _   TokenRange=10:12
3   yukira  yukira  NOUN    N   Number=Sing 1   obj _   SpaceAfter=No|TokenRange=13:19
4   .   .   PUNCT   PUNCT   _   1   punct   _   SpaceAfter=No|TokenRange=19:20

No exemplo acima, que continha três desvios de normalização ortográfica, temos uma derivação cuja base é um empréstimo já adaptado. A etiqueta especial de verbo '=v' e os atributos de origem 'o|pt' e de forma original 's|ganhar' pareceram ser suficientes para uma análise correta. Acreditamos que 'ganhari' seja um caso de inclusão no glossário.

É importante notar que a inicial maiúscula não permitiu obter uma análise correta. Aparentemente, a sequência de chamados de função pp > mkConlluSentence > mkVerb > guessVerb > getpersnum resulta em erro. Cogito que essa última função esteja verificando os prefixos de pessoa apenas na sua forma minúscula produzindo falsos negativos quando analisa nós com inicial maiúscula.

leoalenc commented 2 months ago

# text= [...] Pikiá [...].

# text_orig = [...] Pequiá [...].

# inputline = [...] Pikiá/=n [...].

1 [...]   [...]   PUNCT   ELIP    _   0   punct   _   TokenRange=0:5

2 Pikiá   pikiá   NOUN    N   Number=Sing 0   _   _   SpaceAfter=No|TokenRange=6:11

3 [...]   [...]   PUNCT   ELIP    PunctType=Elip  0   punct   _   TokenRange=12:17

O exemplo acima teve sua ortografia normalizada, foi encontrado em Ávila, mas não está presente no glossário. Acreditamos que seja caso de inclusão. A etiqueta especial de substantivo comum '=n' foi suficiente para gerar uma anotação aparentemente correta.

@heliolbs , certíssimo! É um caso de inclusão no glossário, o que implica na atualização do léxico e na reaplicação do Yauti sobre o exemplo. Nesse caso, não devemos usar a etiqueta especial, porque com ela o programa vai aceitar qualquer cadeia como substantivo. Isso envolve o risco de incluir no banco de árvores formas e lemas espúrios para palavras do nheengatu que estão dicionarizadas em Ávila (2021). Por outro lado, quando a palavra ocorrer de novo noutro exemplo, corre-se o risco de produção de uma nova forma espúria, levando a inconsistências na representação ortográfica das palavras da língua, além de representar um trabalho desnecessário porque a ferramenta não vai reconhecer a palavra automaticamente.

leoalenc commented 2 months ago

# text = John Lennon nheengarisara serakwena unaseri waá Liverpool upé.

# inputline = John/=p Lennon/=p nheengarisara serakwena unaseri waá Liverpool/=p upé/adp.

1 John    john    PROPN   PROPN   _   2   nmod:poss   _   TokenRange=0:4

2 Lennon  lennon  PROPN   PROPN   _   3   nmod:poss   _   TokenRange=5:11

3 nheengarisara   nheengarisara   NOUN    N   Number=Sing 5   nsubj   _   TokenRange=12:25

4 serakwena   serakwena   ADJ A   _   3   amod    _   TokenRange=26:35

5 unaseri naseri  VERB    V   Mood=Ind|Person=3|VerbForm=Fin  3   acl:relcl   _   TokenRange=36:43

6 waá waá PRON    REL Number=Sing|PronType=Rel    5   nsubj   _   TokenRange=44:47

7 Liverpool   liverpool   PROPN   PROPN   _   5   obl _   TokenRange=48:57

8 upé upé ADP ADP AdpType=Post    7   case    _   SpaceAfter=No|TokenRange=58:61

9 .   .   PUNCT   PUNCT   _   1   punct   _   SpaceAfter=No|TokenRange=61:62

No exemplo acima, que não pareceu precisar de normalização ortográfica, o Yauti só acusou como palavras desconhecidas o antropônimo e o topônimo. A etiqueta especial de nome próprio '=p' parece ter sido suficiente na anotação. Embora o código do Yauti permita indicar a origem de nomes próprios, os únicos exemplos de inputline no banco que contêm essa etiqueta especial com o atributo de origem referem-se às palavras "Deus" e "Igreja". Por isso, ficamos na dúvida quanto à inserção de '=p:o|eng'.

@heliolbs , correto. No caso de antropônimos, de topônimos e da maioria das outras palavras classificadas como nomes próprios, não indicamos a origem da palavra. A origem deve ser indicada apenas nos casos excepcionais de nomes próprios derivados ou relacionados a nomes comuns correspondentes, como nos exemplos que você mencionou. A esse respeito, vale a pena consultar bons dicionários do português. Nos verbetes de Deus e igreja, vocês vão encontrar a acepção de nome próprio, entre várias outras. Isso contrasta com os exemplos de nomes próprios que solicitei que etiquetassem, não são palavras que vão constar tipicamente num dicionário comum da língua portuguesa.

leoalenc commented 2 months ago

# text = Makakaí i akanhemu umaã ramé pixanawasú.

# inputline = Makakaí/=ev:x|n i akanhemu umaã ramé pixanawasú/=ev:x|n.

1 Makakaí makaka  NOUN    N   Degree=Dim|Number=Sing  3   obl _   TokenRange=0:7

2 i   i   CCONJ   CCONJ   _   3   cc  _   TokenRange=8:9

2 i   i   PRON    PRON2   Case=Gen|Number=Sing|Person=3|PronType=Prs  3   nsubj   _   TokenRange=8:9

3 akanhemu    akanhemu    VERB    V2  _   0   conj    _   TokenRange=10:18

3 akanhemu    kanhemu VERB    V   Mood=Ind|Number=Sing|Person=1|VerbForm=Fin  0   root    _   TokenRange=10:18

4 umaã    maã VERB    V   Mood=Ind|Person=3|VerbForm=Fin  3   advcl   _   TokenRange=19:23

5 ramé    ramé    ADP ADP AdpType=Post    1   case    _   TokenRange=24:28

5 ramé    ramé    SCONJ   SCONJ   _   4   mark    _   TokenRange=24:28

6 pixanawasú  pixana  NOUN    N   Degree=Aug|Number=Sing  4   obj _   SpaceAfter=No|TokenRange=29:39

7 .   .   PUNCT   PUNCT   _   3   punct   _   SpaceAfter=No|TokenRange=39:40

O exemplo acima, que ainda tem três ambiguidades a serem resolvidas, contém um diminutivo e um aumentativo. A mesma etiqueta especial '=ev' foi aplicada nos dois casos seguidas pelo atributo 'x' indicativo de 'xpos'. No caso do aumentativo, a etiqueta especial '=aug' ainda está produzindo um resultado equivalente, no entanto, como há comentários no código que indicam que ela deve entrar em desuso, optamos por '=ev' nós dois casos.

@heliolbs , corretíssimo!

leoalenc commented 2 months ago

# text = [...] upetépetéka [...].

# text_orig = [...] opetépetéka [...].

# inputline = [...] upetépetéka/=red:l|4 [...].

1 [...]   [...]   PUNCT   ELIP    _   2   punct   _   TokenRange=0:5

2 upetépetéka petéka  VERB    V   Mood=Ind|Person=3|Red=Yes|VerbForm=Fin  0   root    _   SpaceAfter=No|TokenRange=6:17

3 [...]   [...]   PUNCT   ELIP    PunctType=Elip  2   punct   _   SpaceAfter=No|TokenRange=18:23

4 .   .   PUNCT   PUNCT   _   2   punct   _   SpaceAfter=No|TokenRange=23:24

No exemplo acima, que recebeu uma correção de desvio de normalização ortográfica, temos um caso de reduplicação. Foi necessário usar o atributo obrigatório 'l' (de length) para indicar ao Yauti o trecho repetido. A base desse derivado já está no glossário.

@heliolbs , a adaptação ortográfica desse exemplo falhou. De fato, não existe a base com acento agudo no dicionário do Ávila (2021). A forma reduplicada parcialmente, portanto, não deve conter acento. A propósito, a reduplicação é um fenômeno muito importante em diversas línguas do mundo, incluindo as línguas amazônicas de modo geral e o nheengatu em particular. Recomendo que, na próxima reunião de vocês, sejam atribuídas tarefas a membros do grupo para expor sucintamente esse conteúdo na tese de Aline da Cruz (2011), que aprofunda bastante o mecanismo fonológico desse processo derivacional, e o tratamento mais simplificado de Navarro (2016). Recomendo também fazer uma busca textual no dicionário do Ávila (2021) pelas palavras-chave reduplicação e reduplicada. Outra tarefa importantíssima pra próxima reunião de vocês seria @dominickmaia e @juliana-gurgel apresentarem os casos de reduplicação nas sentenças do banco de árvores provenientes diretamente de Hartt e Casasnovas, respectivamente. Finalmente, @heliolbs poderia fazer um levantamento das issues a respeito de reduplicação, apresentando um resumo, postando alguma dúvida etc.

leoalenc commented 2 months ago

# text = sandalia panhẽ awá urikú

# text_orig = sandalia panhe awa u-riku

# inputline = sandalia/=n:o|pt panhẽ awá urikú

1 sandalia    sandalia    NOUN    N   Number=Sing 4   nsubj   _   OrigLang=por|TokenRange=0:8

2 panhẽ   panhẽ   DET TOT PronType=Tot    1   det _   TokenRange=9:14

3 awá awá DET IND PronType=Ind    1   det _   TokenRange=15:18

3 awá awá DET INT PronType=Int    1   det _   TokenRange=15:18

3 awá awá PRON    RELF    PronType=Rel    4   nsubj   _   TokenRange=15:18

4 urikú   rikú    VERB    V   Mood=Ind|Person=3|VerbForm=Fin  0   root    _   TokenRange=19:24

No exemplo acima, que tinha quatro desvios de normalização ortográfica, temos um empréstimo do português. A análise foi possível pelo uso da etiqueta especial de substantivo comum '=n' seguida do atributo de origem 'o|pt'. Como não está dicionarizado, não nos parece caso de inclusão.

É interessante notar que a locução panhẽ awá está dicionarizada como expressão fixa em Ávila (2021) do mesmo modo que mayé waá está. Desse modo, cogitamos que a desambiguação de awá seja seguida pela aplicação da deprel fixed ao nó 3.

@heliolbs , recomendo estudar os exemplos extraídos diretamente da tese da Aline da Cruz que já estão no banco de árvores. Essa autora utiliza uma espécie de transcrição fonética nos seus exemplos, daí a inexistência de sinais de pontuação, salvo raras exceções. Eu fiz uma adaptação à ortografia do Ávila. No caso de palavras do português em situações de mistura de código, a prática que tenho adotado é normalizar a ortografia seguindo as regras do português. Desse modo, o texto a ser anotado do exemplo deveria começar por Sandália, terminando por ponto final. Você pode, por favor, refazer a resolução desse exemplo levando em conta essas recomendações?

leoalenc commented 2 months ago
# text = Itayúa-ima ramé apurakiwera wasaitiwa upé.
# inputline = Itayúa-ima/=prv:x|a ramé apurakiwera wasaitiwa/=col upé.

1 Itayúa-ima  itayúá  ADJ A   Derivation=Priv 3   _   _   TokenRange=0:10
2 ramé    ramé    ADP ADP AdpType=Post    3   case    _   TokenRange=11:15
2 ramé    ramé    SCONJ   SCONJ   _   3   mark    _   TokenRange=11:15
3-4   apurakiwera _   _   _   _   _   _   _   TokenRange=16:27
3 apurakí purakí  VERB    V   Mood=Ind|Number=Sing|Person=1|VerbForm=Fin  0   root    _   _
4 wera    wera    PART    FREQ    Aspect=Freq|Clitic=Yes|Tense=Past   3   advmod  _   _
5 wasaitiwa   wasaí   NOUN    N   Derivation=Coll|Number=Sing 3   obl _   TokenRange=28:37
6 upé upé ADP ADP AdpType=Post    5   case    _   SpaceAfter=No|TokenRange=38:41
6 upé upé NOUN    N   Number=Sing 3   obj _   SpaceAfter=No|TokenRange=39:42
7 .   .   PUNCT   PUNCT   _   3   punct   _   SpaceAfter=No|TokenRange=41:42

No exemplo acima, havia três palavras marcadas para análise, mas a segunda passou a ser analisada automaticamente com um dos commits dos últimos dias. As duas que restaram são casos de privativo e de coletivo. As etiquetas especiais '=prv' e '=col' foram escolhidas para lidar com eles respectivamente. O atributo 'x|a' deu conta de não deixar o privativo sem XPOS embora ainda não esteja claro se é um adjetivo mesmo. Por fim, é importante notar o problema da acentuação do lema itayúá. Experimentei usar os atributos 'a' de acentuação e 'f' de força, mas não tive sucesso. Não sei se é a ausência da palavra no glossário que está causando esse problema.

@heliolbs , as etiquetas escolhidas estão corretas. No caso da palavra derivada por meio do sufixo privativo, deveria ter sido feita uma verificação se itayúa consta no glossário, procedimento associado à consulta no dicionário do Ávila (2021). Esses procedimentos devem ser integrados como passos obrigatórios no fluxograma nesse tipo de situação. Você quer incluir a palavra, se ainda inexistente no glossário, na sua versão local do glossário e fazer uma atualização do seu léxico local para testar? Sobre o parâmetro accent, para inibir a acentuação devemos usar o valor f, ou seja, a|f, onde f é traduzido pelo Yauti no tipo booliano de Python False. Esse parâmetro aceita os valores boolianos falso f e verdadeiro t, ou seja, True em Python. Sobre o parâmetro f " forçar (acentuação)", abri uma questão anterior a respeito, cujo objetivo é verificar o funcionamento desse parâmetro e prover uma explicação da sua utilidade. Não se aplica no presente contexto. Note que f|t se traduz por "valor verdadeiro para o parâmetro 'forçar acentuação' da palavra". Nesse caso, f antes de | indica o nome do argumento, a letra à direita da pipe indica o valor.

leoalenc commented 2 months ago

@heliolbs , a palavra não está no léxico:

Yauti.getparselist('Itayúa')
[['itayúa', None]]
leoalenc commented 2 months ago
# text = Reganhari ne yukira.
# text_orig = re-ganhai ne-yukira
# inputline = reganhari/=v:o|pt:s|ganhar ne yukira.

1 reganhari   ganhari VERB    V   Number=Sing|Person=2|VerbForm=Fin   0   root    _   Orig=ganhar|OrigLang=por|TokenRange=0:9
2 ne  ne  PRON    PRON2   Case=Gen|Number=Sing|Person=2|Poss=Yes|PronType=Prs 3   nmod:poss   _   TokenRange=10:12
3 yukira  yukira  NOUN    N   Number=Sing 1   obj _   SpaceAfter=No|TokenRange=13:19
4 .   .   PUNCT   PUNCT   _   1   punct   _   SpaceAfter=No|TokenRange=19:20

No exemplo acima, que continha três desvios de normalização ortográfica, temos uma derivação cuja base é um empréstimo já adaptado. A etiqueta especial de verbo '=v' e os atributos de origem 'o|pt' e de forma original 's|ganhar' pareceram ser suficientes para uma análise correta. Acreditamos que 'ganhari' seja um caso de inclusão no glossário.

É importante notar que a inicial maiúscula não permitiu obter uma análise correta. Aparentemente, a sequência de chamados de função pp > mkConlluSentence > mkVerb > guessVerb > getpersnum resulta em erro. Cogito que essa última função esteja verificando os prefixos de pessoa apenas na sua forma minúscula produzindo falsos negativos quando analisa nós com inicial maiúscula.

  • [ ] A função getpersnum está ignorando prefixos com inicial maiúscula?

@heliolbs , veja:

grep -Eahi "^ganhari" avila*.txt

Ou seja, trata-se de palavra não lematizada em Avila (2021). Isso é importantíssimo para a modelagem do fluxograma. Nesse caso, consideramos que se trata de code-mixing, não incluindo o termo no glossário. Vou transferir para issue própria o bug detectado envolvendo inicial maiúscula. Obrigado por apontar esse erro.

leoalenc commented 3 weeks ago

=n:o|pt

@heliolbs , visando a UD v2.15, concluí anoatação da sentença:

# sent_id = Cruz2011:0:0:121
# text = Sandália panhẽ awá urikú.
# text_eng = TODO.
# text_por = Sandália, toda pessoa tem.
# text_por_orig = Sandália, toda pessoa têm.
# text_source = Example No. 218 Wr
# text_orig = sandalia panhe awa u-riku
# text_annotator = Hélio Leonam Barroso Silva 
# reviewer1 = Leonel Figueiredo de Alencar
# inputline = Sandália/=n:o|pt panhẽ awá/ind urikú.
1   Sandália    sandália    NOUN    N   Number=Sing 4   obj _   OrigLang=por|TokenRange=0:8
2   panhẽ   panhẽ   DET TOT PronType=Tot    3   det _   TokenRange=9:14
3   awá awá PRON    IND PronType=Ind    4   nsubj   _   TokenRange=15:18
4   urikú   rikú    VERB    V   Mood=Ind|Person=3|VerbForm=Fin  0   root    _   SpaceAfter=No|TokenRange=19:24
5   .   .   PUNCT   PUNCT   _   4   punct   _   SpaceAfter=No|TokenRange=24:25

dependency_tree

leoalenc commented 3 weeks ago
# sent_id = Leetra2014:7:701:701
# text = Bukúkuri yepé wirá pituna ramewara.
# text_eng = TODO
# text_por = A coruja é um pássaro noturno.
# text_source = p. 25
# text_orig = BUKÚKURI YEPÉ WIRÁ PITUNA RAMÉ WARA.
# text_sec = Bukúkuri yepé wirá pituna ramewara.
# text_por_sec = A coruja é um pássaro noturno.
# text_sec_source = Avila (2021)
# text_por_sec_source = Avila (2021)
# text_annotator = Leonel Figueiredo de Alencar
# inputline = Bukúkuri yepé/art wirá/@ pituna ramewara/adp.
1   Bukúkuri    bukúkuri    NOUN    N   Number=Sing 3   nsubj   _   TokenRange=0:8
2   yepé    yepé    DET ART Definite=Ind|PronType=Art   3   det _   TokenRange=9:13
3   wirá    wirá    NOUN    N   Number=Sing 0   root    _   TokenRange=14:18
4   pituna  pituna  NOUN    N   Number=Sing 3   nmod    _   TokenRange=19:25
5-6 ramewara    _   _   _   _   _   _   _   SpaceAfter=No|TokenRange=26:34
5   ramé    ramé    ADP ADP AdpType=Post    4   case    _   _
6   wara    wara    ADP ADP AdpType=Post|Clitic=Yes 4   case    _   _
7   .   .   PUNCT   PUNCT   _   3   punct   _   SpaceAfter=No|TokenRange=34:35

dependency_tree