results_output_JSON.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # Notebook Jupyter per la produzione semi-automatica dei test
  2. # definire le ricerche da effettuare e il nome del file dove visualizzare i risultati
  3. # %%
  4. # Test code using Jupyter -- produce a JSON of queries and results
  5. # %%
  6. from simple_query_test_pandas import ricercaforme
  7. from simple_query_test_pandas import ricercalemmi
  8. from simple_query_test_pandas import ricercaformelemmi
  9. from simple_query_test_pandas import interpreter
  10. import json
  11. import os
  12. ######
  13. #SETUP
  14. ######
  15. # Definisco la funzione per convertire il DataFrame in formato JSON
  16. def df_to_json_records(df):
  17. return df.to_dict(orient='records')
  18. # Definisco la funzione per scrivere i risultati in un file JSON
  19. def write_to_json(data, filename, mode='w'):
  20. with open(filename, mode) as f:
  21. json.dump(data, f, indent=4) # aggiungi indentazione di 4 spazi
  22. # Definisco la funzione per leggere i risultati da un file JSON
  23. def read_from_json(filename):
  24. if not os.path.isfile(filename):
  25. return []
  26. with open(filename, 'r') as f:
  27. content = f.read()
  28. if content:
  29. return json.loads(content)
  30. else:
  31. return []
  32. # Creo una lista vuota per i risultati
  33. all_results = []
  34. # Creo una lista vuota per le ricerche
  35. all_searches = []
  36. # Definisco gli esempi di ricerca da fare
  37. path_db_0 = "../../db/first_db"
  38. # Path per i file json
  39. path = "test_data/"
  40. # Definisco il nome del file per i risultati
  41. filename_results = 'results.json'
  42. # Definisco il nome del file per le ricerche
  43. filename_searches = 'searches.json'
  44. # %%
  45. # Definisco le ricerche
  46. search_entries = [
  47. {"tipo_ricerca": "formaLemma", "parola_cercata": "pro*", "path_db": path_db_0, "ricerca_espansa": 1, "iniziali_raddoppiate": 0},
  48. {"tipo_ricerca": "forma", "parola_cercata": "prov*", "path_db": path_db_0, "ricerca_espansa": 1, "iniziali_raddoppiate": 0},
  49. {"tipo_ricerca": "lemma", "parola_cercata": "prova", "path_db": path_db_0, "ricerca_espansa": 1, "iniziali_raddoppiate": 0}
  50. ]
  51. # Eseguo le ricerche
  52. for entry_info in search_entries:
  53. print ("Ricerca di: " + entry_info["parola_cercata"])
  54. # Definisco il tipo di ricerca, la parola cercata e le altre informazioni richieste
  55. tipo_ricerca = entry_info["tipo_ricerca"]
  56. parola_cercata = entry_info["parola_cercata"]
  57. path_db = entry_info["path_db"]
  58. ricerca_espansa = entry_info["ricerca_espansa"]
  59. iniziali_raddoppiate = entry_info["iniziali_raddoppiate"]
  60. search_info = {"tipo": tipo_ricerca, "stringa": parola_cercata, "espansa": ricerca_espansa, "raddoppiata": iniziali_raddoppiate}
  61. # Eseguo la ricerca
  62. if tipo_ricerca == "formaLemma":
  63. df = ricercaformelemmi(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate)
  64. elif tipo_ricerca == "forma":
  65. df = ricercaforme(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate)
  66. else:
  67. df = ricercalemmi(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate)
  68. results = df_to_json_records(df)
  69. # Salvo i risultati nella lista di tutti i risultati
  70. all_results.append(results)
  71. all_searches.append(search_info)
  72. # Scrivo tutti i risultati della ricerca nel file JSON
  73. try:
  74. # write_to_json(all_results, os.path.join(path, filename_results), mode='a') # to append instead of overwriting
  75. write_to_json(all_results, os.path.join(path, filename_results))
  76. print("Risultati della ricerca salvati nel file JSON "+ filename_results)
  77. except:
  78. print("La lista di ricerche non è un JSON valido")
  79. # Scrivo tutte le ricerche eseguite nel file JSON
  80. try:
  81. write_to_json(all_searches, os.path.join(path, filename_searches))
  82. print("Ricerche salvate nel file JSON " + filename_searches)
  83. except:
  84. print("La lista di risultati non è un JSON valido")
  85. # %%