Exemple #1
0
    def run(self):
        consultas = ConsultasCassandra()
        DG = None
        with self.input().open("r") as fin:
            DG = nx.read_gexf(fin)

        DG = self.remove_edges(DG)
        page_rank = nx.pagerank(DG)
        page_rank = [(key, page_rank[key]) for key in page_rank]
        page_rank = sorted(page_rank, key=lambda x: x[1], reverse=True)[:20]

        for user_id, value in page_rank:
            print consultas.getScreenNameByUserIDCassandra(long(user_id))
Exemple #2
0
    def run(self):
        consultasNeo4j = ConsultasNeo4j()
        consultasCassandra = ConsultasCassandra()

        # si no es un identificador, se intenta conseguir desde cassandra
        identificador = 0
        try:
            identificador = long(self.usuario)
        except Exception, e:
            if self.usuario[0] == "@":
                self.usuario = self.usuario[1:]
            identificador = consultasCassandra.getUserIDByScreenNameCassandra(
                self.usuario)
Exemple #3
0
    def run(self):
        consultas = ConsultasCassandra()
        consultasNeo = ConsultasNeo4j()

        user_id = consultas.getUserIDByScreenNameCassandra(self.usuario)
        seguidores_ini = consultasNeo.getListaIDsSeguidoresByUserID(user_id)
        DG = nx.DiGraph()

        #DG.add_edges_from([(seguidor_ini, user_id) for seguidor_ini in seguidores_ini])
        for seguidor_ini in seguidores_ini:
            siguiendo_seguidor = consultasNeo.getListaIDsSiguiendoByUserID(
                seguidor_ini)
            DG.add_edges_from([(seguidor_ini, siguiendo)
                               for siguiendo in siguiendo_seguidor])

        with self.output().open("w") as fout:
            nx.write_gexf(DG, fout)
Exemple #4
0
	def run(self):
		sentimentModel = None
		for input in self.input():
			if "mod_def" in input.path:
				sentimentModel = SentimentalModel(model_location = input.path)

		consultas = ConsultasCassandra()
		tweets = consultas.getStatusTopicsCassandra(self.user, limit=10000)
		tweets_in = []

		re_tuser = re.compile(r'@*%s'%self.user)

		for tweet in tweets:
			if tweet.lang == self.lang:
				if re_tuser.search(tweet.status.lower()) is not None:
					tweets_in.append(tweet)

		sents = sentimentModel.classifyMentions(tweets_in)


		sentsOut =  {"pos" : sents["1"], "neg" : sents["-1"]}
		with self.output().open("w") as outfile:
			strSentsOut = json.dumps(sentsOut)
			outfile.write(strSentsOut)
    def run(self):
        """
		Ejecucion:

		se puede utilizar getTweetsTextAndLang en ConsultasCassandra,
		por cada tweet comprobar el sentimiento, si es que tiene.
		se pueden almacenar tweets en el idioma dado pero que no contengan sentimiento 
		esto mejora el procesamiento de texto.
		"""
        """
		http://incc-tps.googlecode.com/svn/trunk/TPFinal/bibliografia/Pak%20and%20Paroubek%20(2010).%20Twitter%20as%20a%20Corpus%20for%20Sentiment%20Analysis%20and%20Opinion%20Mining.pdf
		"""
        Happy_emoticons = [":-)", ":)", "=)", ":D",
                           ";)"]  #Emoticonos de positividad
        Sad_emoticons = [":-(", ":(", "=(", ";("]  #Emoticonos negatividad

        #Consultas a la base de datos
        consultas = ConsultasCassandra()
        tweets = consultas.getTweetsTextAndLang(self.lang, limit=50000000)

        #Contadores para cada tag
        contadorPerTag = {"POS": 0, "NEG": 0, "NAN": 0}

        with self.output().open('w') as outfile:
            for tweet in tweets:
                if contadorPerTag[
                        'NEG'] >= self.limite_balanceo and contadorPerTag[
                            'POS'] >= self.limite_balanceo:
                    #si se ha llegado a los dos limites no hace falta que sigamos computando
                    break

                tw_clean = self.clean(tweet)
                if len(tw_clean.split(" ")) <= 1:
                    continue

                flag = False
                if contadorPerTag['POS'] <= self.limite_balanceo:
                    for icon in Happy_emoticons:
                        if icon in tweet[0]:
                            #escritura de la etiqueta
                            outfile.write(u"POS_%d\n" % contadorPerTag['POS'])
                            #escritura del tweet
                            outfile.write(u"%s\n" % tw_clean)
                            #se aumenta el contador de elementos positivos
                            contadorPerTag['POS'] += 1
                            flag = True
                            break

                if contadorPerTag[
                        'NEG'] <= self.limite_balanceo and flag == False:
                    for icon in Sad_emoticons:
                        if icon in tweet[0]:
                            #escritura de la etiqueta
                            outfile.write(u"NEG_%d\n" % contadorPerTag['NEG'])
                            #escritura del tweet
                            outfile.write(u"%s\n" % tw_clean)
                            #se aumenta el contador de elementos negativos
                            contadorPerTag['NEG'] += 1
                            flag = True
                            break

                if flag == False and contadorPerTag['NAN'] < 1000000:
                    #escritura de la etiqueta
                    outfile.write(u"NAN_%d\n" % contadorPerTag['NAN'])
                    #escritura del tweet
                    outfile.write(u"%s\n" % tw_clean)
                    #se aumenta el contador de elementos negativos
                    contadorPerTag['NAN'] += 1
# -*- coding: utf-8 -*-
from DBbridge.ConsultasCassandra import ConsultasCassandra
from GenerateVectorsFromTweets import GenerateVectorsFromTweets
import time

if __name__ == '__main__':
    consultas = ConsultasCassandra()

    tweets = consultas.getTweetsUsuarioCassandra_statusAndLang(11688082)
    generator = GenerateVectorsFromTweets()
    time_ini = time.time()
    print generator.getVector_topics(tweets, 'ar')
    print "Tiempo carga y generacion: " + str(time.time() - time_ini)

    time_ini = time.time()
    print generator.getVector_topics(tweets, 'ar')
    print "Tiempo generacion: " + str(time.time() - time_ini)