Modelado y Visualización de tus Datos en STEEMIT, Programando un contador de Palabras por Publicación. STEEMIT al DESNUDO PARTE 1

in #spanish7 years ago (edited)

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.

Sort:  

exceptional & enjoying!

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