| | --- |
| | license: mit |
| | --- |
| | ## BERT-based Text Classification Model |
| | This model is a fine-tuned version of the bert-base-uncased model, specifically adapted for text classification across a diverse set of categories. The model has been trained on a dataset collected from multiple sources, including the News Category Dataset on Kaggle and various other websites. |
| |
|
| | The model classifies text into one of the following 12 categories: |
| |
|
| | * Food |
| | * Videogames & Shows |
| | * Kids and fun |
| | * Homestyle |
| | * Travel |
| | * Health |
| | * Charity |
| | * Electronics & Technology |
| | * Sports |
| | * Cultural & Music |
| | * Education |
| | * Convenience |
| | The model has demonstrated robust performance with an accuracy of 0.721459, F1 score of 0.659451, precision of 0.707620, and recall of 0.635155. |
| |
|
| | ## Model Architecture |
| | The model leverages the BertForSequenceClassification architecture, It has been fine-tuned on the aforementioned dataset, with the following key configuration parameters: |
| |
|
| | * Hidden size: 768 |
| | * Number of attention heads: 12 |
| | * Number of hidden layers: 12 |
| | * Max position embeddings: 512 |
| | * Type vocab size: 2 |
| | * Vocab size: 30522 |
| | * The model uses the GELU activation function in its hidden layers and applies dropout with a probability of 0.1 to the attention probabilities to prevent overfitting. |
| |
|
| | ## Example |
| |
|
| | ```python |
| | from transformers import AutoModelForSequenceClassification, AutoTokenizer |
| | import numpy as np |
| | from scipy.special import expit |
| | |
| | MODEL = "PavanDeepak/Topic_Classification" |
| | tokenizer = AutoTokenizer.from_pretrained(MODEL) |
| | model = AutoModelForSequenceClassification.from_pretrained(MODEL) |
| | class_mapping = model.config.id2label |
| | |
| | text = "I love chicken manchuria" |
| | tokens = tokenizer(text, return_tensors="pt") |
| | output = model(**tokens) |
| | |
| | scores = output.logits[0][0].detach().numpy() |
| | scores = expit(scores) |
| | predictions = (scores >= 0.5) * 1 |
| | |
| | for i in range(len(predictions)): |
| | if predictions[i]: |
| | print(class_mapping[i]) |
| | ```python |
| |
|
| |
|
| | ## Output: |
| |
|
| | * Food |
| | * Videogames & Shows |
| | * Homestyle |
| | * Travel |
| | * Health |