#!/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
示例#2
0
    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()
示例#3
0
    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'))
示例#4
0
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()
示例#5
0
#!/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
示例#6
0
        '--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(