import pickle import os import re fileobj=open("/home/user/app/embmmn7.obj","rb") corpus_embeddings,corpus=pickle.load(fileobj) fileobj.close() from sentence_transformers import SentenceTransformer, util import torch embedder = SentenceTransformer("ramdane/jurimodel") def showrs(queries,number,id=0): if(id==-1): query_embedding = embedder.encode(queries, convert_to_tensor=True) hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=10) hits = hits[0] #Get the hits for the first query if(hits[number]['score']>0.4): return corpus[hits[number]['corpus_id'] ] else: return "لم نتمكن من ايجاد النتيجة اما لعدم وجود الاجتهاد او لعدم كتابة جملة بحث مناسبة " else: chambres=[["العقارية", "الغرفة العقارية"," العقارية"],["المدنية","الغرفة المدنية ","غرفة المدنية "],["الاجتماعية","الغرفة الاجتماعية","الإجتماعية" ], ["الجنح","الجنح","جنح ومخالفت" ], ["الجنائية","جنائية","الجنائية"],["شؤون الاسرة","شؤون الأسرة","الاحوال الشخصية","المواريث","الأحوال الشخصية"],["التجارية ","التجارية ","التجارية","تجارية","البحرية"],["محكمة التنازع","غرفة ادارية","مجلس الدولة","الغرفة الادارية","مجلس الدولة"]] phrases_to_search = chambres[id] corpusf = [] corpus_embeddingsf = [] for i, text in enumerate(corpus): found = any(phrase in text for phrase in phrases_to_search) if found: corpusf.append(text) corpus_embeddingsf.append(corpus_embeddings[i]) query_embedding = embedder.encode(queries, convert_to_tensor=True) hits = util.semantic_search(query_embedding, corpus_embeddingsf, top_k=10) hits = hits[0] return corpusf[hits[number]['corpus_id'] ] import gradio as gr # Define a dictionary to map text labels to numbers room_options = { "الكل": -1, "الغرفة العقارية": 0, "الغرفة المدنية": 1, "الغرفة الاجتماعية": 2, "الغرفة الجنح والمخالفات": 3, "الغرفة الحنائية": 4, "الغرفة شؤون الاسرة والمواريث": 5, "الغرفة التجارية": 6, } def has_number(text, target_number): # Updated pattern to handle the case where the number is in the middle of the text pattern = r'(?:القرار رقم:|قرار رقم|رقم القرار)\s*(\d+)' match = re.search(pattern, text) if match: extracted_number = match.group(1) return extracted_number == target_number return False def find_first_matching_text( target_number): for text in corpus: if has_number(text, target_number): return text return "لم نتمكن من ايجاد القرار" def greet_user(name,numbers,num): # Extract the selected number based on the selected room number =num if(int(num)==-2): return find_first_matching_text(name) else: return showrs(name,int(numbers),int(number)) # Create a list of room options for the dropdown room_choices = list(room_options.keys()) app = gr.Interface( fn=greet_user, inputs=[gr.Textbox(label="ادخل كلمات البحث"),gr.Number(label="الترتيب"),gr.Number(label="اختر الغرفة")], outputs=gr.TextArea(label="Result") ) app.launch()