Modelado y Visualización de tus Datos en STEEMIT, Programando un contador de Palabras por Publicación. STEEMIT al DESNUDO PARTE 1
Hace algunos meses, digamos que estoy obsesionado con la API de STEEMIT y cada ves estoy buscando mas y mas datos interesantes que sacar de ella, como información y para ayudar a los usuarios a analizar ganancias, votos y a que horas les va mejor.
Hoy he despertado con las ganas de compartir un programa que cuenta las Palabras de una Publicación de STEEMIT, mas adelante lo agregare a mi programa que extrae información llamado STEEMIT al DESNUDO.
fuente imagen screenshot de mi maquina con firefox
Como ustedes sabrán hace tiempo termine una Especialización de Programación en Python, estoy pensando en hacer una de Data Mining (esperando financiamiento de Coursera), y bueno estuve aprendiendo sobre Modelado y Visualización de Datos con Python+HTML y JS, esa es la razón por la que hoy les traigo un contador de palabras que gráfica en forma de Nube. Ver imagen de Arriba.
Que vamos a ver hoy?
- Primero voy a enseñarles un Código que si lo ejecutan desde python pedirá una cadena de caracteres o párrafo, y contara todas las palabras en el.
- Luego vamos a mejorar el código y vamos a extraer mi ultima publicación, y cambiaremos el párrafo por la publicación, tranquilos voy a explicar esa parte del código.
- Al final vamos a Agregar algunos métodos para colocar los datos de que vamos extrayendo en formato JS y lo vamos a meter en un Archivo para que lo lea un archivo HTML.
Voy a explicar el Código en Python, y dejare en mi Github todos los archivos necesarios probados que funcionan.
Bueno manos a la obra, Como dijo Jack el Destripador vamos por partes.
CONTADOR DE PALABRAS en PYTHON:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import zlib
import string
import requests
import os, subprocess, re
from bs4 import BeautifulSoup
palabras = raw_input("ESCRIBA UN PARRAFO: ")
subjects = dict()
counts = dict()
def remove_punctuation ( text ):
text = re.sub('[%s]' % re.escape(string.punctuation), ' ', text)
return text
numeros = "0123456789"
lista_numeros= list(numeros)
def remove_numeros( text ):
text = re.sub(r'[0-9]+', '', text)
return text
text = palabras.strip()
text = palabras.lower()
text =remove_punctuation(text)
text = remove_numeros(text)
words = text.split()
lista_palabras = []
for word in words:
if len(word) < 4 : continue
if word in lista_palabras : continue
else:
lista_palabras.append(word)
counts[word] = counts.get(word,0) + 1
print counts
El código es muy sencillo, voy a explicarlo por encima:
Necesitamos todas estas librerías para que funcione: time,zlib, string, requests,os, subprocess, re,bs4
Pueden instalarla por ejemplo asi:
sudo pip install bs4
Declaramos las variables:
palabras = raw_input("ESCRIBA UN PARRAFO: ")
subjects = dict()
counts = dict()
Luego creamos estas 2 funciones la primera para eliminar los signos de puntuación y la segunda para eliminar los números que pueden llegar a entorpecer las palabras:
def remove_punctuation ( text ):
text = re.sub('[%s]' % re.escape(string.punctuation), ' ', text)
return text
numeros = "0123456789"
lista_numeros= list(numeros)
def remove_numeros( text ):
text = re.sub(r'[0-9]+', '', text)
return text
Ahora procedemos a darle formato a el parrafo con algunos metodos para cadenas:
text = palabras.strip()
text = palabras.lower()
text =remove_punctuation(text)
text = remove_numeros(text)
words = text.split()
Primero eliminamos los espacios antes y después del texto, luego modificamos todas las palabras a minúsculas, en la tercera linea usamos nuestro método para eliminar los signos de puntuación y en la cuarta eliminamos los números, al final creamos una lista con todas las palabras del párrafo.
Ahora vamos a crear nuestro diccionario con la cantidad de veces que se repiten las palabras:
lista_palabras = []
for word in words:
if len(word) < 4 : continue
if word in lista_palabras : pass
else:
lista_palabras.append(word)
counts[word] = counts.get(word,0) + 1
print counts
print "TENEMOS este numero de palabras:",len(lista_palabras)
Creamos nuestro bucle for
con las 'words
' que hemos formateado anteriormente, ahora la segunda linea no me gusta mucho pero la agrega al final, esa la podríamos mejorar con una lista de artículos que no deberían ir en la lista o nube de palabras que queremos hacer.
La linea if len(word) < 4 : continue
Esta para tener control de las palabras si la palabra tiene menos de 4 letras la salta y no la agrega al diccionario.
Si es mayor a 4 caracteres la agrego a una lista de palabras para luego decir cuantas palabras tenemos, si ya existe pasa "pass", pero si no existe la agrega a la lista.
Por ultimo Agregamos la palabra al diccionario y cada vez que aparezca le sumamos uno a esa palabra.
Esta es la Salida:
fuente screenshot de mi maquina.
En vista de que es bastante largo dejaremos otra parte donde veremos el HTML, Dios Bendiga a Venezuela Hasta la Próxima.
exceptional & enjoying!
@originalwork thank
Cuantos numeritos :O.
Jajaja, gracias por comentar amigo y faltan mas :D
Babi Babi Babi dudi kokori namatsdioto doooookori madudi jooo
Babi Babi Babi dudi kokori namatsdioto dooo kokori madudi joon
Gracias por comentar :O jajajajaja
Te felicitio por tu creatividad y por tu intención de acercar la programación a los neófitos. Gracias por la explicación, lo hiciste muy didáctico.
Felicidades!!
Ojalá sigas con más posts de este estilo, está genial!!
Dios mediante así sera amigo, ya tengo la parte 2 por aquí programada quizás hoy la suba :D
Saludos, Gracias por tus palabras que me llenan de animo
Esta muy bueno
Gracias mano :D