Upload files to "import_data"

This commit is contained in:
ajokar 2024-09-17 16:45:41 +00:00
parent 18db5b6fbc
commit 26a283cc16
5 changed files with 708 additions and 0 deletions

View File

@ -0,0 +1,171 @@
from decimal import Decimal
import requests
import json
import os
TOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3MTg0NTE3MTUsImp0aSI6InNWaDljNkdlRWdEK0IzM1N2UHNzbXkybkxUK0tWWnBjIiwiaXNzIjoiaHR0cHM6XC9cL2NwLnRhdmFzaS5pciIsImV4cCI6MTcxOTc1MTcxNCwiYXVkIjoiaHR0cHM6XC9cL2NwLnRhdmFzaS5pciIsImRhdGEiOnsiaWQiOjQwLCJmaXJzdF9uYW1lIjoiXHUwNjM5XHUwNjQ1XHUwNjI3XHUwNjMxIiwibGFzdF9uYW1lIjoiXHUwNjJjXHUwNjQ4XHUwNmE5XHUwNjI3XHUwNjMxIiwiZW1haWwiOiJham9rYXI5MUB5YWhvby5jb20iLCJ1c2VybmFtZSI6ImFqb2thciIsInVzZXJfbGV2ZWwiOjF9fQ.frkLaR1HYyfZ8sFhLtiuEZaBPwDPWKSxKDQpql6aOZc'
ACCEPT = "application/json"
HEADERS = {"Authorization": TOKEN, "Accept": ACCEPT}
url = "https://api.tavasi.ir/repo/dataset/multi/add/qasection/ner"
headers = HEADERS
address = os.getcwd()
if 'impoert_data' in address:
address += '/data/qavanin_dataset.txt'
else:
address += '/impoert_data/data/qavanin_dataset.txt'
# باز کردن فایل متنی
with open(address, 'r', encoding='utf-8') as file:
input_text = file.read()
# تبدیل متن به لیستی از خطوط
lines = input_text.strip().split('\n')
key = ''
begin = -1
end = -1
tokenNumber = -1
content = ''
result_token = []
class JSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Decimal):
return float(obj)
return json.JSONEncoder.default(self, obj)
# def createIndex(content, result_token):
# output = {
# "content": content,
# "domain": "پیکره قوانین 480",
# "ref_id": "",
# "ref_url": "",
# "result_token": result_token,
# }
# # print(output)
# # print(json.dumps(output, indent=4, ensure_ascii=False))
# return output
def createIndex(content, result_token):
result_objects = [{
"task":"ner",
"key":"qavanin_ner",
"label":"خروجی تیم همتا",
"values":result_token
} ]
output ={
"content": content,
"domain": "پیکره قوانین 480",
"ref_id": "",
"ref_url": "",
"result_objects": result_objects,
}
# print(output)
# print(json.dumps(output, indent=4, ensure_ascii=False))
return output
def appendResultToken(text, key, begin, tokenNumber, result_token):
end = -1
# if key == 'HALFREFERENCE' :
# key = 'H_REF'
# elif key == 'REFERENCE' :
# key = 'REF'
if key:
# if key == 'org' :
# key = 'ORG'
# elif key == 'loc' :
# key = 'LOC'
# elif key == 'Facility' :
# key = 'fac'
# elif key == 'event' :
# key = 'EVENT'
# elif key == 'pro' :
# key = 'PRO'
# elif key == 'pers' :
# key = 'PER'
end = tokenNumber -1
result_token.append({
"begin": begin,
"end": end,
"result_key": key,
"text" : text
})
begin = -1
end = -1
key = ''
return key, begin, end, result_token
bulk_data = []
bulk_count = 1
count = 0
text = ''
for i, line in enumerate(lines):
print('line: ' + str(i))
count += 1
tokenNumber = tokenNumber + 1
if line.strip() == '' :
key, begin, end, result_token = appendResultToken(text, key, begin, tokenNumber, result_token)
data = createIndex(content, result_token)
tokenNumber = -1
content = ''
result_token = []
bulk_data.append(data)
bulk_count +=1
if bulk_data.__len__() > 100:
print('=' * 30 )
print('count ' + str(count))
payload = json.dumps(bulk_data, cls=JSONEncoder) #Works!
response = requests.request("POST", url, headers=headers, data=payload)
print(response)
bulk_data = []
bulk_count = 1
continue
parts = line.split()
if len(parts) != 2:
continue
content += ' ' + parts[0]
result_key = parts[1]
if result_key.startswith('I-'):
text += ' ' + parts[0]
continue
if result_key == 'O' :
key, begin, end, result_token = appendResultToken(text, key, begin, tokenNumber, result_token)
if result_key.startswith('B-'):
key, begin, end, result_token = appendResultToken(text, key, begin, tokenNumber, result_token)
text = parts[0]
begin = tokenNumber
end = -1
key = result_key.replace('B-', '')
if content != '' :
key, begin, end, result_token = appendResultToken(text, key, begin, tokenNumber, result_token)
data = createIndex(content, result_token)
bulk_data.append(data)
bulk_count +=1
if bulk_data.__len__() > 0:
print(bulk_count)
payload = json.dumps(bulk_data, cls=JSONEncoder) #Works!
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
# نمایش دیکشنری خروجی به صورت JSON
print("***************** end ")

View File

@ -0,0 +1,67 @@
from docx import Document
from bs4 import BeautifulSoup
import re
tableTag=["table","tr", "th", "tc"]
mark1 = r'#\[#'
mark2 = r'#\]#'
hTag1 = r'<'
hTag2 = r'>'
strTable = ''
for tag in tableTag:
if strTable != '':
strTable += '|'
strTable += '('+tag+')'
regTable = r'<(?P<slash>/)*(?P<tag>'+strTable+')(?P<class>[^>]+)*>'
regTableReplace = r'#[#\g<slash>\g<tag>\g<class>#]#'
def removeHtmlNoTableTag(html):
html = re.sub(regTable, regTableReplace, html)
soup = BeautifulSoup(html, "html.parser")
text = soup.get_text("\n", strip=True)
text = re.sub(mark1, hTag1, text)
text = re.sub(mark2, hTag2, text)
return text
def removeHtmlTags(html, exceptionTags=[]):
if len(exceptionTags):
exceptTags = ''
for tag in exceptionTags:
if exceptTags != '':
exceptTags += '|'
exceptTags += '(' + tag + ')'
reg1 = r'<(?P<slash>/)*(?P<tag>' + exceptTags + ')(?P<class>[^>]+)*>'
html = re.sub(reg1, regTableReplace, html)
soup = BeautifulSoup(html, "html.parser")
text = soup.get_text("\n", strip=True)
if len(exceptionTags):
text = re.sub(mark1, hTag1, text)
text = re.sub(mark2, hTag2, text)
return text
def read_docx(file_path):
doc = Document(file_path)
full_text = []
for para in doc.paragraphs:
full_text.append(para.text)
return '\n'.join(full_text)
def write_docx(text, output_path):
doc = Document()
for line in text.split('\n'):
doc.add_paragraph(line)
doc.save(output_path)
input_path = 'qavanin.docx'
output_path = 'output.docx'
html_content = read_docx(input_path)
clean_text = removeHtmlTags(html_content, exceptionTags=[])
write_docx(clean_text, output_path)
print("تگ‌های HTML با موفقیت حذف شدند و نتیجه در فایل جدید ذخیره شد.")

View File

@ -0,0 +1,105 @@
import json
import requests
from decimal import Decimal
TOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3MTg3ODk5OTEsImp0aSI6IlNGaWVOcWIxeEFzZ252QmtvUkxXWU9UbXR2VTNvT3R6IiwiaXNzIjoiaHR0cHM6XC9cL2NwLnRhdmFzaS5pciIsImV4cCI6MTcyMDA4OTk5MCwiYXVkIjoiaHR0cHM6XC9cL2NwLnRhdmFzaS5pciIsImRhdGEiOnsiaWQiOjEsImZpcnN0X25hbWUiOiJcdTA2MjhcdTA2MzFcdTA2NDZcdTA2MjdcdTA2NDVcdTA2NDcgXHUwNjQ2XHUwNjQ4XHUwNmNjXHUwNjMzIiwibGFzdF9uYW1lIjoiXHUwNjQxXHUwNjQ2XHUwNmNjIiwiZW1haWwiOiJkZXZAZ21haWwuY29tIiwidXNlcm5hbWUiOiJkZXYiLCJ1c2VyX2xldmVsIjoyfX0.7DzFqHLee3ZI7EnZYjy5ChtVWhT3QJvBNUbLUdPssSo'
ACCEPT = "application/json"
HEADERS = {"Authorization": TOKEN, "Accept": ACCEPT}
url = "https://api.tavasi.ir/repo/dataset/multi/add/qasection/keyword"
headers = HEADERS
# # باز کردن فایل متنی
# file_path = 'G:/_majles/ner_law_dataset.txt'
# with open(file_path, 'r', encoding='utf-8') as file:
# input_text = file.read()
# # تبدیل متن به لیستی از خطوط
# lines = input_text.strip().split('\n')
file_address = './new_law_excel.xlsx'
# output_file_address = './output/keywords_law_excel.xlsx'
column_name = "content"
contents = read_from_excel(file_address, column_name)
contents_list = []
for index, section in enumerate(contents):
#ner_values = inference_main(model, section)
contents_list.append(section)
# contents_list = contents_list + section + '\n********************\n'
new_column_name = 'content_keywords'
key = ''
begin = -1
end = -1
tokenNumber = -1
content = ''
result_token = []
class JSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Decimal):
return float(obj)
return json.JSONEncoder.default(self, obj)
# content : main text/content
# results : keywords list
def createIndex(content, extracted_keywords):
result_objects = [{
"task":"keyword",
"key":"lama3-8b",
"label":"لاما3 فارسی شده",
"values":extracted_keywords
} ]
output ={
"content": content,
"domain": "مقررات",
"ref_id": "",
"ref_url": "",
"result_objects": result_objects,
}
# print(output)
# print(json.dumps(output, indent=4, ensure_ascii=False))
return output
bulk_data = []
bulk_count = 1
count = 0
for mentry in contents_list:
count += 1
tokenNumber = tokenNumber + 1
extracted_keywords = []
data=createIndex(mentry, extracted_keywords)
bulk_data.append(data)
bulk_count +=1
if bulk_data.__len__() > 10:
print('=' * 10 )
print('count' + str(count))
payload = json.dumps(bulk_data, cls=JSONEncoder) #Works!
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
bulk_data = []
bulk_count = 1
if bulk_data.__len__() > 0:
print(bulk_count)
payload = json.dumps(bulk_data, cls=JSONEncoder) #Works!
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
# نمایش دیکشنری خروجی به صورت JSON
print("***************** end ")

View File

@ -0,0 +1,97 @@
import json
import requests
from config_base import *
import requests
from bs4 import BeautifulSoup
from html import escape
import json
from decimal import Decimal
import datetime
from config_base import *
from general_functions import *
from funcs import write_to_json
# موقت
# این برنامه موقتا بخاطر اصلاح داده اجرا شد، اگر از ابتدا انتقال داده انجام شود این بخش خودکار انجام خواهد شد
cursor, cnxn = create_cursor()
# Does quasi the same things as json.loads from here: https://pypi.org/project/dynamodb-json/
class JSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Decimal):
return float(obj)
return json.JSONEncoder.default(self, obj)
#نکته : برای مقررات هیچ موردی نبود که جدولی باشد
query = '''SELECT [ID],[CODE],[CAPTION]
FROM [Qavanin].[dbo].[lwTopic]
'''
cursor.execute(query)
headers = HEADERS
t1= datetime.datetime.now()
print("start time: " + str(t1))
i = 0
topic_list = []
while 1:
i += 1
row = cursor.fetchone()
if not row:
break
topic_id = int(row.ID)
caption = str(row.CAPTION)
topic_code = str(row.CODE).strip()
caption = normalize_content(caption)
if topic_id == 96:
topic_id = 68,
topic_code = "426"
caption = "آمار و سرشماری"
if topic_id == 61:
topic_id = 60,
topic_code = "418",
caption = "بورس اوراق بهادار و اسناد خزانه "
if topic_id == 126:
topic_id = 149,
topic_code = "104/51",
caption = "وظایف وزارت جهاد کشاورزی"
if topic_id == 122:
topic_id = 150,
topic_code = "104/52",
caption = "وظایف صنایع و معادن"
if topic_id == 41:
topic_id= 185,
topic_code= "304/1",
caption= "اتومبیل های دولتی"
topic_list.append({
"topic_id" : topic_id,
"topic_code": topic_code,
"caption" : caption,
})
cursor.close()
cnxn.close()
address = "./impoert_data/data/section_topic.json"
result = write_to_json(topic_list, address)
if result:
print("all done correctly!")
else:
print("operation failed!")
print()
t2= datetime.datetime.now()
print("update rows count: " + str(i))
print("finished time: " + str(t2))
print("process time: " + str(t2-t1))
print('*********** end success ***********')

View File

@ -0,0 +1,268 @@
بانک B-ORG
مرکزی I-ORG
جمهوری I-ORG
اسلامی I-ORG
ایران I-ORG
موظف O
است O
بازپرداخت O
تعهدات O
ارزی O
را O
کسر O
نماید. O
ماده B-HALFREFERENCE
3 I-HALFREFERENCE
به O
سازمان B-ORG
مدیریت I-ORG
و I-ORG
برنامه I-ORG
ریزی I-ORG
کشور I-ORG
اجازه O
داده O
می O
شود O
به O
منظور O
تامین O
هزینه O
های O
انجام O
داوری O
توسط O
شورای O
عالی O
فنی O
از O
متقاضیان O
داوری O
در O
مورد O
طرحهای O
عمرانی O
هزینه O
های O
مربوط O
را O
بر O
اساس O
تعرفه O
ای O
که O
به O
تصویب O
هیات O
وزیران O
می O
رسد O
اخذ O
و O
به O
حساب O
درآمد O
عمومی O
واریز O
نماید. O
ماده B-HALFREFERENCE
5 I-HALFREFERENCE
عملیات O
تامین O
منابع O
ارزی O
و O
متن O
و O
شرایط O
قراردادهای O
مالی O
از O
جمله O
زمان O
بندی O
بازپرداخت O
کلیه O
قراردادهای O
دستگاههای O
اجرایی O
باید O
با O
هماهنگی O
بانک O
مرکزی O
جمهوری O
اسلامی O
ایران O
صورت O
گیرد. O
ماده B-HALFREFERENCE
6 I-HALFREFERENCE
در O
اجرای O
قانون B-REFERENCE
تشویق I-REFERENCE
و I-REFERENCE
حمایت I-REFERENCE
سرمایه I-REFERENCE
گذاری I-REFERENCE
خارجی I-REFERENCE
مصوب O
19 B-DATE2
/12 I-DATE2
/1380 I-DATE2
به O
منظور O
جلب O
سرمایه O
گذاری O
خارجی O
به O
دولت O
اجازه O
داده O
می O
شود O
در O
چارچوب O
قانون B-REFERENCE
تشویق I-REFERENCE
و I-REFERENCE
حمایت I-REFERENCE
سرمایه I-REFERENCE
گذاری I-REFERENCE
خارجی I-REFERENCE
مصوب O
19 B-DATE2
/12 I-DATE2
/1380: I-DATE2
اقدام O
نماید O
ماده B-HALFREFERENCE
8 I-HALFREFERENCE
دولت O
مکلف O
است O
در O
خصوص O
بهینه O
سازی O
مصرف O
انرژی O
به O
کشاورزانی O
که O
برای O
برقی O
کردن O
موتور O
پمپ O
چاههای O
کشاورزی O
خود O
اقدام O
می O
نمایند O
از O
طریق O
بانک O
کشاورزی O
تسهیلات O
لازم O
را O
در O
اختیارشان O
قرار O
دهد. O
ماده B-HALFREFERENCE
13 I-HALFREFERENCE
در O
اجرای O
بند O
(ح) O
ماده B-HALFREFERENCE
(33) I-HALFREFERENCE
قانون B-REFERENCE
برنامه I-REFERENCE
چهارم I-REFERENCE
توسعه I-REFERENCE
اقتصادی I-REFERENCE
اجتماعی I-REFERENCE
و I-REFERENCE
فرهنگی I-REFERENCE
جمهوری I-REFERENCE
اسلامی I-REFERENCE
ایران I-REFERENCE
به O
دولت O
اجازه O
داده O
می O
شود O
به O
پیشنهاد O
وزیر O
صنعت O
معدن O
و O
تجارت O
به O
شرح O
زیر O
اقدام O
نماید: O
1 O
از O
محصولات O
خارجی O
که O
با O
قیمت O
غیرمتعارف O
و O
یا O
تسهیلات O
غیرعادی O
به O
کشور O
وارد O
می O
شوند O
مابه O
التفاوت O
اخذ O
نماید. O
ماده B-HALFREFERENCE
16 I-HALFREFERENCE
در O
ماده B-HALFREFERENCE
(92) I-HALFREFERENCE
قانون B-REFERENCE
تنظیم I-REFERENCE
بخشی I-REFERENCE
از I-REFERENCE
مقررات I-REFERENCE
مالی I-REFERENCE
دولت I-REFERENCE
مصوب O
27 B-DATE2
/11 I-DATE2
/1380 I-DATE2
عبارت O
«درآمد O
عمومی» O
به O
عبارت O
«درآمد O
اختصاصی» O
اصلاح O
می O
گردد. O