Contador de Palabras

Iniciado por remiotore, Mayo 15, 2018, 11:12:48 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 15, 2018, 11:12:48 AM Ultima modificación: Mayo 15, 2018, 10:39:19 PM por Gabriela
El otro día me encontraba en un concierto "político" al que me invitaron. Estando allí vi que la gente se animaba cada vez que decían la palabra X o la palabra Y, y en cada canción las repetían como 2 o 3 veces. Yo ya llegué a pensar "¡Pero si este grupito está haciendo negocio porque les siguen por decir justo lo que quieren escuchar!".
Decidí entonces descargarme todas sus letras, meterlas en un fichero de texto y empezar a filtrar palabra por palabra sus canciones.

El resultado fue bastante curioso. Aquí tienen el código:
Código: php
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from collections import defaultdict
import urllib, re, operator
try:
from termcolor import colored
except:
print "Instala TERMCOLOR!\n\tpip install termcolor"

d = defaultdict(int)
aa = []
ae = []
ai = []
ao = []
au = []
aa2 = []
ae2 = []
ai2 = []
ao2 = []
au2 = []

LONGITUD = int(raw_input("Caracteres mínimos de la palabra? "))
MIN = int(raw_input("Minimo repeticiones: "))
MAX = int(raw_input("Maximo repeticiones: "))

BANNED = ("a","ante","bajo","cabe","con","contra","de","desde","en","entre","hacia","hasta","para","por","segun","sin","so","sobre","tras","durante","mediante","excepto","salvo","incluso","mas","menos","cerca","lado","alrededor","antes","arreglo","debajo","dentro","detras","encima","cuanto","enfrente","fuera","gracias","lejos")
REPLACEMENT = {"á":"a","é":"e","í":"i","ó":"o","ú":"u","ñ":"nn",".":"",",":"","?":"","¿":"","!":"","¡":"","(":"",")":"","`":"",":":"",";":"","'":""}

with open("", 'r') as file:
for line in file:
for w in line.split():
w = w.lower()
for key, value in REPLACEMENT.items():
w = w.replace(key, value)
if w not in BANNED:
if len(w) >= LONGITUD:
d[w] += 1

o = sorted(d.items(), key=operator.itemgetter(1))

print colored("Listado por Número de Repeticiones","red")


while(MIN <= MAX):
print "###########################"
for i in o:
if( i[1] == MIN ):
fila = "#\t" + i[0] + " " + str(i[1])
print fila + " " * (20 - len(fila)) + "#"
MIN += 1

for i in o:
word = i[0]
if(word[-1] in ("a","e","i","o","u")):
if(word[-1] == "a"):
aa.append(word)
elif(word[-1] == "e"):
ae.append(word)
elif(word[-1] == "i"):
ai.append(word)
elif(word[-1] == "o"):
ao.append(word)
elif(word[-1] == "u"):
au.append(word)
else:
if(word[-2] in ("a","e","i","o","u")):
if(word[-2] == "a"):
aa2.append(word)
elif(word[-2] == "e"):
ae2.append(word)
elif(word[-2] == "i"):
ai2.append(word)
elif(word[-2] == "o"):
ao2.append(word)
elif(word[-2] == "u"):
au2.append(word)


print colored("#" + "A" + "#","green")

print colored("\tPrincipales  con A","red")
for i in sorted(aa):
print i,
print ""
print colored("\tRimadas con  A","red")
for i in sorted(aa2):
print i,
print ""


print colored("#" + "E" + "#","green")

print colored("\tPrincipales  con E","red")
for i in sorted(ae):
print i,
print ""
print colored("\tRimadas con  E","red")
for i in sorted(ae2):
print i,
print ""


print colored("#" + "I" + "#","green")

print colored("\tPrincipales  con I","red")
for i in sorted(ai):
print i,
print ""
print colored("\tRimadas con  I","red")
for i in sorted(ai2):
print i,
print ""


print colored("#" + "O" + "#","green")

print colored("\tPrincipales  con O","red")
for i in sorted(ao):
print i,
print ""
print colored("\tRimadas con  O","red")
for i in sorted(ao2):
print i,
print ""


print colored("#" + "U" + "#","green")

print colored("\tPrincipales  con U","red")
for i in sorted(au):
print i,
print ""
print colored("\tRimadas con  U","red")
for i in sorted(au2):
print i,
print ""


Como podéis ver, eliminamos todas las preposiciones, tildes y otros signos como puntos y comas.
Tras eso, el programa comienza a buscar las palabras que tienen una longitud mayor o igual a la que hemos introducido.
Luego muestra las palabras ordenadas según el número de repeticiones entre el mínimo y el máximo que especificamos.
Más tarde muestra las filtra por la vocal y muestra las que terminan en una determinada vocal o las que riman con esa vocal.



¿Qué podemos hacer con esto? ¡NUESTRO PROPIO GRUPO DE RAP O DE LO QUE SEAAA! ¡WUUUUHHH!  ;D


Mayo 15, 2018, 06:05:45 PM #1 Ultima modificación: Mayo 15, 2018, 10:39:56 PM por Gabriela
Buenas

El experimento es curioso, igualmente para el ejemplo comparar sons of aguirre con division 250 no creo que sea lo mas correcto, como me imagino sabras (y mencionas) el primero es un grupo de coña. Podrias haber cogido directamente temas de  hasel o valtonyc entre otros desechos sociales que estan mas en la linea de division 250 en cuanto a barbaridades por minuto.

Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

Ya sé que no son comparables pero era por comentar grupos más o menos conocidos para aquellas personas que tienen cierto interés en política jeje Aunque al decir esto no digo que no sean conocidos Hasel y demás, simplemente no me vinieron a la cabeza a la hora de realizar la prueba.
De todas formas, todo esto me pareció algo curioso xD
Desde mi punto de vista, donde esté un libro clásico de política que se quiten todos estos vendedores de humo, o mejor vendedores de ideas ;D