Views
No views yet
1import torch
2import torch.nn as nn
3from huggingface_hub import PyTorchModelHubMixin
4import transformers
5import hazm # Make you have installed hazm library (pip install hazm)
6device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
7
8# Define class of the model
9class ParsbertHallu(nn.Module, PyTorchModelHubMixin):
10 def __init__(self):
11 super().__init__()
12 self.transformer_model = transformers.AutoModelForSequenceClassification.from_pretrained("parsi-ai-nlpclass/ParsBERT-nli-FarsTail-FarSick",
13 num_labels=3)
14 self.head = nn.Sequential(
15 nn.Linear(3,1),
16 nn.Sigmoid()
17 )
18
19
20 def forward(self, x):
21 out = self.transformer_model(**x)['logits']
22 return torch.squeeze(self.head(out))
23
24# Hazm normalizer
25normalizer = hazm.Normalizer()
26
27# tokenizer is from ParsBERT (HooshvareLab/bert-fa-zwnj-base)
28tokenizer = transformers.AutoTokenizer.from_pretrained('HooshvareLab/bert-fa-zwnj-base')
29
30def preprocess(reference, predict):
31 if isinstance(reference, list) and isinstance(predict, list):
32 reference = [normalizer.normalize(ref) for ref in reference]
33 predict = [normalizer.normalize(pred) for pred in predict]
34 elif isinstance(reference, str) and isinstance(predict, str):
35 reference = normalizer.normalize(reference)
36 predict = normalizer.normalize(predict)
37 else:
38 raise "Reference and predict both must be list of str or str"
39
40 # Tokenize the text
41 tokens = tokenizer(reference, predict, truncation=True, padding=True,
42 max_length=512, return_tensors='pt')
43
44 # Send the tokens to the device
45 tokens = {key: value.to(device) for key, value in tokens.items()}
46
47 return tokens
48
49# load model
50model = ParsbertHallu.from_pretrained("Pooya-Fallah/ParsbertHallu")
51model.to(device)
52
53# example inference
54reference = """به گزارش خبرنگار ایمنا، حمیدرضا موحدیزاده در صفحه اینستاگرام خود نوشت: «سال گذشته به اتفاق آقای احسان اصولی عضو و رئیس محترم کمیسیون فرهنگی و اجتماعی شورای اسلامی شهر مشهد به تهران و تالار وحدت رفتیم و از آقای همایون شجریان دعوت رسمی کردیم تا در مشهد کنسرت اجرا کنند و ما به عنوان نمایندگان مردم و جوانان شریف مشهد برگزاری آن را در یکی از فرهنگسراهای شهرداری مشهد تضمین میکنیم و همکاری سایر ارگانها و نیروی انتظامی را هم جلب میکنیم.
55 مدیر برنامه او کمی نگران از حاشیههای احتمالی کنسرت در مشهد بود. قول گرفتیم در شرایط مناسبی این اقدام خداپسندانه و مردم خواهانه را در شهر مشهد» شهر امید، مدارا و زندگی «اجرا کنیم. ان شاء الله»"""
56predict = "نایب رئیس شورای شهر مشهد اعلام کرد که همایون شجریان به دعوت او در یک کنسرت در مشهد اجرا خواهد کرد و تمامی اقدامات لازم برای حفاظت از امنیت و حفظ حیثیت شهر انجام خواهد شد."
57model(preprocess(reference, predict))