def annotate(): sys.path.append(os.path.dirname(__file__)) chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' insta_path = 'http://www.instagram.com/' ### Ouvre le client SQL. ### sqlClient = SqlClient() sqlClient.openCursor() ### Récupère les noms d'utilisateurs à annoter. ### users = sqlClient.getUsernameUrls(labeled=False) print('Fetched %s users.' % str(len(users))) sqlClient.closeCursor() for index, user in enumerate(users): ### Ouvre un nouvel onglet, sur la page Instagram de l'utilisateur à annoter. ### webbrowser.get(chrome_path).open(user) label = -1 username = user.split(insta_path)[1] ### On recommence tant que l'utilisateur n'a pas été annoté par 0 ou par 1. -2 correspond à un utilisateur non trouvé. ### while label not in ACCEPTED_VALUES: label = input('%s. %s : ' % (str(index), user)) ### Si on a fait une erreur et que l'on veur revenir en arrière. ### if label == 'previous': if index > 0: ### Ouvre de nouveau la page précédente. ### webbrowser.get(chrome_path).open(users[index - 1]) labelprevious = -1 while labelprevious not in ACCEPTED_VALUES: labelprevious = input('%s. %s : ' % (str(index - 1), users[index - 1])) ### Set le label en base. ### sqlClient.openCursor() sqlClient.setLabel(users[index - 1].split(insta_path)[1], labelprevious) sqlClient.closeCursor() else: print('Cannot go previous first user.') ### Réouvre la page courante. ### webbrowser.get(chrome_path).open(user) ### Set le label en base. ### sqlClient.openCursor() sqlClient.setLabel(username, label) sqlClient.closeCursor() sqlClient.openCursor() testRatio = sqlClient.getTestRatio() print(testRatio) if testRatio < 0.25: sqlClient.setTest(username, True) sqlClient.closeCursor()
def mig_1_rollback(self): """ Rollback de la migration n°1. Permet de séparer les utilisateurs annotés en jeu d'entraînement et de test. """ ### Définition du client SQL. ### sqlClient = SqlClient() ### Récupération des utilisateurs annotés. sqlClient.openCursor() usernames = sqlClient.getUserNames(limit=0) sqlClient.closeCursor ### Reset des valeurs de la colonne 'test_set'. ### for user in usernames: sqlClient.openCursor() sqlClient.setTest(user['user_name'], False) sqlClient.closeCursor()
def mig_1(self): """ Migration n°1. Permet de séparer les utilisateurs annotés en jeu d'entraînement et de test. """ ### Définition du client SQL. ### sqlClient = SqlClient() ### Récupération des utilisateurs annotés. sqlClient.openCursor() usernames = sqlClient.getUserNames(limit=0) sqlClient.closeCursor random.shuffle(usernames) ### Indexation au jeu d'entraînement ou de test. ### for index, user in enumerate(usernames): isTest = False if index % 4 == 0: isTest = True sqlClient.openCursor() sqlClient.setTest(user['user_name'], isTest) sqlClient.closeCursor()