ParsBERTHallu

This model is a fine-tuned version of parsi-ai-nlpclass/ParsBERT-nli-FarsTail-FarSick on persian hallucination datasets which are available from here.

How to use

import torch
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin
import transformers
import hazm # Make you have installed hazm library (pip install hazm)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Define class of the model
class ParsbertHallu(nn.Module, PyTorchModelHubMixin):
    def __init__(self):
        super().__init__()
        self.transformer_model = transformers.AutoModelForSequenceClassification.from_pretrained("parsi-ai-nlpclass/ParsBERT-nli-FarsTail-FarSick",
                                                                           num_labels=3)
        self.head = nn.Sequential(
            nn.Linear(3,1),
            nn.Sigmoid()
        )


    def forward(self, x):
        out = self.transformer_model(**x)['logits']
        return torch.squeeze(self.head(out))

# Hazm normalizer
normalizer = hazm.Normalizer()

# tokenizer is from ParsBERT (HooshvareLab/bert-fa-zwnj-base)
tokenizer = transformers.AutoTokenizer.from_pretrained('HooshvareLab/bert-fa-zwnj-base')

def preprocess(reference, predict):
    if isinstance(reference, list) and isinstance(predict, list):
        reference = [normalizer.normalize(ref) for ref in reference]
        predict = [normalizer.normalize(pred) for pred in predict]
    elif  isinstance(reference, str) and isinstance(predict, str):
        reference = normalizer.normalize(reference)
        predict = normalizer.normalize(predict)
    else:
        raise "Reference and predict both must be list of str or str"

    # Tokenize the text
    tokens = tokenizer(reference, predict, truncation=True, padding=True,
                          max_length=512, return_tensors='pt')

    # Send the tokens to the device
    tokens = {key: value.to(device) for key, value in tokens.items()}

    return tokens

# load model
model = ParsbertHallu.from_pretrained("Pooya-Fallah/ParsbertHallu")
model.to(device)

# example inference
reference = """به گزارش خبرنگار ایمنا، حمیدرضا موحدی‌زاده در صفحه اینستاگرام خود نوشت: «سال گذشته به اتفاق آقای احسان اصولی عضو و رئیس محترم کمیسیون فرهنگی و اجتماعی شورای اسلامی شهر مشهد به تهران و تالار وحدت رفتیم و از آقای همایون شجریان دعوت رسمی کردیم تا در مشهد کنسرت اجرا کنند و ما به عنوان نمایندگان مردم و جوانان شریف مشهد برگزاری آن را در یکی از فرهنگسراهای شهرداری مشهد تضمین می‌کنیم و همکاری سایر ارگان‌ها و نیروی انتظامی را هم جلب می‌کنیم.
 مدیر برنامه او کمی نگران از حاشیه‌های احتمالی کنسرت در مشهد بود. قول گرفتیم در شرایط مناسبی این اقدام خداپسندانه و مردم خواهانه را در شهر مشهد» شهر امید، مدارا و زندگی «اجرا کنیم. ان شاء الله»"""
predict = "نایب رئیس شورای شهر مشهد اعلام کرد که همایون شجریان به دعوت او در یک کنسرت در مشهد اجرا خواهد کرد و تمامی اقدامات لازم برای حفاظت از امنیت و حفظ حیثیت شهر انجام خواهد شد."
model(preprocess(reference, predict))
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The model has no library tag.

Spaces using parsi-ai-nlpclass/ParsbertHallu 2