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))
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)
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)
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)