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()
Exemple #2
0
    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()
Exemple #3
0
    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()