|
|
@ -3,6 +3,7 @@ import os
|
|
|
|
from typing import List
|
|
|
|
from typing import List
|
|
|
|
import numpy as np
|
|
|
|
import numpy as np
|
|
|
|
import pandas as pd
|
|
|
|
import pandas as pd
|
|
|
|
|
|
|
|
from calculsIA import *
|
|
|
|
|
|
|
|
|
|
|
|
def levenshtein_distance(s1, s2):
|
|
|
|
def levenshtein_distance(s1, s2):
|
|
|
|
if len(s1) < len(s2):
|
|
|
|
if len(s1) < len(s2):
|
|
|
@ -23,6 +24,7 @@ def levenshtein_distance(s1, s2):
|
|
|
|
|
|
|
|
|
|
|
|
return previous_row[-1]
|
|
|
|
return previous_row[-1]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def find_closest_actor_name(input_name, actor_names):
|
|
|
|
def find_closest_actor_name(input_name, actor_names):
|
|
|
|
closest_name = None
|
|
|
|
closest_name = None
|
|
|
|
min_distance = float('inf')
|
|
|
|
min_distance = float('inf')
|
|
|
@ -34,26 +36,28 @@ def find_closest_actor_name(input_name, actor_names):
|
|
|
|
closest_name = actor_name
|
|
|
|
closest_name = actor_name
|
|
|
|
return (closest_name)
|
|
|
|
return (closest_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getUniqueActorNames(filePath):
|
|
|
|
def getUniqueActorNames(filePath):
|
|
|
|
# Lire le fichier TSV
|
|
|
|
# Lire le fichier TSV
|
|
|
|
df = pd.read_csv(filePath, sep='\t')
|
|
|
|
df = pd.read_csv(filePath, sep='\t')
|
|
|
|
actor_names = df['primaryName'].tolist()
|
|
|
|
actor_names = df['primaryName'].tolist()
|
|
|
|
return (actor_names)
|
|
|
|
return (actor_names)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def saveUniqueActorsSorted(inputFilePath, outputFilePath):
|
|
|
|
def saveUniqueActorsSorted(inputFilePath, outputFilePath):
|
|
|
|
# Lire le fichier TSV
|
|
|
|
# Lire le fichier TSV
|
|
|
|
df = pd.read_csv(inputFilePath, sep='\t')
|
|
|
|
df = pd.read_csv(inputFilePath, sep='\t')
|
|
|
|
|
|
|
|
|
|
|
|
# Trier le DataFrame par 'primaryName' en ordre alphabétique
|
|
|
|
# Trier le DataFrame par 'primaryName' en ordre alphabétique
|
|
|
|
df_sorted = df.sort_values(by='primaryName')
|
|
|
|
df_sorted = df.sort_values(by='primaryName')
|
|
|
|
|
|
|
|
|
|
|
|
# Écrire les données triées dans le fichier CSV
|
|
|
|
# Écrire les données triées dans le fichier CSV
|
|
|
|
with open(outputFilePath, mode='w', newline='', encoding='utf-8') as file:
|
|
|
|
with open(outputFilePath, mode='w', newline='', encoding='utf-8') as file:
|
|
|
|
writer = csv.writer(file, delimiter='\t')
|
|
|
|
writer = csv.writer(file, delimiter='\t')
|
|
|
|
|
|
|
|
|
|
|
|
# Écrire l'en-tête
|
|
|
|
# Écrire l'en-tête
|
|
|
|
writer.writerow(['primaryName', 'nconst'])
|
|
|
|
writer.writerow(['primaryName', 'nconst'])
|
|
|
|
|
|
|
|
|
|
|
|
# Écrire chaque ligne du DataFrame trié dans le fichier CSV
|
|
|
|
# Écrire chaque ligne du DataFrame trié dans le fichier CSV
|
|
|
|
for index, row in df_sorted.iterrows():
|
|
|
|
for index, row in df_sorted.iterrows():
|
|
|
|
writer.writerow([row['primaryName'], row['nconst']])
|
|
|
|
writer.writerow([row['primaryName'], row['nconst']])
|
|
|
@ -63,6 +67,7 @@ def ask_user_verification(actor_name):
|
|
|
|
response = input(f"Est-ce que vous vouliez dire {actor_name}? (Oui/Non) ")
|
|
|
|
response = input(f"Est-ce que vous vouliez dire {actor_name}? (Oui/Non) ")
|
|
|
|
return response.lower() in ['oui', 'o', 'yes', 'y']
|
|
|
|
return response.lower() in ['oui', 'o', 'yes', 'y']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def add_actor(actor_names):
|
|
|
|
def add_actor(actor_names):
|
|
|
|
user_input = input("Entrez le nom de l'acteur à ajouter : ")
|
|
|
|
user_input = input("Entrez le nom de l'acteur à ajouter : ")
|
|
|
|
closest_name = find_closest_actor_name(user_input, actor_names)
|
|
|
|
closest_name = find_closest_actor_name(user_input, actor_names)
|
|
|
@ -75,6 +80,7 @@ def add_actor(actor_names):
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
if __name__ == "__main__":
|
|
|
|
mustContinue = True
|
|
|
|
mustContinue = True
|
|
|
|
if not os.path.exists("processedData/uniqueActorNames.tsv"):
|
|
|
|
if not os.path.exists("processedData/uniqueActorNames.tsv"):
|
|
|
@ -89,14 +95,14 @@ if __name__ == "__main__":
|
|
|
|
print("3: Vider la liste")
|
|
|
|
print("3: Vider la liste")
|
|
|
|
print("4: Lancer la prévision")
|
|
|
|
print("4: Lancer la prévision")
|
|
|
|
print("5: Quitter")
|
|
|
|
print("5: Quitter")
|
|
|
|
|
|
|
|
|
|
|
|
choice = input("Faites votre choix : ")
|
|
|
|
choice = input("Faites votre choix : ")
|
|
|
|
|
|
|
|
|
|
|
|
if choice == '1':
|
|
|
|
if choice == '1':
|
|
|
|
result = add_actor(actor_names)
|
|
|
|
result = add_actor(actor_names)
|
|
|
|
if result:
|
|
|
|
if result:
|
|
|
|
selectedActorNames.append(result[0])
|
|
|
|
selectedActorNames.append(result)
|
|
|
|
print(f"{result[0]} a été ajouté à la liste.")
|
|
|
|
print(f"{result} a été ajouté à la liste.")
|
|
|
|
elif choice == '2':
|
|
|
|
elif choice == '2':
|
|
|
|
print("Liste des acteurs sélectionnés :")
|
|
|
|
print("Liste des acteurs sélectionnés :")
|
|
|
|
for actor in selectedActorNames:
|
|
|
|
for actor in selectedActorNames:
|
|
|
@ -105,8 +111,7 @@ if __name__ == "__main__":
|
|
|
|
selectedActorNames.clear()
|
|
|
|
selectedActorNames.clear()
|
|
|
|
print("La liste a été vidée.")
|
|
|
|
print("La liste a été vidée.")
|
|
|
|
elif choice == '4':
|
|
|
|
elif choice == '4':
|
|
|
|
# TODO: Implémenter la comparaison
|
|
|
|
calculPrevision(selectedActorNames)
|
|
|
|
print("Lancement de la prévision... (TODO)")
|
|
|
|
|
|
|
|
elif choice == '5':
|
|
|
|
elif choice == '5':
|
|
|
|
print("Au revoir !")
|
|
|
|
print("Au revoir !")
|
|
|
|
mustContinue = False
|
|
|
|
mustContinue = False
|
|
|
|