Pooya-Fallah commited on
Commit
ebecf97
1 Parent(s): 1b97aa1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from huggingface_hub import PyTorchModelHubMixin
4
+ import transformers
5
+ import hazm
6
+ import gradio as gr
7
+
8
+ # Define class of the model
9
+ class ParsbertHallu(nn.Module, PyTorchModelHubMixin):
10
+ def __init__(self):
11
+ super().__init__()
12
+ self.transformer_model = transformers.AutoModelForSequenceClassification.from_pretrained("Pooya-Fallah/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
+ # Example Inputs
25
+ example_1 = [
26
+ """به گزارش شانا، نمایندگان در نشست علنی عصر دیروز (شنبه، ۱۴ بهمن‌ماه) مجلس شورای اسلامی، در جریان بررسی جزییات لایحه بودجه سال ۹۷ کل کشور با بخش درآمدی بند (ط) تبصره ۵ این لایحه با ۱۵۶ رای موافق، ۲۲ رای مخالف و ۵ رای ممتنع از مجموع ۲۳۱ نماینده حاضر در جلسه موافقت کردند.
27
+ در بخش درآمدی بند (ط) تبصره (۵) این لایحه آمده است که به‌‌منظور‌ سرمایه‌‌گذاری در طرح‌های نفت و گاز با اولویت میدان‌های مشترک وزارت نفت و طرح‌های زیربنایی و توسعه‌ای وزارت صنعت، معدن و تجارت، وزارتخانه‌های مذکور از طریق شرکت‌های تابع ذی‌ربط و با تصویب شورای اقتصاد، اوراق مالی اسلامی (ریالی یا ارزی) در سقف ۳۵ هزار میلیارد ریال منتشر کنند.
28
+ """
29
+ ,
30
+ """نمایندگان مجلس شورای اسلامی تصمیم گرفتند که وزارتخانه‌های نفت و صنعت، معدن و تجارت را به انتشار اوراق مالی اسلامی تا سقف ۳۵ هزار میلیارد ریال مجاز کنند، همچنین تصویب شورای اقتصاد برای سرمایه‌گذاری در طرح‌های نفت و گاز اعلام شد."""
31
+ ]
32
+
33
+ example_2 = [
34
+
35
+ """به گزارش شانا، تهیه این سند از نیمه دوم پارسال در دستور کار معاونت ضوابط فنی و مهندسی اداره کل نظام فنی و اجرایی و ارزشیابی طرح‌ها قرار گرفت و با برگزاری جلسات تخصصی کارشناسی و استفاده از نظرات حوزه‌های کارفرمایی و پیمانکاری در زمینه پروژه‌های تعمیرات اساسی ماشین‌آلات فرآیندی دوار، کلیات خدمات این حوزه تدوین شد.
36
+ شرکت‌ها و مدیریت‌های زیر مجموعه وزارت نفت که در حوزه‌های تعمیرات اساسی این نوع ماشین‌آلات (شامل انواع توربین، کمپرسور، پمپ، الکتروموتور، ژنراتور و ….) فعالیت می‌کنند، بر اساس این سند قادر خواهند بود شرح خدمات قراردادهای تعمیراتی خود را تهیه کنند.
37
+ این سند پس از ۶ ماه با دریافت دیدگاه‎های پیشنهادی، تکمیل و اصلاح شده و به صورت قطعی ابلاغ می‎شود.
38
+ """
39
+ ,
40
+ """نمایندگان مجلس شورای اسلامی تصمیم گرفتند که وزارتخانه‌های نفت و صنعت، معدن و تجارت را به انتشار اوراق مالی اسلامی تا سقف ۳۵ هزار میلیارد ریال مجاز کنند، همچنین تصویب شورای اقتصاد برای سرمایه‌گذاری در طرح‌های نفت و گاز اعلام شد."""
41
+ ]
42
+
43
+ # Hazm normalizer
44
+ normalizer = hazm.Normalizer()
45
+
46
+ # tokenizer is from ParsBERT (HooshvareLab/bert-fa-zwnj-base)
47
+ tokenizer = transformers.AutoTokenizer.from_pretrained('HooshvareLab/bert-fa-zwnj-base')
48
+
49
+ # load model
50
+ model = ParsbertHallu.from_pretrained("Pooya-Fallah/ParsbertHallu")
51
+
52
+ def get_hallucination_label(document, summary):
53
+ document = normalizer.normalize(document)
54
+ summary = normalizer.normalize(summary)
55
+
56
+ tokens = tokenizer(document, summary, truncation=True, padding=True,
57
+ max_length=512, return_tensors='pt')
58
+
59
+ prob = model(tokens).item()
60
+ if prob > 0.5:
61
+ return "Hallucinated"
62
+ else:
63
+ return "Not-Hallucinated"
64
+
65
+ demo = gr.Interface(fn=get_hallucination_label, inputs=[gr.TextArea(lines=7, placeholder="document"), gr.TextArea(lines=3, placeholder="summary")],
66
+ outputs="text", examples=[example_1, example_2],
67
+ title="Hallucination Detection Demo for Persian Summarization Task",
68
+ description="A straightforward binary classifier that determines whether the generated summarization is hallucinated or not."
69
+ )
70
+ demo.launch()