#!/usr/bin/env python from __future__ import print_function import random from clasificador.herramientas import freeling, persistencia tweets = persistencia.cargar_tweets(cargar_features=False, agregar_sexuales=True) for tweet in tweets: if tweet.es_humor: oraciones = freeling.Freeling.procesar_texto(tweet.texto) for oracion in oraciones: for token in oracion: if token.tag.startswith('V'): print(token.token, token.tag, token.lemma, token.probabilidad) if random.random() < 0.01: break
features = [chiste.texto for chiste in chistes] clases = [chiste.es_humor for chiste in chistes] X_train, X_test, y_train, y_test = train_test_split(features, clases, test_size=0.0) clasificador = Pipeline([ ('vect', TfidfVectorizer( stop_words=get_stop_words(), token_pattern=r'\b[a-z0-9_\-\.]+[a-z][a-z0-9_\-\.]+\b', )), ('clf', MultinomialNB(alpha=0.01)), ]) clasificador.fit(X_train, y_train) # cross_validation_y_reportar(clasificador, features, clases, 5) # entrenar_y_evaluar(clasificador, X_train, X_test, y_train, y_test) tweets = cargar_tweets(cargar_features=False) tweets_humor = [chiste for chiste in tweets if chiste.es_humor] for tweet in tweets_humor: print(tweet.texto) result = clasificador.predict([tweet.texto]) print("El resultado es " + result[0]) sys.stdin.readline()
parser.add_argument('-N', '--subconjunto-no-humor', type=str, default=None, choices=["Noticias", "Curiosidades", "Reflexiones"], help="selecciona solamente el subconjunto pasado como parámetro de los negativos") parser.add_argument('-t', '--threads', type=int, help="establece la cantidad de threads a usar al recalcular las features", default=1) parser.add_argument('-o', '--tweets-parecidos-distinto-humor', action='store_true', default=False, help="busca y quita los pares de tweets que son parecidos pero uno positivo y el otro negativo") args = parser.parse_args() if args.explicar_features: features_obj = Features(args.threads) for feature in sorted(list(features_obj.features.values()), key=lambda x: x.nombre): print(feature.nombre + ":") print(feature.descripcion) else: corpus = cargar_tweets(args.limite, args.incluir_chistes_sexuales) if args.solo_subcorpus_humor: corpus = [tweet for tweet in corpus if tweet.es_chiste] if not args.clasificador.startswith("LB"): for tweet in corpus: tweet.preprocesar() if args.recalcular_features: features_obj = Features(args.threads) features_obj.calcular_features(corpus) guardar_features(corpus) elif args.recalcular_feature: features_obj = Features(args.threads) features_obj.calcular_feature(corpus, args.recalcular_feature.decode('utf-8'))
if __name__ == "__main__": chistes = cargar_chistes_pagina() features = [chiste.texto for chiste in chistes] clases = [chiste.es_humor for chiste in chistes] X_train, X_test, y_train, y_test = train_test_split(features, clases, test_size=0.0) clasificador = Pipeline([ ('vect', TfidfVectorizer( stop_words=get_stop_words(), token_pattern=r'\b[a-z0-9_\-\.]+[a-z][a-z0-9_\-\.]+\b', )), ('clf', MultinomialNB(alpha=0.01)), ]) clasificador.fit(X_train, y_train) # cross_validation_y_reportar(clasificador, features, clases, 5) # entrenar_y_evaluar(clasificador, X_train, X_test, y_train, y_test) tweets = cargar_tweets(cargar_features=False) tweets_humor = [chiste for chiste in tweets if chiste.es_humor] for tweet in tweets_humor: print(tweet.texto) result = clasificador.predict([tweet.texto]) print("El resultado es " + result[0]) sys.stdin.readline()
'--tweets-parecidos-distinto-humor', action='store_true', default=False, help= "busca y quita los pares de tweets que son parecidos pero uno positivo y el otro negativo" ) args = parser.parse_args() if args.explicar_features: features_obj = Features(args.threads) for feature in sorted(list(features_obj.features.values()), key=lambda x: x.nombre): print(feature.nombre + ":") print(feature.descripcion) else: corpus = cargar_tweets(args.limite, args.incluir_chistes_sexuales) if args.solo_subcorpus_humor: corpus = [tweet for tweet in corpus if tweet.es_chiste] if not args.clasificador.startswith("LB"): for tweet in corpus: tweet.preprocesar() if args.recalcular_features: features_obj = Features(args.threads) features_obj.calcular_features(corpus) guardar_features(corpus) elif args.recalcular_feature: features_obj = Features(args.threads) features_obj.calcular_feature(