Conjunto de cambios a1c3fea en modelado_topicos para utils/freeling.py


Ignorar:
Fecha y hora:
20/08/2015 16:17:31 (hace 9 años)
Autor:
rboet <rboet@…>
Branches:
master, preprocesamiento, v1.0
Children:
75c9087
Parents:
5b95488
Mensaje:

se agregó texto original sin acentos y función mejorada para ver los topicos

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • utils/freeling.py

    r5b95488 ra1c3fea  
    2525    return output
    2626
    27 
    28 def clean_words(words_fl):
    29     words_fl = [w.encode('unicode-escape') for w in words_fl]
    30     return [w.replace(u'\xe0'.encode('unicode-escape'),u'a').replace(u'\xe8'.encode('unicode-escape'),u'e').replace(u'\xec'.encode('unicode-escape'),u'i').replace(u'\xf2'.encode('unicode-escape'),u'o').replace(u'\xfa'.encode('unicode-escape'),u'u').replace(u'\xe1'.encode('unicode-escape'),u'a').replace(u'\xe9'.encode('unicode-escape'),u'e').replace(u'\xed'.encode('unicode-escape'),u'i').replace(u'\xf3'.encode('unicode-escape'),u'o').replace(u'\xfa'.encode('unicode-escape'),u'u').replace(u'á',u'a').replace(u'é',u'e').replace(u'í',u'i').replace(u'ó',u'o').replace(u'ú',u'u').replace(u'à',u'a').replace(u'Ú',u'e').replace(u'ì',u'i').replace(u'ò',u'o').replace(u'ù',u'u') for w in words_fl if w not in stopwords.words('spanish') and w not in '*+.,?¿!¡":;-=/$@#“”()[]{}' and not w.isdigit() and len(w) > 3]
     27def clean_words(w):
     28    w = w.encode('unicode-escape')
     29    return w.replace(u'\xe0'.encode('unicode-escape'),u'a').replace(u'\xe8'.encode('unicode-escape'),u'e').replace(u'\xec'.encode('unicode-escape'),u'i').replace(u'\xf2'.encode('unicode-escape'),u'o').replace(u'\xfa'.encode('unicode-escape'),u'u').replace(u'\xe1'.encode('unicode-escape'),u'a').replace(u'\xe9'.encode('unicode-escape'),u'e').replace(u'\xed'.encode('unicode-escape'),u'i').replace(u'\xf3'.encode('unicode-escape'),u'o').replace(u'\xfa'.encode('unicode-escape'),u'u').replace(u'á',u'a').replace(u'é',u'e').replace(u'í',u'i').replace(u'ó',u'o').replace(u'ú',u'u').replace(u'à',u'a').replace(u'Ú',u'e').replace(u'ì',u'i').replace(u'ò',u'o').replace(u'ù',u'u')
    3130
    3231def is_pos(word,pos_list):
     
    4039    if len(indexes) == 0: return word
    4140
    42     #if len(indexes) == 0: raise Exception("LA PALABRA NO SE ENCUENTRA EN EL DOCUMENTO: cosa rara!")
    4341    index = 1
    4442    complete_word = word
     
    7169
    7270
    73 def select_pos(words_fl,pos_list=['V','A','N','R','D','P','C','I','S']):
     71def select_pos(path,words_fl,pos_list=['V','A','N','R','D','P','C','I','S']):
    7472    output_list = []
     73    all_words_list = []
    7574    for item in words_fl.split('\n'):
    7675        try:
    77             if item.split(' ')[0].decode('utf8') not in stopwords.words('spanish') and is_pos(item.split(' ')[2],pos_list):
     76            w = item.split(' ')[0]
     77            cleaned_word = clean_words(w.decode('utf8'))
     78            all_words_list += [cleaned_word]
     79            if w.decode('utf8') not in stopwords.words('spanish') and is_pos(item.split(' ')[2],pos_list) and w not in '*+.,?¿!¡":;-=/$@#“”()[]{}' and not w.isdigit() and len(w) > 3:
    7880                # Selecciona el lema
    7981                #output_list += [item.split(' ')[1]]
    8082                # Selecciona la palabra original
    81                 output_list += [item.split(' ')[0]]
     83                #output_list += [item.split(' ')[0]]
     84                output_list += [cleaned_word]
    8285        except IndexError:
    8386            pass
     87    na_file = open(path,'w','utf8')
     88    na_file.write(' '.join(all_words_list))
     89    na_file.close()
    8490    return output_list
    8591
    86 
    8792def preprocess(corpus_path,do_fl=True):
    88     freeling_cmd = shlex.split('/home/jredondo/Proyectos/Analisis_del_Discurso/src/freeling/bin/analyzer -f /home/jredondo/Proyectos/Analisis_del_Discurso/src/freeling/share/freeling/config/es.cfg',' ')
    8993    freeling_corpus_path = corpus_path + '../freeling/'
     94    no_accent_path = corpus_path + '../noaccent/'
    9095    ret_val = dict()
    9196    corpus_words = []
     
    9499        file_string = open(corpus_path+file,'r','utf8').read()
    95100        if do_fl:
     101            freeling_cmd = shlex.split('/home/jredondo/Proyectos/Analisis_del_Discurso/src/freeling/bin/analyzer -f /home/jredondo/Proyectos/Analisis_del_Discurso/src/freeling/share/freeling/config/es.cfg',' ')
    96102            # Lematización con FREELING
    97103            words_fl = call_freeling(freeling_cmd,file_string)
     
    112118        #'I', interjecciones
    113119        #'S', preposiciones
    114         words_fl = select_pos(words_fl=words_fl,pos_list=['A','R','V','N'])
    115120        ####################################
    116121        ####################################
     122
     123        words_fl = select_pos(no_accent_path+file,words_fl=words_fl,pos_list=['A','R','V','N'])
     124
    117125        # Quitar STOPWORDS y caracteres no deseados
    118126        words_pp = all_complete_words(words_fl)
    119         words_pp = clean_words(words_pp)
    120127        ret_val[file] = words_pp
    121128        corpus_words += words_pp
    122129        i += 1
    123         #print "Pre-procesado el archivo: " + file
    124         #print "####################################"
    125         #print words_pp , '(' + str(i) + ')'
    126         #print "####################################"
    127         #print "####################################"
    128130
    129131    return ret_val,set(corpus_words)
     
    146148    files_to_lower(path_orig,path_dest)
    147149    """
    148     corpus_path = '/home/jredondo/Proyectos/Analisis_del_Discurso/src/topic-explorer/demo-data/corpus_propuestas/'
     150    #corpus_path = '/home/jredondo/Proyectos/Analisis_del_Discurso/src/topic-explorer/demo-data/corpus_propuestas/'
     151    corpus_path = '/home/cenditel/Interpretacion/demo-data/corpus_propuestas/'
    149152    lower_corpus_path = corpus_path + 'lower/'
    150153    pp_corpus_path = corpus_path + 'pp/'
     
    153156    exclude_words = ['descripcion','justificacion','construccion','desarrollo','comunidad','comunal','proyecto','prueblo','desarrollar','mismo','nacional','pueblo','sistema']
    154157    exclude_words = [w.encode('utf8') for w in exclude_words]
    155     #vocab_idf = idf(file_words_pp,corpus_words)
    156     #print sorted(vocab_idf.items(),key=operator.itemgetter(1), reverse=True)
    157158    excluded = open(corpus_path+'excluded.txt','w','utf8')
    158159    added_files = []
     
    171172            continue
    172173             
    173         #coef = float(len(set(words_pp)))/float(len(words_pp))
    174         #print coef, len(words_pp), file
    175         #if (coef <= 0.5) or len(words_pp) <= 150: continue
    176174        if len(words_pp) <= 50: continue
    177175        # Guardar archivo
    178176        file_pp = open(pp_corpus_path+file,'w','utf8')
    179177        added_files.append(words_pp)
    180         for w in words_pp:
    181             #condition = vocab_idf[w]
    182             #if condition >= 2.0 and condition <= 6.1 and not '_' in w:
    183             #if condition >= 2.0 and not '_' in w:
    184        
     178        for w in words_pp:       
    185179            if w not in exclude_words and not '_' in w:
    186 
    187                 #try:
    188                 #    file_pp.write(w.encode('utf8') + ' ')
    189                 #except UnicodeDecodeError:
    190180                file_pp.write(w + ' ')
    191181            else:
    192182                try:
    193                     #excluded.write(w.encode('utf8') + ' ' + str(condition) + ' (' + file + ')\n')
    194183                    excluded.write(w.encode('utf8') + ' (' + file + ')\n')
    195184                except UnicodeDecodeError:
    196                     #excluded.write(w + ' ' + str(condition) + ' (' + file + ')\n')
    197185                    excluded.write(w + ' (' + file + ')\n')
    198186        file_pp.close()
    199187    excluded.close()
    200188   
    201     print "Documentos repetidos: ", repeated_count
    202     print "Palabras en el vocabulario: ", len(corpus_words)
     189
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.