Viewing File: /home/ubuntu/codegamaai-test/broker_bot/help_apis/intent_class.py

import torch
import torch.nn.functional as F
import pandas as pd
from transformers import BertTokenizer, BertForSequenceClassification
from sklearn.model_selection import train_test_split
from torch.utils.data import Dataset
import os

output_dir = os.environ['INTENT_MODEL_DIR']
checkpoint_dir = os.path.join(os.environ['INTENT_MODEL_DIR'], "checkpoint-200")

# Load the model and tokenizer from the checkpoint
model = BertForSequenceClassification.from_pretrained(checkpoint_dir)
tokenizer = BertTokenizer.from_pretrained(output_dir)

# Prediction function with probabilities
def predict_with_probabilities(text, model, tokenizer):
    model.eval()  # Set model to evaluation mode
    predictions = []
    probabilities = []

    with torch.no_grad():  # Disable gradient calculation
        
        inputs = tokenizer(text, padding=True, truncation=True, max_length=128, return_tensors="pt")
        outputs = model(**inputs)
        logits = outputs.logits
        probs = F.softmax(logits, dim=1)
        _, predicted_class = torch.max(probs, dim=1)
        predicted_prob = torch.max(probs, dim=1).values

        # create dictionary with predicted class original names instead of numbers
        di = {0: 'buy_stocks', 1: 'historical_stock_data', 2: 'sell_stocks', 3: 'stock_info', 4: 'view_stocks'}
        predicted_class = di[predicted_class.item()]
        response_dict = {
            "predicted_class": predicted_class,
            "predicted_prob": predicted_prob.item()
        }
        

    return response_dict

# Intent classification function
def classify_user_query(text):
    response = predict_with_probabilities(text, model, tokenizer)
    return response
Back to Directory File Manager