|
|
|
|
|
--- |
|
|
language: |
|
|
-pt |
|
|
tags: |
|
|
- kikbert |
|
|
- transformer |
|
|
- roberta |
|
|
- masked-language-model |
|
|
- nlp |
|
|
- african-language |
|
|
license: apache-2.0 |
|
|
datasets: |
|
|
- kikongo_corpus |
|
|
metrics: |
|
|
- accuracy |
|
|
- perplexity |
|
|
model-index: |
|
|
- name: KiKBERT |
|
|
results: |
|
|
- task: |
|
|
name: Masked Language Modeling |
|
|
type: masked-language-modeling |
|
|
dataset: |
|
|
name: Kikongo Corpus |
|
|
type: text |
|
|
metrics: |
|
|
- name: Accuracy |
|
|
type: accuracy |
|
|
value: 0.95 |
|
|
- name: Perplexity |
|
|
type: perplexity |
|
|
value: 12.5 |
|
|
--- |
|
|
|
|
|
# KiKBERT: Modelo de Linguagem para Kikongo |
|
|
|
|
|
**KiKBERT** é o primeiro modelo Transformer desenvolvido especificamente para a língua **Kikongo**, baseado na arquitetura **RoBERTa-base**. |
|
|
O modelo foi treinado com um grande corpus textual de Kikongo, incluindo dados linguísticos, morfológicos e contextuais, provenientes de textos literários, religiosos e culturais. |
|
|
|
|
|
--- |
|
|
|
|
|
## Arquitetura do Modelo |
|
|
|
|
|
- **Backbone:** RoBERTa-base |
|
|
- **Número de camadas:** 12 |
|
|
- **Cabeças de atenção:** 12 |
|
|
- **Dimensão oculta:** 768 |
|
|
- **Tarefas principais:** |
|
|
- Masked Language Modeling (treino principal) |
|
|
- Análise morfológica |
|
|
- Classificação de sentimentos |
|
|
|
|
|
### O que é o Backbone? |
|
|
O **backbone** é a espinha dorsal do modelo — a parte responsável por extrair representações (features) linguísticas a partir do texto. |
|
|
No **KiKBERT**, o backbone é o **RoBERTa-base**, que foi adaptado e reentreinado com o corpus Kikongo para aprender as dependências e estruturas linguísticas dessa língua. |
|
|
|
|
|
--- |
|
|
|
|
|
## Dados de Treino |
|
|
|
|
|
O modelo foi treinado com o **Kikongo Corpus**, um conjunto cuidadosamente compilado com mais de **150.000 palavras**, incluindo variantes regionais como: |
|
|
|
|
|
- **Kisikongo** |
|
|
- **Kiyombe** |
|
|
- **Kimbata** |
|
|
- **Kisolongo** |
|
|
|
|
|
O corpus abrange textos religiosos, literários, conversacionais e educacionais, permitindo uma cobertura lexical e morfológica ampla da língua Kikongo. |
|
|
|
|
|
--- |
|
|
|
|
|
## Aplicações Práticas |
|
|
|
|
|
|
|
|
- **Análise Sintática**: identificação da estrutura das frases e relações entre palavras. |
|
|
- **Análise Morfológica**: classificação das palavras em suas classes gramaticais (substantivos, verbos, adjetivos, etc.). |
|
|
- **Sumarização de Texto**: geração de resumos de textos escritos em Kikongo. |
|
|
- Ferramentas de Processamento de Linguagem Natural para línguas bantu |
|
|
|
|
|
--- |
|
|
|
|
|
## Desempenho |
|
|
|
|
|
 |
|
|
|
|
|
| Classe | Precisão | Recall | F1-score | Suporte | |
|
|
|---------|----------|--------|----------|---------| |
|
|
| ADJ | 0.79 | 0.97 | 0.87 | 65 | |
|
|
| ADV | 0.97 | 0.79 | 0.87 | 81 | |
|
|
| CONJ | 1.0 | 1.0 | 1.0 | 92 | |
|
|
| INTERJ | 0.89 | 0.86 | 0.87 | 90 | |
|
|
| NUM | 1.0 | 1.0 | 1.0 | 75 | |
|
|
| PREP | 0.91 | 0.93 | 0.92 | 146 | |
|
|
| PRON | 1.0 | 1.0 | 1.0 | 70 | |
|
|
| SUBST | 1.0 | 1.0 | 1.0 | 75 | |
|
|
| VERB | 1.0 | 1.0 | 1.0 | 70 | |
|
|
|
|
|
|
|
|
|
|
|
| Métrica | Valor | |
|
|
|----------|--------| |
|
|
| **Accuracy** | 0.95 | |
|
|
| **Perplexity** | 12.5 | |
|
|
|
|
|
Esses resultados mostram que o modelo atinge um bom nível de compreensão linguística e coerência textual, considerando a complexidade morfológica do Kikongo. |
|
|
|
|
|
--- |
|
|
|
|
|
## 💡 Exemplo de Uso |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForMaskedLM |
|
|
import torch |
|
|
|
|
|
# Carregar o modelo e o tokenizer |
|
|
tokenizer = AutoTokenizer.from_pretrained("fhenrivx/Kikbert") |
|
|
model = AutoModelForMaskedLM.from_pretrained("fhenrivx/Kikbert") |
|
|
|
|
|
# Exemplo de frase |
|
|
text = "Nzambi ke __ bantu yandi." |
|
|
|
|
|
# Tokenização |
|
|
inputs = tokenizer(text, return_tensors="pt") |
|
|
|
|
|
# Predição |
|
|
with torch.no_grad(): |
|
|
outputs = model(**inputs) |
|
|
predictions = torch.argmax(outputs.logits, dim=-1) |
|
|
|
|
|
# Resultado |
|
|
predicted_token = tokenizer.decode(predictions[0]) |
|
|
print(predicted_token) |
|
|
|