Open leoalenc opened 3 months ago
$ grep -Eahi "ram[eé]wera" avila*.txt
$ grep -Eahi "ram[eé] wera" avila*.txt
$
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. [...]
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.
@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
.
@heliolbs , @juliana-gurgel e, sobretudo @dominickmaia, elaborem fluxograma sobre o tratamento de palavras desconhecidas. Postem aqui o resultado.
Como lidar com as seguintes palavras desconhecidas pelo Yauti? Exemplos neste e nos comentários seguintes. As palavras desconhecidas estão negritadas.
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
John Lennon nheengarisara serakwena unaseri waá Liverpool upé.
Makakaí i akanhemu umaã ramé pixanawasú.
Itayúa-ima ramé apurakiwera wasaitiwa upé.
>>> 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
>>> 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.
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.
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!
Eita, se yawara usuú kunhã pixana.
@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:
Legenda:
@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.
@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.
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.
@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:
Legenda:
azul escuro = dados azul claro = processos manuais azul petróleo = processos automáticos laranja = controles de fluxo
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: @.***>
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.
@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.
Fechada por engano. Reabrindo.
@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:
# 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.
# 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'.
# 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.
# 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.
# 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.
# 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.
# 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.
getpersnum
está ignorando prefixos com inicial maiúscula?# 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.
# 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.
# 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!
# 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.
# 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?
# 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.
@heliolbs , a palavra não está no léxico:
Yauti.getparselist('Itayúa')
[['itayúa', None]]
# 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.
=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
# 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
Casasnovas2006:5:4:52