Download app.py from hoom4n/SentiNet: direct link, hf CLI and curl.
- Browser
- Download file 1.92 kB
-
https://huggingface.co/spaces/hoom4n/SentiNet/resolve/main/app.py
- Command line
-
hf download hf://spaces/hoom4n/SentiNet/app.py
-
curl -L -o app.py https://huggingface.co/spaces/hoom4n/SentiNet/resolve/main/app.py
1.92 kB
| import os | |
| os.environ["USE_TF"] = "0" | |
| import torch | |
| import gradio as gr | |
| from transformers import DebertaV2Tokenizer | |
| from src.model import SentiNetTransformer | |
| from src.config import HPARAMS | |
| from src.ui import build_demo | |
| # CONFIGUARATION | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| hp = HPARAMS() | |
| backbone_config_path = "model/config.json" | |
| checkpint_path = "model/SentiNet_Transformer_params.pt" | |
| tokenizer_path = "model/" | |
| # LOAD MODEL & TOKENIZER | |
| model = SentiNetTransformer(model_path=backbone_config_path, fc_dropout=hp.transformer_fc_dropout).to(device) | |
| state_dict = torch.load(checkpint_path, map_location=device, weights_only=True) | |
| model.load_state_dict(state_dict) | |
| tokenizer = DebertaV2Tokenizer.from_pretrained(tokenizer_path) | |
| # INFERENCE FUNCTION | |
| def sentiment_classifier(model, tokenizer, text, thresh=0.5, max_length_trun=256, device=None): | |
| if device is None: | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| inputs = tokenizer(text, return_tensors="pt", | |
| add_special_tokens=True, max_length=max_length_trun, | |
| truncation=True, padding=True) | |
| inputs = {k: v.to(device) for k, v in inputs.items()} | |
| model.eval() | |
| logits = model(inputs) | |
| prob = torch.sigmoid(logits).cpu().numpy()[0][0] | |
| if prob >= thresh: | |
| return "😀 Positive", round(float(prob), 3) | |
| else: | |
| return "😞 Negative", round(float(prob), 3) | |
| # GRADIO DEMO | |
| def generation_fn(text): | |
| return sentiment_classifier(model, tokenizer, text, max_length_trun=256, device=None) | |
| demo = build_demo( | |
| generation_fn, | |
| english_title = "# SentiNet: Transformer‑Based Sentiment Classifier", | |
| persian_title = "# سنتینت: تحلیل احساسات با ترنسفورمر", | |
| assets_dir = "assets", | |
| app_title = "SentiNet" | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |