Skip to main content

Text Classifier using LSTM, GRU, and Transformer BERT

Project description

Text Classifier using LSTM, GRU, and Transformer BERT

Install Package

!pip install databits

Data preparation

Prepare the data X_train, y_train and X_test, y_test in list form.
X_train -> list (text)
X_test -> list (text)
y_train -> lits label (integer starts from 1)
y_test -> lits label (integer starts from 1)

Define Hyperparameters

import torch
import torch.nn as nn
import numpy as np
from databits import CreateModel
from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score, accuracy_score

BATCH_SIZE = 32
SEQUENCE_LENGTH = 100
EPOCHS = 5
EMBED_DIM = 512
N_LAYERS = 2
DROPOUT_RATE = 0.1
NUM_CLASSES = len(np.unique(np.array(y_train)))
OPTIMIZER = torch.optim.Adam
LR = 0.001
LOSS = nn.CrossEntropyLoss

Define Model

model = CreateModel(X_train, y_train,
                 X_test, y_test,
                 batch=BATCH_SIZE,
                 seq=SEQUENCE_LENGTH,
                 embedding_dim=EMBED_DIM,
                 n_layers=N_LAYERS,
                 dropout_rate=DROPOUT_RATE,
                 num_classes=NUM_CLASSES)

Train Model

model.LSTM() # lstm model
model.GRU() # gru model
model.TRANSFORMER() # tranformer model
model.BERT() # bert model
model.FASTTEXT() # fasttext model

example, use gru model:

model.GRU()
history = model.fit(epochs=EPOCHS, optimizer=OPTIMIZER, lr=LR, loss=LOSS)

example, use bert model:

model.BERT()
history = model.fit(epochs=EPOCHS, optimizer=OPTIMIZER, lr=LR, loss=LOSS)

Get y_true and predict label

y_true, y_pred = model.eval() # no argumen needed

Compute Accuracy, Precisiom, Recall, F1, and Cofusion Matrix

from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score, accuracy_score

precision = precision_score(y_true, y_pred, average='macro')
recall = recall_score(y_true, y_pred, average='macro')
f1 = f1_score(y_true, y_pred, average='macro')
accuracy = accuracy_score(y_true, y_pred)

print(f"Precision: {precision:.4f}")
print(f"Recall: {recall:.4f}")
print(f"F1 Score: {f1:.4f}")
print(f"Akurasi: {accuracy:.4f}")

cm = confusion_matrix(y_true, y_pred)
print(cm)

Inference

text = "this is text"
pred = model.predict(text) # or
pred = model(text)
print(pred) # text label in int format

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

databits-2.0.5.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

databits-2.0.5-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file databits-2.0.5.tar.gz.

File metadata

  • Download URL: databits-2.0.5.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.13

File hashes

Hashes for databits-2.0.5.tar.gz
Algorithm Hash digest
SHA256 ad522fe40ef916b045f23f6f803b857153141c53bddb0bd5d61e67408af799d3
MD5 6a01c520fb30d87b8b728613e130e3a7
BLAKE2b-256 e394cd3fe4b4b5f5143ba3567f5c8316a82e010d3d73696df75a0fcf0c464d52

See more details on using hashes here.

File details

Details for the file databits-2.0.5-py3-none-any.whl.

File metadata

  • Download URL: databits-2.0.5-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.13

File hashes

Hashes for databits-2.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b08646510d9a865ee0e9238fa00af67c7c80218b488bd97c9e3e3771970a0775
MD5 95b1ac90046007334be596a80e2f4470
BLAKE2b-256 356e77f98dccd7c4101406f6bec96a99b0c38a0ebce0655030403f74f6835b1a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page