# 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
Ejemplo n.º 3
0
    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
Ejemplo n.º 5
0
        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


        
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
# -*- 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)