rabietiji1's picture
Upload 8 files
c3f05ee verified
Raw History Blame Contribute Delete
9.76 kB
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# ==========================================
# 1. إعداد وتحميل نموذج الذكاء الاصطناعي (AraBERT)
# ==========================================
tokenizer = AutoTokenizer.from_pretrained("aubmindlab/bert-base-arabertv02")
model = AutoModelForSequenceClassification.from_pretrained("aubmindlab/bert-base-arabertv02", num_labels=3)
# ==========================================
# 2. دوال تحليل العقود والنصوص
# ==========================================
def analyze_contract_arabert_deep(contract_text):
"""
تحليل نص العقد البنكي باستخدام القواعد النصية (الكلمات المفتاحية) أولاً،
ثم استخدام نموذج AraBERT للتحليل العميق إذا لم تكن الشروط واضحة.
"""
# أ. فحص الخصائص الربوية الصريحة (القواعد النصية)
riba_explicit = ["فائدة منصوص عليها", "تكلفة ثابتة", "مكافأة ثابتة محددة مسبقاً", "زيادة رأس المال بشكل مستقل"]
fadl_explicit = ["ذهب بذهب", "فضة بفضة", "مثلاً بمثل", "تبادل نفس الطبيعة مع زيادة"]
for phrase in riba_explicit:
if phrase in contract_text:
return {
"risk_level": "عالي جداً (حرام)",
"finding": f"اكتشاف شرط ربوي صريح: ({phrase})",
"explanation": "الربا يُعرّف بأنه فائدة منصوص عليها تعاقدياً وتكلفة ثابتة يتحملها المقترض."
}
for phrase in fadl_explicit:
if phrase in contract_text:
return {
"risk_level": "عالي (ربا الفضل)",
"finding": f"شبهة ربا الفضل: ({phrase})",
"explanation": "يُشترط تكافؤ الكميات وتزامن التبادل لإتمام عملية بيع صحيحة للأشياء من نفس الطبيعة."
}
if "خسارة كلية" in contract_text or "تقاسم حقيقي" in contract_text or "حصص متغيرة" in contract_text:
return {
"risk_level": "منخفض (مباح/مشاركة)",
"finding": "توافق مع نظام المشاركة (PLS)",
"explanation": "هناك تقاسم حقيقي للمخاطر بين الشركاء وهو متوافق مع الشريعة."
}
# ب. التحليل العميق باستخدام الذكاء الاصطناعي (AraBERT) للحالات غير الواضحة
inputs = tokenizer(contract_text, return_tensors="pt", truncation=True, padding=True, max_length=512)
with torch.no_grad():
outputs = model(**inputs)
predicted_class = torch.argmax(outputs.logits, dim=-1).item()
classes = ["عقد صحيح (سلم/استصناع)", "شبهة غرر مرتفعة", "معاملة محظورة (عينة/تورق/ربا)"]
return {
"risk_level": "تقييم الذكاء الاصطناعي",
"finding": classes[predicted_class],
"explanation": "تم تصنيف العقد بناءً على فهم النموذج العميق لسياق المعاملة المكتوبة."
}
# ==========================================
# 3. دوال الاقتصاد الكلي والقيمة المضافة
# ==========================================
def calculate_value_added(transaction_type, Q, P1, P2):
"""
حساب القيمة المضافة للاقتصاد الكلي بناءً على نوع العقد.
"""
result = {"va": 0, "status": "", "message": ""}
if transaction_type == "taqsit":
va = 2 * Q * (P2 - P1)
result["va"] = round(va, 2)
result["status"] = "موجبة (محفزة للنمو)"
result["message"] = "هذه المعاملة تخلق قيمة مضافة إيجابية للاقتصاد، مما يسهل التعامل التجاري."
elif transaction_type == "eina":
va = Q * (P2 - P1)
result["va"] = round(va, 2)
result["status"] = "سالبة (تدهور اقتصادي)"
result["message"] = "معاملة محظورة لأنها تؤدي إلى تدهور وتراجع النمو الاقتصادي وتقتطع من القيمة المضافة."
else:
result["message"] = "نوع المعاملة غير معروف."
return result
def calculate_riba_value_added(is_same_nature, q1, q2, p1, p2, is_delayed):
"""
النمذجة الرياضية لاكتشاف الربا (الفضل والنسيئة) وحساب أثره على القيمة المضافة.
"""
result = {"va": 0, "status": "", "type": "", "message": ""}
# حالة ربا الفضل
if is_same_nature and q1 != q2:
va = -p1 * (q1 + q2)
result["va"] = round(va, 2)
result["status"] = "معاملة محظورة"
result["type"] = "شبهة ربا الفضل"
result["message"] = "تبادل شيئين من نفس الطبيعة بكميات مختلفة يقتطع قيماً من الاقتصاد."
# حالة ربا النسيئة
elif not is_same_nature and q1 == q2 and is_delayed:
va = -q1 * (p1 + p2)
result["va"] = round(va, 2)
result["status"] = "معاملة محظورة"
result["type"] = "شبهة ربا النسيئة"
result["message"] = "زيادة الثمن مقابل الأجل دون مبرر حقيقي يطرح قيماً من الاقتصاد."
# حالة القرض الحسن
elif is_same_nature and q1 == q2 and is_delayed:
va = 9 * q1
result["va"] = round(va, 2)
result["status"] = "معاملة مباحة"
result["type"] = "قرض حسن (بدون فائدة)"
result["message"] = "المعاملة تساهم في التكافل الاجتماعي وتضيف قيمة إيجابية غير مباشرة للاقتصاد."
else:
result["status"] = "يتطلب مراجعة"
result["message"] = "المعاملة تتطلب معطيات إضافية لتصنيفها بدقة."
return result
# ==========================================
# 4. دوال التكافل والزكاة
# ==========================================
def simulate_zakat_impact(total_wealth_rich, poor_count, years=5, growth_rate=0.05, zakat_rate=0.025):
"""
محاكاة أثر الزكاة على الدخل الفردي للفقراء وتوزيع الثروة عبر عدة سنوات.
"""
results = []
current_wealth = total_wealth_rich
if poor_count <= 0:
return results # تجنب القسمة على صفر
for year in range(1, years + 1):
zakat_amount = current_wealth * zakat_rate
individual_zakat_share = zakat_amount / poor_count
results.append({
"year": year,
"rich_wealth": round(current_wealth, 2),
"zakat_fund": round(zakat_amount, 2),
"individual_share": round(individual_zakat_share, 2)
})
current_wealth = current_wealth * (1 + growth_rate)
return results
# أضف هذا الكود إلى ملف models.py
def simulate_zakat_impact(initial_wealth, poor_count, initial_poor_income, growth_rate=0.05, zakat_rate=0.025, years=5):
"""
نموذج يحاكي أثر الزكاة على الفقر وتحفيز الاقتصاد عبر عدة سنوات.
يعتمد على معدل نمو سنوي ونسبة زكاة ثابتة[cite: 1].
"""
results = []
current_wealth = initial_wealth
# إجمالي الدخل الأولي للفقراء قبل الزكاة
base_poor_income_total = poor_count * initial_poor_income
for year in range(1, years + 1):
# حساب مقدار الزكاة الواجبة[cite: 1]
zakat_due = current_wealth * zakat_rate
# حساب إجمالي دخل الفقراء بعد استلام الزكاة[cite: 1]
total_poor_income_after = base_poor_income_total + zakat_due
# متوسط دخل الفرد الفقير بعد الزكاة[cite: 1]
avg_poor_income = total_poor_income_after / poor_count
results.append({
"year": year,
"wealth": round(current_wealth, 2),
"zakat_due": round(zakat_due, 2),
"total_poor_income": round(total_poor_income_after, 2),
"avg_poor_income": round(avg_poor_income, 2)
})
# تطبيق معدل النمو الاقتصادي للسنة القادمة على ثروة الأغنياء ودخل الفقراء الأساسي[cite: 1]
current_wealth *= (1 + growth_rate)
base_poor_income_total *= (1 + growth_rate)
return results
def compare_financing_systems(P1, P2, revenue, cost, phi):
"""
مقارنة بين نظام سعر الفائدة ونظام المشاركة (PLS)[cite: 1].
"""
# نظام سعر الفائدة: إجمالي الربح = مبلغ السداد - مبلغ القرض[cite: 1]
interest_profit = P2 - P1
# نظام المشاركة (PPP): دخل الفترة = نسبة المشاركة * (إجمالي الإيرادات - إجمالي التكاليف)[cite: 1]
pls_profit = phi * (revenue - cost)
return {
"interest_profit": round(interest_profit, 2),
"pls_profit": round(pls_profit, 2)
}