Rasha-83 commited on
Commit
7aa0993
·
verified ·
1 Parent(s): ae56d23

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -44
app.py CHANGED
@@ -13,11 +13,10 @@ class ContractAnalyzer:
13
 
14
  # الكلمات المفتاحية القانونية
15
  self.legal_keywords = [
16
- "يلتزم", "الزام" , "يتعهد", "يحق", "لا يحق", "شرط جزائي",
17
  "فسخ العقد", "إنهاء", "تعويض", "غرامة", "مدة العقد",
18
  "طرف أول", "طرف ثاني", "قيمة العقد", "التزامات", "سداد",
19
- "بمبلغ إجمالي", "دفعة أولى", "دفعة ثانية", "العربون",
20
- "دفعات", "ينكل ", "ضمان", "مخالفة", "إخلال", "قوة قاهرة"
21
  ]
22
 
23
  # قالب التحليل (Prompt)
@@ -29,13 +28,23 @@ class ContractAnalyzer:
29
  - الأطراف المتعاقدة: {parties}
30
  - موضوع العقد: {subject}
31
 
32
- 2. المخاطر المحتملة:
 
 
 
 
 
 
 
 
 
 
33
  {risks}
34
 
35
- 3. العناصر المفقودة أو غير الواضحة:
36
  {missing_elements}
37
 
38
- 4. توصيات قانونية:
39
  {recommendations}
40
  """
41
 
@@ -60,7 +69,7 @@ class ContractAnalyzer:
60
  info["date"] = text[start_idx:end_idx].strip()
61
 
62
  # البحث عن الأطراف
63
- party_indicators = ["طرف أول", "طرف ثاني", "الطرف الأول", "الطرف الثاني", "الفريق الأول", "الفريق الثاني"]
64
  for indicator in party_indicators:
65
  if indicator in text:
66
  start_idx = text.find(indicator)
@@ -69,37 +78,7 @@ class ContractAnalyzer:
69
  end_idx = text.find(".", start_idx)
70
  if end_idx != -1:
71
  info["parties"].append(text[start_idx:end_idx].strip())
72
-
73
- # البحث عن موضوع العقد
74
- subject_indicators = [
75
- "موضوع العقد", "الغرض من العقد", "يتفق الطرفان على",
76
- "اتفق الطرفان على", "حيث أن", "حيث إن", "تمهيد",
77
- "بشأن", "لغرض", "عقد"
78
- ]
79
-
80
- for indicator in subject_indicators:
81
- if indicator in text:
82
- start_idx = text.find(indicator)
83
- # البحث عن نهاية الجملة
84
- end_idx = text.find(".", start_idx)
85
- if end_idx == -1:
86
- end_idx = text.find("\n", start_idx)
87
- if end_idx != -1:
88
- subject_text = text[start_idx:end_idx].strip()
89
- # تجنب النصوص القصيرة جداً
90
- if len(subject_text) > 10:
91
- info["subject"] = subject_text
92
- break
93
-
94
- # محاولة ثانية للعثور على الموضوع إذا لم يتم العثور عليه
95
- if info["subject"] == "غير محدد":
96
- # البحث في الجمل الأولى من العقد
97
- first_sentences = text.split('.')[:3] # أول ثلاث جمل
98
- for sentence in first_sentences:
99
- if any(word in sentence.lower() for word in ["اتفاق", "عقد", "تعاقد"]):
100
- info["subject"] = sentence.strip()
101
- break
102
-
103
  return info
104
 
105
  def analyze_contract(self, contract_text):
@@ -112,6 +91,8 @@ class ContractAnalyzer:
112
 
113
  results = {
114
  "important_clauses": [],
 
 
115
  "risks": [],
116
  "missing_elements": [],
117
  "recommendations": []
@@ -134,7 +115,12 @@ class ContractAnalyzer:
134
  "keyword": keyword
135
  })
136
 
137
-
 
 
 
 
 
138
  # تحليل المخ��طر
139
  risk_words = ["مخالفة", "خرق", "نزاع", "خلاف", "إخلال", "فسخ"]
140
  if any(word in sentence.lower() for word in risk_words):
@@ -155,7 +141,9 @@ class ContractAnalyzer:
155
  date=contract_info["date"],
156
  parties="\n".join(contract_info["parties"]) or "غير محدد",
157
  subject=contract_info["subject"],
158
-
 
 
159
  risks="\n".join([f"• {risk}" for risk in results["risks"]]) or "لا توجد مخاطر واضحة",
160
  missing_elements="\n".join([f"• {element}" for element in results["missing_elements"]]) or "لا توجد عناصر مفقودة",
161
  recommendations="\n".join([f"• {rec}" for rec in results["recommendations"]]) or "لا توجد توصيات إضافية"
@@ -184,13 +172,15 @@ iface = gr.Interface(
184
  ),
185
  outputs=gr.Textbox(
186
  label="نتائج التحليل",
187
- lines=30,
188
  rtl=True, # إضافة دعم RTL للمخرجات
189
  ),
190
- title="محلل العقود القانونية ",
191
  description="""
192
  قم بإدخال نص العقد القانوني للحصول على تحليل شامل يتضمن:
193
  • المعلومات الأساسية للعقد
 
 
194
  • المخاطر المحتملة
195
  • العناصر المفقودة
196
  • التوصيات القانونية
@@ -199,7 +189,7 @@ iface = gr.Interface(
199
  primary_hue="blue",
200
  secondary_hue="blue",
201
  neutral_hue="blue",
202
-
203
  ),
204
  css="""
205
  .gradio-container {
@@ -226,4 +216,3 @@ iface = gr.Interface(
226
 
227
  # تشغيل الواجهة
228
  iface.launch(share=True, debug=True)
229
-
 
13
 
14
  # الكلمات المفتاحية القانونية
15
  self.legal_keywords = [
16
+ "يلتزم", "يتعهد", "يحق", "لا يحق", "شرط جزائي",
17
  "فسخ العقد", "إنهاء", "تعويض", "غرامة", "مدة العقد",
18
  "طرف أول", "طرف ثاني", "قيمة العقد", "التزامات", "سداد",
19
+ "دفعات", "ضمان", "مخالفة", "إخلال", "قوة قاهرة"
 
20
  ]
21
 
22
  # قالب التحليل (Prompt)
 
28
  - الأطراف المتعاقدة: {parties}
29
  - موضوع العقد: {subject}
30
 
31
+ 2. تحليل البنود الرئيسية:
32
+ {clauses_analysis}
33
+
34
+ 3. الالتزامات:
35
+ أ. التزامات الطرف الأول:
36
+ {party1_obligations}
37
+
38
+ ب. التزامات الطرف الثاني:
39
+ {party2_obligations}
40
+
41
+ 4. المخاطر المحتملة:
42
  {risks}
43
 
44
+ 5. العناصر المفقودة أو غير الواضحة:
45
  {missing_elements}
46
 
47
+ 6. توصيات قانونية:
48
  {recommendations}
49
  """
50
 
 
69
  info["date"] = text[start_idx:end_idx].strip()
70
 
71
  # البحث عن الأطراف
72
+ party_indicators = ["طرف أول", "طرف ثاني", "الطرف الأول", "الطرف الثاني"]
73
  for indicator in party_indicators:
74
  if indicator in text:
75
  start_idx = text.find(indicator)
 
78
  end_idx = text.find(".", start_idx)
79
  if end_idx != -1:
80
  info["parties"].append(text[start_idx:end_idx].strip())
81
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  return info
83
 
84
  def analyze_contract(self, contract_text):
 
91
 
92
  results = {
93
  "important_clauses": [],
94
+ "party1_obligations": [],
95
+ "party2_obligations": [],
96
  "risks": [],
97
  "missing_elements": [],
98
  "recommendations": []
 
115
  "keyword": keyword
116
  })
117
 
118
+ # تحليل الالتزامات
119
+ if "طرف أول" in sentence or "الطرف الأول" in sentence:
120
+ results["party1_obligations"].append(sentence.strip())
121
+ elif "طرف ثاني" in sentence or "الطرف الثاني" in sentence:
122
+ results["party2_obligations"].append(sentence.strip())
123
+
124
  # تحليل المخ��طر
125
  risk_words = ["مخالفة", "خرق", "نزاع", "خلاف", "إخلال", "فسخ"]
126
  if any(word in sentence.lower() for word in risk_words):
 
141
  date=contract_info["date"],
142
  parties="\n".join(contract_info["parties"]) or "غير محدد",
143
  subject=contract_info["subject"],
144
+ clauses_analysis="\n".join([f"• {clause['keyword']}: {clause['text']}" for clause in results["important_clauses"]]),
145
+ party1_obligations="\n".join([f"• {ob}" for ob in results["party1_obligations"]]) or "غير محدد",
146
+ party2_obligations="\n".join([f"• {ob}" for ob in results["party2_obligations"]]) or "غير محدد",
147
  risks="\n".join([f"• {risk}" for risk in results["risks"]]) or "لا توجد مخاطر واضحة",
148
  missing_elements="\n".join([f"• {element}" for element in results["missing_elements"]]) or "لا توجد عناصر مفقودة",
149
  recommendations="\n".join([f"• {rec}" for rec in results["recommendations"]]) or "لا توجد توصيات إضافية"
 
172
  ),
173
  outputs=gr.Textbox(
174
  label="نتائج التحليل",
175
+ lines=20,
176
  rtl=True, # إضافة دعم RTL للمخرجات
177
  ),
178
+ title="محلل العقود القانونية المتقدم",
179
  description="""
180
  قم بإدخال نص العقد القانوني للحصول على تحليل شامل يتضمن:
181
  • المعلومات الأساسية للعقد
182
+ • تحليل البنود الرئيسية
183
+ • التزامات كل طرف
184
  • المخاطر المحتملة
185
  • العناصر المفقودة
186
  • التوصيات القانونية
 
189
  primary_hue="blue",
190
  secondary_hue="blue",
191
  neutral_hue="blue",
192
+ text_direction="rtl", # تعيين اتجاه النص من اليمين إلى اليسار
193
  ),
194
  css="""
195
  .gradio-container {
 
216
 
217
  # تشغيل الواجهة
218
  iface.launch(share=True, debug=True)