def __init__(self, id_categoria, nombre_categoria, verbose): super(DistanciaCategoria, self).__init__() self.nombre = "DistanciaCategoria: " + nombre_categoria self.descripcion = """ Mide la distancia utilizando Bag Of Words entre la categoria """ + nombre_categoria + """ de chistes.com y textos de no humor como son los encontrados en wikipedia. """ chistes = obtener_chistes_categoria(id_categoria) features = [chiste.texto_chiste for chiste in chistes] clases = [chiste.nombre_clasificacion for chiste in chistes] documentos_wikicorpus = obtener_sample_wikicorpus() nuevas_features = features + documentos_wikicorpus nuevas_clases = clases + ['wiki' for _ in documentos_wikicorpus] self.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)), ]) self.clasificador.fit(nuevas_features, nuevas_clases) self.verbose = verbose
from clasificador.herramientas.utils import get_stop_words 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)
parameters_grid_search = parameters_dt elif args.clasificador == "GNB": clasificador_usado = naive_bayes.GaussianNB() parameters_grid_search = parameters_gnb elif args.clasificador == "kNN": clasificador_usado = neighbors.KNeighborsClassifier() parameters_grid_search = parameters_knn elif args.clasificador == "LinearSVM": clasificador_usado = svm.LinearSVC() elif args.clasificador == "LB1": feature_union = FeatureUnion([ ('vectorizer_bow', Pipeline([ ('tweet_to_text', TweetToText()), ('vectorizer', CountVectorizer( strip_accents='ascii', stop_words=get_stop_words(), token_pattern=r'\b[a-z0-9_\-\.]+[a-z][a-z0-9_\-\.]+\b', )) ])), ('features_tweets', TweetsToFeatures()), ]) clasificador_usado = Pipeline([ ('features', feature_union), ('clf', naive_bayes.MultinomialNB(alpha=0.01)), ]) elif args.clasificador == "LB2": clasificador_usado = Mayoria() elif args.clasificador == "MNB": clasificador_usado = naive_bayes.MultinomialNB() parameters_grid_search = parameters_mnb