financIA / src /predict.py
Frorozcol's picture
Plus: Addes the .csv from huawei
56e1ed7
from pathlib import Path
import torch
import numpy as np
from .tokenizer import load_tokenizer, preprocessing_text
from .model import load_model
# CONFIG
NUM_VARAIBLES = 3
NUM_LABELS = 3
num_labels = NUM_LABELS * NUM_VARAIBLES
divice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
num_labels = NUM_LABELS * NUM_VARAIBLES
model_name = "pysentimiento/robertuito-sentiment-analysis"
checkpoint_path = Path(__file__).parent.parent / "checkpoints" / "model.ckpt"
tokenizer = load_tokenizer(model_name)
model = load_model(checkpoint_path, model_name, num_labels, divice)
RETURN_VALUES =[
"target_sentiment_negative",
"target_sentiment_neutral",
"target_sentiment_positive",
"companies_sentiment_negative",
"companies_sentiment_neutral",
"companies_sentiment_positive",
"consumers_sentiment_negative",
"consumers_sentiment_neutral",
"consumers_sentiment_positive"
]
def filter(preds, threshold=0.5):
bool = preds > threshold
indices = np.where(bool)[0]
filtered_values = {RETURN_VALUES[index]: preds[index] for index in indices}
return filtered_values
def get_predict(text):
inputs = preprocessing_text(text, tokenizer)
input_ids = inputs["input_ids"].to(divice)
attention_mask = inputs["attention_mask"].to(divice)
token_type_ids = inputs["token_type_ids"].to(divice)
outputs = model(input_ids, attention_mask, token_type_ids)
preds = torch.sigmoid(outputs).detach().cpu().numpy()
preds = filter(preds[0])
return preds