all the project copy
This commit is contained in:
205
api/limbo/compareText.py
Normal file
205
api/limbo/compareText.py
Normal file
@@ -0,0 +1,205 @@
|
||||
import requests
|
||||
import re
|
||||
import json
|
||||
|
||||
import traceback
|
||||
import logging
|
||||
import cockie
|
||||
import connection
|
||||
import spacy_match
|
||||
|
||||
import spacy
|
||||
|
||||
nlp = spacy.load('it_core_news_lg')
|
||||
|
||||
def getConn():
|
||||
c = connection.conn()
|
||||
return c
|
||||
|
||||
def closeConnection(connection,cursor):
|
||||
if connection:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
|
||||
file_path = "output.json"
|
||||
|
||||
def extract_text_between_markers(text, start_marker, end_marker):
|
||||
pattern = re.compile(f'{re.escape(start_marker)}(.*?){re.escape(end_marker)}', re.DOTALL)
|
||||
match = pattern.search(text)
|
||||
if match:
|
||||
return match.group(1).strip()
|
||||
return None
|
||||
|
||||
|
||||
|
||||
# Returns all the filters inserted by a user
|
||||
def getObjectAndDescription(area,prodotto):
|
||||
connection = getConn()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgreSQL_select_Query = "select descrizione AS result from ticket_big where competenze ='" + str(area) + "' AND prodotto = '" + prodotto + "' " #+ " OR prodotto ='' "
|
||||
print(postgreSQL_select_Query)
|
||||
cursor.execute(postgreSQL_select_Query)
|
||||
publisher_records = cursor.fetchall()
|
||||
|
||||
closeConnection(connection,cursor)
|
||||
# print(publisher_records)
|
||||
return publisher_records
|
||||
|
||||
|
||||
def getDetail(ticketId):
|
||||
|
||||
try:
|
||||
|
||||
cookies = {
|
||||
'language': 'it',
|
||||
'sid': cockie.id,
|
||||
}
|
||||
|
||||
headers = {
|
||||
'Accept': '*/*',
|
||||
'Accept-Language': 'it-IT,it;q=0.9,la;q=0.8',
|
||||
'Connection': 'keep-alive',
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
# Requests sorts cookies= alphabetically
|
||||
# 'Cookie': 'language=it; sid=89q0fl4j3r54600e2fdbf952t1',
|
||||
'Referer': 'https://tsnew.sanmarcoweb.com/it/ticket',
|
||||
'Sec-Fetch-Dest': 'empty',
|
||||
'Sec-Fetch-Mode': 'cors',
|
||||
'Sec-Fetch-Site': 'same-origin',
|
||||
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'sec-ch-ua': '"Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': '"Linux"',
|
||||
}
|
||||
|
||||
response = requests.get('https://tsnew.sanmarcoweb.com/it/ticket/details/index/id/'+ str(ticketId), cookies=cookies, headers=headers)
|
||||
|
||||
oggetto_start = 'name="oggetto" value="'
|
||||
oggetto_end = '"'
|
||||
start_marker = 'true,required: false">'
|
||||
end_marker = '</textarea>'
|
||||
competenza_start = '<img class="rightIcon" width="16" height="16" src="/img/_core/ticket/competence.png" />'
|
||||
competenza_end = '/option>'
|
||||
competenze_final_start = '" selected="selected">'
|
||||
competenze_final_end = '<'
|
||||
soluzione_start = '[]);}">'
|
||||
soluzione_end = '</textarea>'
|
||||
prodotto_start = 'id="prodotto_'+ str(ticketId)
|
||||
prodotto_end = '/option>'
|
||||
prodotto_final_start = 'selected="selected">'
|
||||
prodotto_final_end = '<'
|
||||
|
||||
content = response.text
|
||||
# print(content)
|
||||
|
||||
oggetto = extract_text_between_markers(content, oggetto_start, oggetto_end)
|
||||
description = extract_text_between_markers(content, start_marker, end_marker)
|
||||
competenze = extract_text_between_markers(content, competenza_start, competenza_end)
|
||||
competenze = extract_text_between_markers(competenze, competenze_final_start, competenze_final_end)
|
||||
soluzione = extract_text_between_markers(content, soluzione_start, soluzione_end)
|
||||
prodotto = extract_text_between_markers(content, prodotto_start, prodotto_end)
|
||||
prodotto = extract_text_between_markers(prodotto, prodotto_final_start, prodotto_final_end)
|
||||
|
||||
print(ticketId+ " --> Cercando --> ", description)
|
||||
# print("Descrizione: ", description)
|
||||
# print("Competenze: ", competenze)
|
||||
# print("Soluzione: ", soluzione)
|
||||
# print("Prodotto: ", prodotto)
|
||||
|
||||
|
||||
# getObjectAndDescription('Assistenza Vinicoli','JExp')
|
||||
# s_match(description)
|
||||
|
||||
|
||||
if not soluzione.replace("\n", ""):
|
||||
return False
|
||||
|
||||
connection = getConn()
|
||||
cursor = connection.cursor()
|
||||
|
||||
postgres_insert_query = """ INSERT INTO ticket_big (id, oggetto,descrizione, competenze, soluzione,prodotto) VALUES (%s,%s,%s,%s,%s,%s)"""
|
||||
record_to_insert = (str(ticketId), oggetto.replace("\n", ""),description.replace("\n", ""), competenze.replace("\n", ""),soluzione.replace("\n", ""),prodotto.replace("\n", ""))
|
||||
cursor.execute(postgres_insert_query, record_to_insert)
|
||||
|
||||
connection.commit()
|
||||
count = cursor.rowcount
|
||||
if count <1:
|
||||
return False
|
||||
print(count, "Record inserted successfully into sort table")
|
||||
closeConnection(connection,cursor)
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logging.error(traceback.format_exc())
|
||||
return False
|
||||
|
||||
|
||||
# for ticket in range(456424,456429):
|
||||
# getDetail(ticket)
|
||||
|
||||
def get_ids_from_json_file(file_path):
|
||||
with open(file_path, 'r') as json_file:
|
||||
data = json.load(json_file)
|
||||
|
||||
ids = [item['id'] for item in data['data']]
|
||||
return ids
|
||||
|
||||
|
||||
|
||||
file_path = 'data.json'
|
||||
ids_list = get_ids_from_json_file("/Users/tommal/Desktop/tickets.json")
|
||||
# print(ids_list)
|
||||
|
||||
|
||||
for ticket in ids_list:
|
||||
getDetail(ticket)
|
||||
|
||||
|
||||
############################################################
|
||||
|
||||
|
||||
def s_match(w_target):
|
||||
# w_target = "JExp non funziona per un problema delle dogane:Esiste una procedura di emergenza per inviare i DAA?"
|
||||
|
||||
# List of w1 to w500
|
||||
# w_list = [
|
||||
# ("VIOLAZIONE REGOLA C070 non riusciamo a fare l'EAD"),
|
||||
# ("L'invio dell'E-ad si blocca per la presenza dell'errore violazione regola C070")
|
||||
# ]
|
||||
|
||||
w_list = getObjectAndDescription('Assistenza Vinicoli','JExp')
|
||||
# print("\n\n")
|
||||
# print(w_list)
|
||||
# print("\n\n")
|
||||
w_list = [item[0] for item in w_list]
|
||||
# w_list = ["tempo bello", "molto", "usciamo fuori"]
|
||||
|
||||
|
||||
# Calculate similarity scores for each w in w_list and create a list of tuples
|
||||
similarity_scores = [(w, nlp(w_target).similarity(nlp(w))) for w in w_list]
|
||||
|
||||
# Sort the list of tuples based on similarity score in descending order
|
||||
sorted_similarity_scores = sorted(similarity_scores, key=lambda x: x[1], reverse=True)
|
||||
|
||||
# Get the best 5 matches from the sorted list
|
||||
best_matches = sorted_similarity_scores[:5]
|
||||
|
||||
# Print the best 5 matches
|
||||
print("\n\n")
|
||||
print("Top 5 matches:")
|
||||
for match, similarity_score in best_matches:
|
||||
print("Match:", match)
|
||||
print("Similarity score:", similarity_score)
|
||||
print("\n")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user