results_output_JSON.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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
  5. # %%
  6. import sqlite3
  7. import pandas as pd
  8. import dtale
  9. import unicodedata
  10. from simple_query_test_pandas import ricercaforme
  11. from simple_query_test_pandas import ricercalemmi
  12. from simple_query_test_pandas import ricercaformelemmi
  13. from simple_query_test_pandas import ricercalemmiforme
  14. from simple_query_test_pandas import inizialeraddoppiata
  15. from simple_query_test_pandas import interpreter
  16. from simple_query_test_pandas import counter
  17. from test_occorrenzario_pandas import findbib, findcontexts, findtexts
  18. import json
  19. import os
  20. # Definisco la funzione per convertire il DataFrame in formato JSON
  21. def df_to_json_records(df):
  22. return df.to_dict(orient='records')
  23. # Definisco la funzione per scrivere i risultati in un file JSON
  24. def write_to_json_results(data, filename):
  25. with open(filename, 'w') as f:
  26. json.dump(data, f, indent=4) # aggiungi indentazione di 4 spazi
  27. # Definisco la funzione per scrivere le ricerche in un file JSON
  28. def write_to_json_searches(data, filename):
  29. with open(filename, 'w') as f:
  30. json.dump(data, f, indent=4) # aggiungi indentazione di 4 spazi
  31. # Definisco la funzione per leggere i risultati da un file JSON
  32. def read_from_json(filename):
  33. if not os.path.isfile(filename):
  34. return []
  35. with open(filename, 'r') as f:
  36. content = f.read()
  37. if content:
  38. return json.loads(content)
  39. else:
  40. return []
  41. # Creo una lista vuota per i risultati
  42. all_results = []
  43. # Creo una lista vuota per le ricerche
  44. all_searches = []
  45. # Definisco gli esempi di ricerca da fare
  46. search_entries = [
  47. {"tipo_ricerca": "forme e lemmi", "parola_cercata": "pro*", "path_db": "/Users/federicaspinelli/TEAMOVI/Ricerche/db/first_db", "ricerca_espansa": 1, "iniziali_raddoppiate": 0},
  48. {"tipo_ricerca": "forme", "parola_cercata": "prov*", "path_db": "/Users/federicaspinelli/TEAMOVI/Ricerche/db/first_db", "ricerca_espansa": 1, "iniziali_raddoppiate": 0},
  49. {"tipo_ricerca": "lemmi", "parola_cercata": "prova", "path_db": "/Users/federicaspinelli/TEAMOVI/Ricerche/db/first_db", "ricerca_espansa": 1, "iniziali_raddoppiate": 0}
  50. ]
  51. # Definisco il nome del file per i risultati
  52. filename_results = 'results.json'
  53. # Definisco il nome del file per le ricerche
  54. filename_searches = 'searches.json'
  55. # Eseguo le ricerche
  56. for entry_info in search_entries:
  57. print ("Ricerca di: " + entry_info["parola_cercata"])
  58. # Definisco il tipo di ricerca, la parola cercata e le altre informazioni richieste
  59. tipo_ricerca = entry_info["tipo_ricerca"]
  60. parola_cercata = entry_info["parola_cercata"]
  61. path_db = entry_info["path_db"]
  62. ricerca_espansa = entry_info["ricerca_espansa"]
  63. iniziali_raddoppiate = entry_info["iniziali_raddoppiate"]
  64. search_info = {"tipo_ricerca": tipo_ricerca, "parola_cercata": parola_cercata, "ricerca_espansa": ricerca_espansa, "iniziali_raddoppiate": iniziali_raddoppiate}
  65. # Eseguo la ricerca
  66. if tipo_ricerca == "forme e lemmi":
  67. df = ricercaformelemmi(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate)
  68. elif tipo_ricerca == "forme":
  69. df = ricercaforme(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate)
  70. else:
  71. df = ricercalemmi(interpreter(parola_cercata), path_db, ricerca_espansa, iniziali_raddoppiate)
  72. results = df_to_json_records(df)
  73. # Salvo i risultati nella lista di tutti i risultati
  74. for r in results:
  75. r.update(search_info)
  76. all_results.extend(results)
  77. all_searches.append(search_info)
  78. # Leggo i risultati precedenti dal file JSON
  79. path = "test_data/"
  80. previous_results = read_from_json(os.path.join(path, filename_results))
  81. # Aggiungo i nuovi risultati alla lista dei risultati precedenti
  82. previous_results.extend(all_results)
  83. # Scrivo tutti i risultati della ricerca nel file JSON
  84. if all(isinstance(item, dict) for item in previous_results):
  85. write_to_json_results(previous_results, os.path.join(path, filename_results))
  86. print("Risultati della ricerca salvati nel file JSON "+ filename_results)
  87. else:
  88. print("La lista non è una lista di dizionari e non può essere convertita in JSON")
  89. # Scrivo tutte le ricerche eseguite nel file JSON
  90. if all(isinstance(item, dict) for item in all_searches):
  91. write_to_json_searches(all_searches, os.path.join(path, filename_searches))
  92. print("Ricerche salvate nel file JSON " + filename_searches)
  93. else:
  94. print("La lista non è una lista di dizionari e non può essere convertita in JSON")