|
--- |
|
license: mit |
|
base_model: xlm-roberta-base |
|
tags: |
|
- generated_from_trainer |
|
metrics: |
|
- f1 |
|
- accuracy |
|
model-index: |
|
- name: mymodel-classify-category-news |
|
results: [] |
|
pipeline_tag: text-classification |
|
--- |
|
|
|
widget: |
|
- text: "Is this review positive or negative? Review: Best cast iron skillet you will ever buy." |
|
example_title: "Sentiment analysis" |
|
- text: "Barack Obama nominated Hilary Clinton as his secretary of state on Monday. He chose her because she had ..." |
|
example_title: "Coreference resolution" |
|
- text: "On a shelf, there are five books: a gray book, a red book, a purple book, a blue book, and a black book ..." |
|
example_title: "Logic puzzles" |
|
- text: "The two men running to become New York City's next mayor will face off in their first debate Wednesday night ..." |
|
example_title: "Reading comprehension" |
|
# mymodel-classify-category-news |
|
|
|
This model is a fine-tuned version of [xlm-roberta-base](https://huggingface.co/xlm-roberta-base) on the None dataset. |
|
It achieves the following results on the evaluation set: |
|
- Loss: 0.0370 |
|
- F1: 0.9443 |
|
- Roc Auc: 0.9677 |
|
- Accuracy: 0.9401 |
|
|
|
## Model description |
|
|
|
Predict type of Vietnamese news :D |
|
|
|
## Intended uses & limitations |
|
Input limit is 512 tokens so, when model try to predict long text it will error |
|
``` |
|
from transformers import pipeline |
|
|
|
# Split chunk with 512 token (max_len of tokenizer) |
|
chunk_size = 512 |
|
chunks = [prompt[i:i + chunk_size] for i in range(0, len(prompt), chunk_size)] |
|
|
|
# pipeline to call model uwu |
|
pipe = pipeline("text-classification", model="duwuonline/mymodel-classify-category-news") |
|
|
|
# Create list to save predict |
|
results = [] |
|
|
|
# Call model to predict small chunk and save them in list |
|
for chunk in chunks: |
|
result = pipe(chunk) |
|
results.append(result) |
|
|
|
# Function to get most common label |
|
def get_most_common_label(results_list): |
|
label_counts = {} |
|
for result in results_list: |
|
label = result[0]['label'] |
|
label_counts[label] = label_counts.get(label, 0) + 1 |
|
|
|
most_common_label = max(label_counts, key=label_counts.get) |
|
return most_common_label |
|
|
|
# call funtion get_most_common_label |
|
most_common_label = get_most_common_label(results) |
|
print("The most label appear is:", most_common_label) |
|
|
|
``` |
|
## Training and evaluation data |
|
|
|
I will update later |
|
|
|
## Training procedure |
|
|
|
### Training hyperparameters |
|
|
|
The following hyperparameters were used during training: |
|
- learning_rate: 2e-05 |
|
- train_batch_size: 8 |
|
- eval_batch_size: 8 |
|
- seed: 42 |
|
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 |
|
- lr_scheduler_type: linear |
|
- num_epochs: 5 |
|
|
|
### Training results |
|
|
|
| Training Loss | Epoch | Step | Validation Loss | F1 | Roc Auc | Accuracy | |
|
|:-------------:|:-----:|:----:|:---------------:|:------:|:-------:|:--------:| |
|
| No log | 1.0 | 225 | 0.0466 | 0.9354 | 0.9560 | 0.9157 | |
|
| No log | 2.0 | 450 | 0.0505 | 0.9215 | 0.9526 | 0.9113 | |
|
| 0.0418 | 3.0 | 675 | 0.0426 | 0.9330 | 0.9607 | 0.9268 | |
|
| 0.0418 | 4.0 | 900 | 0.0397 | 0.9410 | 0.9664 | 0.9379 | |
|
| 0.0202 | 5.0 | 1125 | 0.0370 | 0.9443 | 0.9677 | 0.9401 | |
|
|
|
|
|
### Framework versions |
|
|
|
- Transformers 4.31.0 |
|
- Pytorch 2.0.1+cu118 |
|
- Datasets 2.13.1 |
|
- Tokenizers 0.13.3 |