domingo, 8 de octubre de 2017

Buscar una palabra en un libro con Python

Esta entrada forma parte de un grupo de artículos donde trabajamos con caracteres y palabras usando como libro de ejemplo El Quijote.



Puede descargar el archivo: palabra_quijote.py
Puede descargar el archivo: quijote.txt

Puede ver el código funcionando en:

Deseamos buscar palabras o frases dentro de El Quijote primera parte. El usuario nos dice la palabra que quiere buscar y el programa en Python realiza la búsqueda. Es sensible a mayúsculas y minúsculas.

#el usuario dice una palabra y contamos cuantas veces aparece en el Quijote
palabra=input("Diga qué palabra quiere buscar: ")
f=open("quijote.txt")
libro=f.read()
n=libro.count(palabra)
f.close()
print("En la 1ª parte del Quijote la palabra ",palabra," aparece ",n," veces.")

Raspberry Pi 2 trabajando en modo 'línea de comandos' ejecutando Python 3.6 a gran velocidad en relación a su limitada potencia de cálculo.

  • Existe una página que recoge los nombres propios y otros términos que comienzan por mayúscula:
  • En otra página podemos ver la frecuencia con la que aparecen todas las palabras del Quijote:
  • Para hacer esto se debe tokenizar el texto. La tokenización de un texto consiste en el análisis y descomposición de texto en partes más pequeñas. Los párrafos se dividen en frases, las frases se dividen en palabras, la palabras en letras. Se deben eliminar los signos de puntuación y en muchos casos las letras .mayúsculas.
  • Un n-grama es un conjunto de letras que puede interesarnos buscar en un texto para hacer predicciones que nos permitan completar una palabra incompleta. Si n=3 tenemos trigramas que son muy típicos para hacer estos estudios. Por ejemplo, podemos buscar todas las palabras que tengan la tres letras coc como por ejemplo en cocodrilo. Haciendo un estudio estadístico por la frecuencia de aparición podemos hacer predicciones sobre qué palabra puede encajar si solo disponemos de los tres primeros caracteres. La predicción contendrá un importante error que los predictores actuales mejoran usando machine learning.

sábado, 7 de octubre de 2017

Leer el Quijote en Python

Esta entrada forma parte de un grupo de artículos donde trabajamos con caracteres y palabras usando como libro de ejemplo El Quijote.

Puede descargar el archivo: caracteres_quijote.py
Puede descargar el archivo: quijote.txt

Podemos ver el código en el siguiente enlace de repl.it:

Vamos a trabajar sobre un gran archivo de texto puro, con extensión txt. Se trata de la primera parte del Quijote. Hemos creado un código en Python que recorrerá todo el texto letra a letra buscando todos los caracteres y mostrándonos los caracteres no repetidos. Finalmente ordenaremos alfabéticamente esta lista de caracteres únicos.

Captura de pantalla realizada con Scrot en una Raspberry Pi 2 corriendo Raspbian.


#abrimos quijote.txt y buscamos todos los caracteres que contiene
f=open("quijote.txt")
libro=f.read()
texto=""
for letra in libro:
 if not(letra in texto):
  texto+=letra
texto="".join(sorted(texto))
print(texto)
f.close()

Vemos que en el libro de Cervantes no aparece la letra W, ni los dígitos numéricos. La letra ñ se encuentra en minúsculas pero no en mayúsculas. En el orden alfabético aparece junto a los signos de puntuación y letras acentuadas.


Escribir en un archivo con Python

Puede descargar el archivo: escribe.py

Veamos el tratamiento de archivos en Python. Lo primero será abrir el archivo, luego podemos leerlos, escribir en él, y finalmente no nos olvidemos de cerrarlo. Seguidamente se muestran algunas de las instrucciones que permiten trabajar con archivos.

Abrir el archivo

  • Para abrir un archivo:  f = open("fichero.txt")
  • Para abrir un archivo escribiendo desde cero: f = open ("fichero.txt", "w"). En este caso el archivo se reescribirá si ya existe o se creará si no existe.
  • Para añadir al final del archivo (append): f = open ("fichero.txt", "a")

Leer el archivo

  • Para leer el archivo: f.read()
  • Para leer únicamente los 4 primeros caracteres: f.read(4)
  • Para leer la primera línea: f.readline()

Escribir en el archivo

  • Para escribir en el archivo: f.write("Primera línea\nSegunda línea")

Cerrar el archivo

  • Para cerrar el archivo: f.close()


Ejemplo


 #crea un fichero txt con una frase  
 frase="Primera línea\nSegunda línea"  
 f=open("miarchivo.txt","w")  
 f.write(frase)  
 f.close()