def literal1(n): rs = [] print("Literal 1") #Consultando Tweets tweet, fecha = tw.obtenerTweets(n) temp = tweet[:] #Proceso NLP tweet = nl.minusculas(tweet) tweet = nl.eliminarce(tweet) tweet = nl.tokenizar(tweet) tweet = nl.qstopwords(tweet, 1) #Obteniendo Diccionarios dicposi = lc.leerTxt('modelo/dic_posi.txt') dicneg = lc.leerTxt('modelo/dic_neg.txt') print("***************Jaccard*********************") #Jaccard de Negativos negativo = ja.vectores(tweet, dicneg) #Jaccard de Positivos positivo = ja.vectores(tweet, dicposi) #Obteniendo Resultados est1, cl1 = categorizar(positivo, negativo) rs.append(est1) print("\n*************Coseno*******************") #Coseno de Negativos tweetneg = [] tweetneg.append(dicneg) tweetneg = tweetneg + tweet invertit = nl.inverted(tweetneg, dicneg) df = cs.df(invertit) idf = cs.idf(df, len(invertit[0])) wtf = cs.wtf(invertit) tfidf = cs.tfidf(wtf, idf) modulo = cs.modulo(tfidf) longnorneg = cs.longnorm(tfidf, modulo) vectorneg = cs.vectordistance(longnorneg) #Coseno de Positivos tweetpos = [] tweetpos.append(dicposi) tweetpos = tweetpos + tweet invertit = nl.inverted(tweetpos, dicposi) df = cs.df(invertit) idf = cs.idf(df, len(invertit[0])) wtf = cs.wtf(invertit) tfidf = cs.tfidf(wtf, idf) modulo = cs.modulo(tfidf) longnorpos = cs.longnorm(tfidf, modulo) vectorpos = cs.vectordistance(longnorpos) #Obteniendo Resultados, columnas = vectorneg[0,1:] # filas = vectorneg[1:,0] est, cl = categorizar(vectorpos[1:, 0], vectorneg[1:, 0]) rs.append(est) rs.append(cl1) rs.append(cl) rs.append(temp) rs.append(fecha) return rs
def literal3(frase): temp = [] print("literal 3") temp.append(frase) temp = nl.minusculas(temp) temp = nl.eliminarce(temp) try: c1 = TextBlob(frase).translate(from_lang='es', to='en') print(c1.sentiment) return c1.sentiment except: print('corregido error') return ['na', 'na'] ##################################################
def literal2(): print("literal 2") #Lee el DatasetGlobal.csv tt, etiquetado = lc.leercsv('modelo/datasetGlobal.csv') #Proceso NLP tw = tt[:] tt = nl.minusculas(tt[:1000]) tt = nl.eliminarce(tt) tt = nl.tokenizar(tt) tt = nl.qstopwords(tt, 1) tt = nl.stemmer(tt) print('Generando Diccionario') dic = nl.generardic(tt) print('Generando Bolsa de Palabras') bolsa = nl.inverted(tt, dic) print('Maquina de Soporte Vectorial') return mv.maqvec(bolsa, etiquetado[:1000], tw)
def textblob(temp1): temp1 = nl.minusculas(temp1) temp1 = nl.eliminarce(temp1) sentimiento = [] for tweet in temp1: try: c1 = TextBlob(tweet).translate(from_lang='es', to='en') if (c1.sentiment.polarity >= -1 and c1.sentiment.polarity < 0): sentimiento.append(-1) elif (c1.sentiment.polarity == 0): sentimiento.append(0) elif (c1.sentiment.polarity > 0 and c1.sentiment.polarity <= 1): sentimiento.append(1) except Exception as e: print(e) print('corregido error') sentimiento.append(0) #sentimiento.append('na') return sentimiento
def topicmodeling(n): tpm = [] #stopwords n4 = stopwords.words('spanish') n4.append('gt') n4.append('oms') n4.append('así') n4.append('aquí') n4.append('cómo') print("Topic Modeling") #nlp tweet, fecha = tw.obtenerTweets(n) tweet = nl.minusculas(tweet) tweet = nl.eliminarce(tweet) tt = tweet[:] tweet = nl.tokenizar(tweet) tweet = nl.qstopwords(tweet, 1) #Diccionario id2word = corpora.Dictionary(tweet) #Bolsa de palabras corpus = [id2word.doc2bow(text) for text in tweet] #algoritmo lda_model lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=id2word, num_topics=4, random_state=100, update_every=1, chunksize=100, alpha='auto') topics = [] for idx, topic in lda_model.print_topics(num_topics=4, num_words=10): tp = topic.split('+') tp = [w.split('*') for w in tp] topics.append(tp) temp = [] for top in topics: t = [] for j in top: t.append(j[1].replace('"', '').strip()) temp.append(t) tpm.append(temp) #print(temp) #Obteniendo Diccionarios dicposi = lc.leerTxt('modelo/dic_posi.txt') dicneg = lc.leerTxt('modelo/dic_neg.txt') print("***************Jaccard Topics***************") #Jaccard de Negativos negativo = ja.vectores(temp, dicneg) #Jaccard de Positivos positivo = ja.vectores(temp, dicposi) #Obteniendo Resultados est1, cl1 = categorizar(positivo, negativo) #Vector para enviar a al web tpm.append(est1) tpm.append(cl1) #Preparando Visualizacion vis = pyLDAvis.gensim.prepare(lda_model, corpus, id2word) pyLDAvis.save_html(vis, 'templates/LDA_Visualization.html') #Unir tweets en uno solo text = "".join(review for review in tt) #wordcloud wordcloud = WordCloud(max_font_size=50, background_color="white").generate(text) #Guardar Imagen wordcloud.to_file("static/wordc/0.png") return tpm
def literal1(n, fechaInicio, fechaFin): print("Procesos") #Consultando Tweets tweet, fecha = tw.obtenerTweets(n, fechaInicio, fechaFin) #variable q contiene los tweets generales temp = tweet[:] #variable q contiene los tweets generales tempo = temp[:] #Proceso NLP tweet = nl.minusculas(tweet) tweet = nl.eliminarce(tweet) tweet = nl.tokenizar(tweet) tweet = nl.qstopwords(tweet, 1) #Proceso Nube vec_nube_temp = [] for review in tweet: vec_nube_temp += review #Obteniendo Diccionarios dicposi = lc.leerTxt('modelo/dic_posi.txt') dicneg = lc.leerTxt('modelo/dic_neg.txt') #Cantidad Tweets print("Cantidad de tweets: " + str(len(tweet))) print("\n-- Topic Modeling --") #tpm.topicmodeling(tweet) #hilo = Thread(target=tpm.topicmodeling, args=(tweet,)) #hilo.start() #hilo.join() print("\n-- Jaccard --") #Jaccard de Negativos negativo = ja.vectores(tweet, dicneg) #Jaccard de Positivos positivo = ja.vectores(tweet, dicposi) #Obteniendo Resultados rsJaccard = categorizar(positivo, negativo) print("\n-- Coseno --") #Coseno de Negativos vectorneg = cs.coseno(tweet, dicneg) #Coseno de Positivos vectorpos = cs.coseno(tweet, dicposi) #Obteniendo Resultados, columnas = vectorneg[0,1:] # filas = vectorneg[1:,0] rsCoseno = categorizar(vectorpos[1:, 0], vectorneg[1:, 0]) print("\n-- TextBlob --") rsTextBlob = txtbl.textblob(tempo) print("\n-- SVM --") rsSVM = mv.maqvec(tweet) print("\n-- Voting --") rsVoting = vt.voting(rsJaccard, rsCoseno, rsTextBlob, rsSVM) print("-- Envio al servidor --") rs = [] rs.append(fecha) #fecha rs.append(temp) #tweet general rs.append(rsJaccard) #Jaccard rs.append(rsCoseno) #Coseno rs.append(rsTextBlob) #TextBlob rs.append(rsSVM) #SVM rs.append(rsVoting) #Voting rs.append(" ".join(review2 for review2 in vec_nube_temp)) #Datos para la nube return rs
print("Porcentaje de Negativos: ", round(contneg / len(total), 2)) print("Porcentaje de Neutros: ", round(contneutro / len(total), 2)) print("Total de Tweets: ", len(total)) ###########EJECUCION###################3 from controlador import servidor as sv sv.correr() print("Literal 1") tweet = tw.obtenerTweets(5) temp = tweet[:] print(tweet) tweet = nl.minusculas(tweet) tweet = nl.eliminarce(tweet) tweet = nl.tokenizar(tweet) tweet = nl.qstopwords(tweet, 1) tweet = nl.stemmer(tweet) dicposi = lc.leerTxt('modelo/dic_posi.txt') dicneg = lc.leerTxt('modelo/dic_neg.txt') print("***************Jaccard*********************") #print('negativo') negativo = ja.vectores(tweet, dicneg) #print(negativo) #print('positivo') positivo = ja.vectores(tweet, dicposi) #print(positivo) categorizar(positivo, negativo)