/ Модель

Характеристики

Контекст
512 токенов
Параметры
132 млн
Архитектура
camembert · dense
Базовая модель
wangchanberta-base-att-spm-uncased
Библиотека
transformers
Опубликована
12 фев 2025

wangchanberta-thainer-corpus-v2-2

Разметка токеновТекст → label5 профессий

Дообученная WangchanBERTa размечает тайские токены, в том числе для извлечения именованных сущностей.

144скачиваний за 30 дней3лайкавеса обновлены12 фев 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Porameht/wangchanberta-thainer-corpus-v2-2 — модель на основе WangchanBERTa, дообученная на наборе pythainlp/thainer-corpus-v2.2 для классификации токенов в тайском тексте. Она предназначена для извлечения именованных сущностей и другой разметки последовательностей с помощью Transformers. Архитектура — CamemBERT для классификации токенов, размер — 132,5 млн параметров, контекст — до 512 токенов. В проверке на валидационной выборке указаны F1 0,8575, точность 0,8300 и полнота 0,8870. Лицензия в предоставленных данных не указана.

Сценарии применения

  • распознавание именованных сущностей в тайском тексте
  • разметка токенов тайских документов
  • извлечение сущностей из тайских новостей
  • классификация слов и фрагментов в тайских корпусах

Ограничения

Показатели качества приведены для валидационной выборки Thainer Corpus и могут отличаться на других данных. Контекст ограничен 512 токенами.

Для каких профессий подходит5

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

wangchanberta-thainer-corpus-v2-2

This model is a fine-tuned version of airesearch/wangchanberta-base-att-spm-uncased on an pythainlp/thainer-corpus-v2.2 dataset. It achieves the following results on the evaluation set:

  • Loss: 0.1053
  • Precision: 0.8300
  • Recall: 0.8870
  • F1: 0.8575
  • Accuracy: 0.9717

Model description

Training and evaluation data

Validation from the Validation set

{'eval_loss': 0.10526859760284424,
 'eval_precision': 0.8299675891298928,
 'eval_recall': 0.8870237143618439,
 'eval_f1': 0.8575476558475013,
 'eval_accuracy': 0.9717195641875889,
 'eval_runtime': 18.2172,
 'eval_samples_per_second': 80.967,
 'eval_steps_per_second': 5.105,
 'epoch': 10.0}

Test from the Test set

{'eval_loss': 0.11170374602079391,
 'eval_precision': 0.8178285159096429,
 'eval_recall': 0.8823375262054507,
 'eval_f1': 0.8488591957645278,
 'eval_accuracy': 0.968742017138478,
 'eval_runtime': 18.6202,
 'eval_samples_per_second': 79.054,
 'eval_steps_per_second': 4.941,
 'epoch': 10.0}

How to use

Inference

Huggingface doesn't support inference token classification for Thai and It will give wrong tag. You must using this code.

from transformers import AutoTokenizer
from transformers import AutoModelForTokenClassification
from pythainlp.tokenize import word_tokenize # pip install pythainlp
import torch

name="Porameht/wangchanberta-thainer-corpus-v2-2"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForTokenClassification.from_pretrained(name)

sentence="นายปรเมศ คุ้มสมบัติ 552/44 หมู่ 1 บ้านหนองบัว ต.ภูหอ อ.ภูหลวง จ.เลย 42230"
cut=word_tokenize(sentence.replace(" ", "<_>"))
inputs=tokenizer(cut,is_split_into_words=True,return_tensors="pt")

ids = inputs["input_ids"]
mask = inputs["attention_mask"]
# forward pass
outputs = model(ids, attention_mask=mask)
logits = outputs[0]

predictions = torch.argmax(logits, dim=2)
predicted_token_class = [model.config.id2label[t.item()] for t in predictions[0]]

def fix_span_error(words,ner):
    _ner = []
    _ner=ner
    _new_tag=[]
    for i,j in zip(words,_ner):
        #print(i,j)
        i=tokenizer.decode(i)
        if i.isspace() and j.startswith("B-"):
            j="O"
        if i=='' or i=='<s>' or i=='</s>':
            continue
        if i=="<_>":
            i=" "
        _new_tag.append((i,j))
    return _new_tag

ner_tag=fix_span_error(inputs['input_ids'][0],predicted_token_class)
ner_tag

output:

[('นาย', 'B-PERSON'),
 ('ปร', 'I-PERSON'),
 ('เม', 'I-PERSON'),
 ('ศ', 'I-PERSON'),
 (' ', 'B-LOCATION'),
 ('คุ้ม', 'I-PERSON'),
 ('สมบัติ', 'I-PERSON'),
 (' ', 'O'),
 ('55', 'O'),
 ('2/', 'O'),
 ('44', 'O'),
 (' ', 'B-LOCATION'),
 ('หมู่', 'B-LOCATION'),
 (' ', 'I-LOCATION'),
 ('1', 'I-LOCATION'),
 (' ', 'B-LOCATION'),
 ('บ้าน', 'B-LOCATION'),
 ('หนอง', 'I-LOCATION'),
 ('บัว', 'I-LOCATION'),
 (' ', 'B-LOCATION'),
 ('ต', 'B-LOCATION'),
 ('.', 'I-LOCATION'),
 ('ภู', 'I-LOCATION'),
 ('หอ', 'I-LOCATION'),
 (' ', 'B-LOCATION'),
 ('อ', 'B-LOCATION'),
 ('.', 'I-LOCATION'),
 ('ภู', 'I-LOCATION'),
 ('หลวง', 'I-LOCATION'),
 (' ', 'B-LOCATION'),
 ('จ', 'B-LOCATION'),
 ('.', 'I-LOCATION'),
 ('เลย', 'I-LOCATION'),
 (' ', 'B-ZIP'),
 ('4', 'B-ZIP'),
 ('22', 'B-ZIP'),
 ('30', 'B-ZIP')]

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 2e-05
  • train_batch_size: 16
  • eval_batch_size: 16
  • seed: 42
  • optimizer: Use adamw_torch with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
  • lr_scheduler_type: linear
  • num_epochs: 10

Training results

Training LossEpochStepValidation LossPrecisionRecallF1Accuracy
No log1.02740.17900.68670.79080.73510.9484
0.26812.05480.13310.77880.84630.81110.9650
0.26813.08220.11350.80820.87660.84100.9692
0.08294.010960.10530.83000.88700.85750.9717
0.08295.013700.11360.81750.88680.85070.9704
0.05126.016440.11350.84080.88360.86160.9723
0.05127.019180.11620.84290.88940.86560.9725
0.0378.021920.12050.84750.89160.86900.9730
0.0379.024660.12370.84900.89420.87100.9732
0.027510.027400.12220.84800.89340.87010.9733

Framework versions

  • Transformers 4.47.1
  • Pytorch 2.5.1+cu121
  • Datasets 3.2.0
  • Tokenizers 0.21.0

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · token-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
CamembertForTokenClassification
Ревизия весов
4b759ec

0 моделей