tag:blogger.com,1999:blog-7421642881914356314.post804615150992468823..comments2024-03-03T13:59:00.172+01:00Comments on Rescoldos en la trébede: Las matemáticas al servicio de la investigación literariaUnknownnoreply@blogger.comBlogger10125tag:blogger.com,1999:blog-7421642881914356314.post-27480980330872384372011-12-20T18:48:49.187+01:002011-12-20T18:48:49.187+01:00Que su método no era tan original? Lo dudo.Que su método no era tan original? Lo dudo.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-70489391266417791682011-11-28T22:20:33.275+01:002011-11-28T22:20:33.275+01:00Hombre, antes de decir que no se habían dado cuent...Hombre, antes de decir que no se habían dado cuenta hay que leer complejidad de Kolgomorov y métricas universalesReformas en mataróhttp://www.bonesmans.esnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-2314166507728938032011-11-28T22:19:48.031+01:002011-11-28T22:19:48.031+01:00Buen artículo, también hay algoritmos que calculan...Buen artículo, también hay algoritmos que calculan la entropia de los textos que calculan la vericidad del texto.Alquiler de yateshttp://www.ru-charter.com/noreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-15937481942591888122011-11-28T20:52:34.961+01:002011-11-28T20:52:34.961+01:00Hombre, antes de decir que no se habían dado cuent...Hombre, antes de decir que no se habían dado cuenta hay que leer complejidad de Kolgomorov y métricas universales<br />La justificación de la utilización del zip como máquina de turing .... por ejemplo http://cdsweb.cern.ch/record/1397873Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-87109363778764941912011-11-28T17:16:30.946+01:002011-11-28T17:16:30.946+01:00Genial artículo, nunca lo hubiera imaginado.
Valo...Genial artículo, nunca lo hubiera imaginado.<br /><br />Valora en upnews.es: ¿Es posible conocer la autoría de una obra literaria por las palabras y la frecuencia de uso de éstas que contiene? Esta es una pregu...upnews.eshttp://www.upnews.es/investigacion/las-matematicas-al-servicio-de-la-investigacion-literaria/noreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-16301651669004901902011-11-28T16:44:30.420+01:002011-11-28T16:44:30.420+01:00Entra y descubre como ganar dinero por lo que hace...Entra y descubre como ganar dinero por lo que haces en internet.<br />Hay muchos métodos no te arrepentiras y todo sin invertir NADA! 100% efectivo<br />http://adf.ly/3pqsZAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-73431395159591520052011-11-28T15:47:10.698+01:002011-11-28T15:47:10.698+01:00Vaya, en los comentarios no aparecen los tabulador...Vaya, en los comentarios no aparecen los tabuladores, y en python son necesarios. Vuelvo a pegar el código, cambiando los tabuladores por ·<br /><br /><br /># -*- coding: cp1252 -*-<br /># cuenta_palabras.py<br />#<br /># lee un fichero de texto nombre_de_fichero.txt<br /># y genera un fichero de salida con dos listas:<br /># 1) palabras - num.apariciones ordenado por palabras<br /># 2) num.apariciones - palabras ordenado por apariciones<br />#<br /># Pasar como unico argumento el fichero de texto a leer<br /><br />import sys<br />args = sys.argv<br /><br />#nombre de archivo<br />fn = "la_regenta.txt" # valor por defecto<br />if len(args) > 1:<br />·fn = args[1]<br /><br />#abrimos archivo<br />f = open(fn, "rt");<br /><br />#lo leemos sobre una cadena<br />fulltext = f.read();<br /><br />#y lo cerramos<br />f.close()<br /><br />print "leido fichero " + fn + " - longitud = " + str(len(fulltext)) + " bytes."<br /><br />#eliminamos signos de puntuacion<br />punctuation = ".,:;*_-()¡¿?!'«º»[]{}#"+'"'<br />for i in range(len(punctuation)):<br />·fulltext = fulltext.replace(punctuation[i], ' ')<br /><br />#convertimos palabras a minuscula<br />fulltext = fulltext.lower()<br /><br />#lineas crudas<br />lines = fulltext.split("\n")<br /><br />print "numero de lineas (incluyendo vacias): " + str(len(lines))<br /><br />#lista de palabras<br />words = [];<br /><br />#recorremos las lineas<br />for line in lines:<br />·#palabras que hay en la linea<br />·lwords = line.split()<br />·for word in lwords:<br />··#cada palabra, la limpiamos y aniadimos a la lista<br />··word = word.strip(punctuation)<br />··if word:<br />···words.append(word)<br />···· <br />print "numero de palabras: " + str(len(words))<br /><br />#ordenamos las palabras<br />words.sort()<br /><br />#vamos a contar las apariciones de palabras mediante un diccionario<br />#que mapea palabra -> numero de apariciones<br />dict = {}<br />keys = []<br />for word in words:<br />·#si la palabra no esta en el diccionario, la aniadimos con valor 1<br />·if not word in dict:<br />··dict[word] = 1<br />··keys.append(word)<br />·#si esta, incrementamos el valor<br />·else:<br />··dict[word] += 1<br /><br />#diccionario inversio, numero de apariciones -> lista de palabras que aparecen<br />#ese numero de veces<br />dict2 = {}<br />for key in keys:<br />·key2 = dict[key]<br />·if not key2 in dict2:<br />··dict2[key2] = [key]<br />·else:<br />··dict2[key2].append(key)<br /><br />#ordenamos las claves (numero de apariciones) para visualizarlas ordenadas<br />keys2 = []<br />for key2 in dict2:<br />·keys2.append(key2)<br />keys2.sort()<br /><br />fn2 = fn + ".wordcount.txt"<br /><br />f2 = open(fn2, "wt")<br /><br />f2.write("***********************************\n")<br />f2.write("***********************************\n")<br />f2.write("informe sobre "+fn+"\n")<br />f2.write("numero de palabras: " + str(len(words))+"\n")<br />f2.write("numero de palabras unicas: " + str(len(keys))+"\n")<br /><br />f2.write("***********************************\n")<br />f2.write("***********************************\n")<br /><br />for key in keys:<br />·s = "" + key + " : " + str(dict[key]) + '\n'<br />·f2.write(s)<br /><br />f2.write("\n\n\n\n****************\n\n\n\n")<br /><br />for key2 in keys2:<br />·words2 = dict2[key2]<br />·for word in words2:<br />··s2 = "" + str(key2) + " : " + word + "\n"<br />··f2.write(s2)<br />·<br />f2.close()<br /><br />print "numero de palabras distintas: " + str(len(keys))<br /><br />print "file " + fn2 + " written."Malvidnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-67813096761206765892011-11-28T15:44:40.043+01:002011-11-28T15:44:40.043+01:00Ya es casualidad leer hoy este artículo... precisa...Ya es casualidad leer hoy este artículo... precisamente ayer, como pasatiempo escribí un pequeño script python que cuenta las palabras de un fichero de texto. Bajé algunos libros del proyecto Gutenberg en formato texto (como por ejemplo La Regenta, o El Lazarillo) y a contar...<br /><br />Por si a alguien (con un conocimiento mínimo de programación) le interesa, ahí va.<br /><br />-------------8<--------------------------<br /># cuenta_palabras.py<br />#<br /># lee un fichero de texto nombre_de_fichero.txt<br /># y genera un fichero de salida con dos listas:<br /># 1) palabras - num.apariciones ordenado por palabras<br /># 2) num.apariciones - palabras ordenado por apariciones<br />#<br /># Pasar como unico argumento el fichero de texto a leer<br />#<br /># -*- coding: cp1252 -*-<br /><br />import sys<br />args = sys.argv<br /><br />#nombre de archivo<br />fn = "la_regenta.txt" # valor por defecto<br />if len(args) > 1:<br /> fn = args[1]<br /><br />#abrimos archivo<br />f = open(fn, "rt");<br /><br />#lo leemos sobre una cadena<br />fulltext = f.read();<br /><br />#y lo cerramos<br />f.close()<br /><br />print "leido fichero " + fn + " - longitud = " + str(len(fulltext)) + " bytes."<br /><br />#eliminamos signos de puntuacion<br />punctuation = ".,:;*_-()¡¿?!'«º»[]{}#"+'"'<br />for i in range(len(punctuation)):<br /> fulltext = fulltext.replace(punctuation[i], ' ')<br /><br />#convertimos palabras a minuscula<br />fulltext = fulltext.lower()<br /><br />#lineas crudas<br />lines = fulltext.split("\n")<br /><br />print "numero de lineas (incluyendo vacias): " + str(len(lines))<br /><br />#lista de palabras<br />words = [];<br /><br />#recorremos las lineas<br />for line in lines:<br /> #palabras que hay en la linea<br /> lwords = line.split()<br /> for word in lwords:<br /> #cada palabra, la limpiamos y aniadimos a la lista<br /> word = word.strip(punctuation)<br /> if word:<br /> words.append(word)<br /> <br />print "numero de palabras: " + str(len(words))<br /><br />#ordenamos las palabras<br />words.sort()<br /><br />#vamos a contar las apariciones de palabras mediante un diccionario<br />#que mapea palabra -> numero de apariciones<br />dict = {}<br />keys = []<br />for word in words:<br /> #si la palabra no esta en el diccionario, la aniadimos con valor 1<br /> if not word in dict:<br /> dict[word] = 1<br /> keys.append(word)<br /> #si esta, incrementamos el valor<br /> else:<br /> dict[word] += 1<br /><br />#diccionario inversio, numero de apariciones -> lista de palabras que aparecen<br />#ese numero de veces<br />dict2 = {}<br />for key in keys:<br /> key2 = dict[key]<br /> if not key2 in dict2:<br /> dict2[key2] = [key]<br /> else:<br /> dict2[key2].append(key)<br /><br />#ordenamos las claves (numero de apariciones) para visualizarlas ordenadas<br />keys2 = []<br />for key2 in dict2:<br /> keys2.append(key2)<br />keys2.sort()<br /><br />fn2 = fn + ".wordcount.txt"<br /><br />f2 = open(fn2, "wt")<br /><br />f2.write("***********************************\n")<br />f2.write("***********************************\n")<br />f2.write("informe sobre "+fn+"\n")<br />f2.write("numero de palabras: " + str(len(words))+"\n")<br />f2.write("numero de palabras unicas: " + str(len(keys))+"\n")<br /><br />f2.write("***********************************\n")<br />f2.write("***********************************\n")<br /><br />for key in keys:<br /> s = "" + key + " : " + str(dict[key]) + '\n'<br /> f2.write(s)<br /><br />f2.write("\n\n\n\n****************\n\n\n\n")<br /><br />for key2 in keys2:<br /> words2 = dict2[key2]<br /> for word in words2:<br /> s2 = "" + str(key2) + " : " + word + "\n"<br /> f2.write(s2)<br /> <br />f2.close()<br /><br />print "numero de palabras distintas: " + str(len(keys))<br /><br />print "file " + fn2 + " written."<br /><br /><br />Para que el script funMalvidnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-85561099131078907152011-11-28T15:15:32.108+01:002011-11-28T15:15:32.108+01:00Genial artículo. Solo apuntar que la identificació...Genial artículo. Solo apuntar que la identificación de la autoría de obras, tanto literarias como musicales, a partir de frecuencias y otros análisis estadísticos (y algoritmos informacionales, como el de Lempel-Ziv) no es algo que hayan inventado recientemente.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7421642881914356314.post-74960512850759498192011-11-28T11:38:21.057+01:002011-11-28T11:38:21.057+01:00Los números parecen vivir a escondidas (pero muy a...Los números parecen vivir a escondidas (pero muy activos) detrás de la pura apariencia que nuestros defectuosos sentidos nos comunican. El "lenguaje matemático", que es una creación humana, muestra sus logros.<br /><br />El trabajo interesantísimo que aquí se comenta, encuentra (analizando los resultados de WinZip) lo que hay de similar entre lenguas en principio muy diferentes. Así también constatan el estilo que identifica a un autor literario. <br /><br />Es la capacidad del hombre de fugarse desde la entropía (entendida como este universo que no comprendemos, en “desorden”) hacia el orden (el mundo, creado por nosotros mismos, de lo que "comprendemos"). La humana necesidad de certezas.<br /><br />¡Muy interesante!Anonymousnoreply@blogger.com