This commit is contained in:
mdorstkar 2026-05-16 17:59:37 +03:30
parent 6a46f8cd46
commit 49b1d000c6

View File

@ -25,6 +25,7 @@ today = f'{datetime.datetime.now().year}{datetime.datetime.now().month}{datetime
استفاده میکنه و در چهار فایل جداگانه ذخیره میکنه استفاده میکنه و در چهار فایل جداگانه ذخیره میکنه
''' '''
def create_tables(): def create_tables():
# متد ساخت تیبل های اسکیو ال لایت در صورت عدم وجود
cursor.execute("""CREATE TABLE IF NOT EXISTS rules ( cursor.execute("""CREATE TABLE IF NOT EXISTS rules (
id TEXT, id TEXT,
@ -52,6 +53,7 @@ def create_tables():
conn.commit() conn.commit()
# پرامپت های مختلف که هرکدام یکی از (تایتل یا مفاهیم کلیدی یا شخصیت و یا قواعد) رو از متن نهج البلاغه استخراج میکنه
SYSTEM_PROMPT_orginal = """ SYSTEM_PROMPT_orginal = """
تو یک استخراجگر ساختاریافته اطلاعات برای متون فارسی هستی. تو یک استخراجگر ساختاریافته اطلاعات برای متون فارسی هستی.
@ -494,18 +496,15 @@ def find_passed_data_ids(output_metadata_jsonl_path):
return passed_data_ids return passed_data_ids
if __name__ == "__main__": if __name__ == "__main__":
create_tables() # ساخت تیبل های مورد نیاز اسکیو ال لایت در صورت عدم وجود create_tables() # ساخت تیبل های مورد نیاز اسکیو ال لایت در صورت عدم وجود
input_data_path = './nahj_data/all_nahj_CONTEXT.json' # شامل تمامی (خطبه و نامه و حکمت ها) به همراه پاراگراف هایشان input_data_path = './nahj_data/all_nahj_CONTEXT.json' # شامل تمامی (خطبه و نامه و حکمت ها) به همراه پاراگراف هایشان
llm_error_path = './nahj-answer/error-in-getting-metadata-Final.txt' llm_error_path = './nahj-answer/error-in-getting-metadata-Final.txt'
previous_peroid_errors_path = "./nahj_data/error-ids-Final.txt" previous_peroid_errors_path = "./nahj_data/error-ids-Final.txt"
current_peroid_errors_path = "./nahj_data/error-ids3-Final.txt" current_peroid_errors_path = "./nahj_data/error-ids3-Final.txt"
output_metadata_jsonl_path = f'./nahj_data/nahj-metadata-jsonline.json' output_metadata_jsonl_path = f'./nahj_data/nahj-metadata-jsonline.json'
o=0
file_path = './nahj_data/nahj-metadata-jsonline.json' file_path = './nahj_data/nahj-metadata-jsonline.json'
# for path in outs:
# 1. حذف فایل اگر وجود داشته باشد # 1. حذف فایل اگر وجود داشته باشد
if os.path.exists(file_path): if os.path.exists(file_path):
os.remove(file_path) os.remove(file_path)
@ -517,8 +516,7 @@ if __name__ == "__main__":
output_metadata_json_path = f'./nahj_data/nahj-metadata-TEST.json' output_metadata_json_path = f'./nahj_data/nahj-metadata-TEST.json'
with open(input_data_path, 'r', encoding='utf-8') as file: with open(input_data_path, 'r', encoding='utf-8') as file:
data = json.load(file) data = json.load(file)
SYSTEM_PROMPT = prompts[o]
o+=1
passed_data_ids = [] passed_data_ids = []
passed_data_ids = find_passed_data_ids(output_metadata_jsonl_path) passed_data_ids = find_passed_data_ids(output_metadata_jsonl_path)
@ -563,7 +561,7 @@ if __name__ == "__main__":
print(f'id: {id} - record: {index}/{len(data)} - period: {period}') print(f'id: {id} - record: {index}/{len(data)} - period: {period}')
for path in outs : for path in outs :
# این حلقه برای اجرای هر چهار پرامپته که هرکدام یکی از (تایتل ، مفاهیم کلیدی ، شخصیت ها و قواعد ) را استخراج میکنه
if err == True : if err == True :
continue continue
elif path == "title": elif path == "title":
@ -630,7 +628,7 @@ if __name__ == "__main__":
# entery['paragraph_metadata'] = llm_answer_data # entery['paragraph_metadata'] = llm_answer_data
# در این قسمت متادیتای پارتها استخراج میشود و در تیبل های اسکیو ال لایت ذخیره میشود
context_id = id context_id = id
title = entery['title'] title = entery['title']
large_title = entery['large_title'] large_title = entery['large_title']