# Saber la cantidad de libros que posee el corpus. print u'Total de libros en español:',len(codigos_libros.es) # Ahora se cargan los libros y se suprimen sus encabezados. dic_oraciones_es={} total_palabras_es=0 for codigo_libro_es in codigos_libros.es: texto=load_etext(codigo_libro_es) texto=strip_headers(texto) # En cada libro se separan las oraciones y se delimitan por el símbolo |||. oraciones_libro=split_sentences(texto) for oracion_libro in oraciones_libro: palabras=rufino.split_words(oracion_libro) numero_palabras_oracion=len(palabras) total_palabras_es+=numero_palabras_oracion if numero_palabras_oracion not in dic_oraciones_es: dic_oraciones_es[numero_palabras_oracion]=1 else: dic_oraciones_es[numero_palabras_oracion]=dic_oraciones_es[numero_palabras_oracion]+1 print u'Total de oraciones en español:',len(dic_oraciones_es) print u'Total de palabras en español:',total_palabras_es print dic_oraciones_es #hola
PATH="diccionarios/" # SUBDIRECTORIO DONDE SE GUARDARAN LOS DICCIONARIOS # ATENCION, CREAR EL DIRECTORIO diccionarios/ for codigo_ISO in codigos_ISO: print "lengua:",codigo_ISO,rufino.ISO_SPANISH[codigo_ISO] url=rufino.WIKIPEDIA_URLS[codigo_ISO] contador_palabras=0 dic_conteo_bigramas={} contador_articulos=0 for articulo in rufino.get_articles(url): contador_articulos+=1 if contador_articulos%1000==0: print "\t"+codigo_ISO+"{0} articulos procesados, {1} palabras procesadas".format(contador_articulos,contador_palabras) texto=rufino.clean_article(articulo).lower() palabras=rufino.split_words(texto) for i in range(len(palabras)-1): palabra_actual=palabras[i] palabra_siguiente=palabras[i+1] bigrama=palabra_actual+"|||"+palabra_siguiente if bigrama not in dic_conteo_bigramas: dic_conteo_bigramas[bigrama]=1 else: dic_conteo_bigramas[bigrama]+=1 contador_palabras=contador_palabras+len(palabras) if contador_palabras>tamano_corpus: break metadatos={"url":url, "codigo_ISO":codigo_ISO, "palabras_corpus":contador_palabras, "cantidad_articulos":contador_articulos
sys.argv[1]) # funcion int(cadena) convierte la cadena en un numero entero codigos_ISO = sys.argv[2:] for codigo_ISO in codigos_ISO: url = rufino.WIKIPEDIA_URLS[codigo_ISO] total_oraciones = 0 total_palabras_corpus = 0 total_libros_articulos = 0 for articulo in rufino.get_articles(url): dic = {} texto = rufino.clean_article(articulo).lower() oraciones = rufino.split_sentences(texto) for oracion in oraciones: palabras = rufino.split_words(oracion) total_palabras_corpus = total_palabras_corpus + len(palabras) if len(palabras) in dic: dic[len(palabras)] = dic[len(palabras)] + 1 else: dic[len(palabras)] = 1 total_oraciones = total_oraciones + len(oraciones) total_articulos = total_libros_articulos + 1 if total_palabras_corpus > max_palabras_corpus: break print u"Diccionario contador largo de oraciones: ", dic print print u"Total oraciones: ", total_oraciones
import rufino import sys print "uso:" print "python monge_elkan.py <codigo ISO lengua> <umbral> <exponente> <largo max oracion> <oracion a buscar> <max operaciones edicion>" print "ejemplo uso:" print "python monge_elkan.py en 0.8 1 30 the theory was proposed by researchers" codigo_ISO = sys.argv[1] umbral = float(sys.argv[2]) exponente = float(sys.argv[3]) largo_max_oracion = int(sys.argv[4]) oracion_buscar = sys.argv[5:] url = rufino.WIKIPEDIA_URLS[codigo_ISO] for articulo in rufino.get_articles(url): texto = rufino.clean_article(articulo).lower() oraciones = rufino.split_sentences(texto) for oracion in oraciones: lista_palabras_oracion = rufino.split_words(oracion) similitud = rufino.monge_elkan(oracion_buscar, lista_palabras_oracion, rufino.sim_edit_distance, exponente) if similitud > umbral and len( lista_palabras_oracion) <= largo_max_oracion: print texto[:40], similitud, oracion
round(spearmanr(predicciones,gold_standard)[0],6), #4 round(time.time()-marca_de_tiempo,1), #5 strftime("%Y-%m-%d %H:%M:%S", gmtime()), #6 ) print linea_resultados # adiciona la linea de resultados al archivo de resultados y lo cierra archivo_resultados=open(nombre_archivo_resultados,"a") archivo_resultados.write(linea_resultados+"\n") archivo_resultados.close() marca_de_tiempo=time.time() texto=rufino.clean_article(articulo).lower() oraciones=rufino.split_sentences(texto) contador_oraciones+=len(oraciones) for oracion in oraciones: palabras_oracion=rufino.split_words(oracion) if len(palabras_oracion)>=largo_maximo_oracion: continue for palabra_dataset in lista_palabras_vocabulario_dataset: if palabra_dataset.lower() in palabras_oracion: dic_freq_palabras[palabra_dataset]+=1 for palabra1,palabra2 in lista_pares_palabras: if (palabra1.lower() in palabras_oracion) and (palabra2.lower() in palabras_oracion): dic_asoc_palabras[(palabra1,palabra2)]+=1 contador_palabras=contador_palabras+len(palabras_oracion) if contador_palabras>tamano_corpus: break
# -*- coding:utf-8 -*- import rufino import sys import codecs from scipy.stats.stats import pearsonr # parametros de la linea de comandos print "Modo de uso: (Monge-Elkan con Edit distance como medida de similitud lexica)" print u"python me_ed_texsim.py <nombre archivo dataset>" print u"ejemplo: python me_ed_texsim.py MSRvid.txt" nombre_archivo_dataset=sys.argv[1] archivo=codecs.open(nombre_archivo_dataset,"r","utf-8") gold_standard=[] similarities=[] for linea in archivo.readlines(): posicion_primer_tab=linea.find("\t") posicion_segundo_tab=linea.find("\t",posicion_primer_tab+1) oracion1=rufino.split_words(linea[:posicion_primer_tab]) oracion2=rufino.split_words(linea[posicion_primer_tab+1:posicion_segundo_tab]) estandar_de_oro=float(linea[posicion_segundo_tab+1:]) gold_standard.append(estandar_de_oro) similarities.append(rufino.monge_elkan(oracion1,oracion2,rufino.sim_edit_distance,2)) archivo.close() print "Pearson r=",round(pearsonr(similarities,gold_standard)[0],6)