elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.  (Leído 4,243 veces)
Wil630

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
« en: 1 Noviembre 2015, 21:08 pm »

[Python][Python][Python][Python][Python][Python][Python][Python][Python][Python][Python]

Hola a todos,

Debo obtener el porcentaje de oraciones con 1 palabra, 2 palabras, etc. en español y francés a partir de algunos libros obtenidos de gutenber.org. Aún no sé cómo llegar a definir el diccionario para que me muestre en el resultado final algo como esto:

{ "español": {1:0.05, 2:0.10, 3:0.15, 4:0.20, 5:0.22, ... },
  "francés": {1:0.03, 2:0.14, 3:0.11, 4:0.18, 5:0.29, ... },
  "italiano":  ...,
}

Ya bajé los libros de gutenberg.org, les quité los encabezados, limpié los textos, dividí los textos en oraciones mediante "<>" y dividí las oraciones por palabras. No sé qué más debo hacer para terminar este ejercicio.

Agradezco de antemano su colaboración.

Esto es lo que llevo:

# -*- coding:utf-8 -*-

from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers


libros_idiomas={"frances":[17808,16901,10774,33378,27566,26813,18627],
                "espanol":[16484,42727,25317,1619,27736,11529,31637,31013]
                }

for idioma in libros_idiomas:
    dic_cont_palabras_en_oraciones={}
    print "Idioma", idioma
    for codigo_libro in libros_idiomas[idioma]:
        print codigo_libro
        texto=load_etext(codigo_libro)
        texto=strip_headers(texto).lower()
        for caracter_especial in u',".-?¿()¡!«»:;*_~]':
      texto=texto.replace(caracter_especial, ' ')
        for separador_oracion in '.'+'.\n':
      texto=texto.replace(separador_oracion, u'<>')
   
        oraciones=texto.split('<>')

        for oracion in oraciones:
            
            palabras=oracion.split()
            cantidad_palabras=len(palabras)
            
            if len(palabras) in dic_cont_palabras_en_oraciones:
                dic_cont_palabras_en_oraciones[len(palabras)]+1

            else:
                dic_cont_palabras_en_oraciones[len(palabras)]=1

            palabras_en_oraciones=dic_cont_palabras_en_oraciones.keys()


« Última modificación: 1 Noviembre 2015, 21:14 pm por Wil630 » En línea

Wil630

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
« Respuesta #1 en: 1 Noviembre 2015, 21:13 pm »

[Python] [Python] [Python] [Python] [Python] [Python]

Hola a todos,

Debo obtener el porcentaje de oraciones con 1 palabra, 2 palabras, etc. en español y francés a partir de algunos libros obtenidos de gutenber.org. Aún no sé cómo llegar a definir el diccionario para que me muestre en el resultado final algo como esto:

{ "español": {1:0.05, 2:0.10, 3:0.15, 4:0.20, 5:0.22, ... },
  "francés": {1:0.03, 2:0.14, 3:0.11, 4:0.18, 5:0.29, ... },
  "italiano":  ...,
}

Ya bajé los libros de gutenberg.org, les quité los encabezados, limpié los textos, dividí los textos en oraciones mediante "<>" y dividí las oraciones por palabras. No sé qué más debo hacer para terminar este ejercicio.

Agradezco de antemano su colaboración.

Esto es lo que llevo:

# -*- coding:utf-8 -*-

from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers


libros_idiomas={"frances":[17808,16901,10774,33378,27566,26813,18627],
                "espanol":[16484,42727,25317,1619,27736,11529,31637,31013]
                }

for idioma in libros_idiomas:
    dic_cont_palabras_en_oraciones={}
    print "Idioma", idioma
    for codigo_libro in libros_idiomas[idioma]:
        print codigo_libro
        texto=load_etext(codigo_libro)
        texto=strip_headers(texto).lower()
        for caracter_especial in u',".-?¿()¡!«»:;*_~]':
      texto=texto.replace(caracter_especial, ' ')
        for separador_oracion in '.'+'.\n':
      texto=texto.replace(separador_oracion, u'<>')
   
        oraciones=texto.split('<>')

        for oracion in oraciones:
           
            palabras=oracion.split()
            cantidad_palabras=len(palabras)
           
            if len(palabras) in dic_cont_palabras_en_oraciones:
                dic_cont_palabras_en_oraciones[len(palabras)]+1

            else:
                dic_cont_palabras_en_oraciones[len(palabras)]=1

            palabras_en_oraciones=dic_cont_palabras_en_oraciones.keys()



En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
« Respuesta #2 en: 2 Noviembre 2015, 02:44 am »

¿estás teniendo un problema de programación o de lógica? o sea que, o alguna función te da error o no la has desarrollado.Tenés una parte, diría que falta la parte del porcentaje, desarrollala y ahí se  verá donde pueda haber errores.
En línea

Wil630

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
« Respuesta #3 en: 2 Noviembre 2015, 09:03 am »

En realidad no la he desarrollado. Hasta el momento esto es lo que llevo y no sé cómo hacer el código para el porcentaje.
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
« Respuesta #4 en: 2 Noviembre 2015, 12:28 pm »

veamos...

esto es lo que sabés como obtener
total_de_oraciones = 120
oraciones_2_palabras= 8
oraciones_3_palabras= 12

ahora un poco de matemáticas muy básica

si 120(oraciones) es el 100 %
entonces oraciones de 8(palabras) = X (porcentaje)
por lo tanto X = 8 * 100 / 120

porcentaje_oraciones_2_palabras =  8(cantidad de oraciones con 2 palabras) * 100 / 120 
porcentaje_oraciones_3_palabras=  12 * 100 / 120
diccionario = agregar cantidad de oraciones de ("x")en este caso 2 palabras(key):porcentaje de esa cantidad(value)
diccionario_porcentaje={2:6.66,3:10}etc.

sería lo mismo para la cantidad de palabras que tengas que agregar
En línea

Wil630

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Obtener el porcentaje de oraciones con 1 palabra, 2 palabras, 3 palabras, etc.
« Respuesta #5 en: 2 Noviembre 2015, 22:58 pm »

Muchas gracias. Lo voy a intentar.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
palabras
Java
andaluz 7 5,095 Último mensaje 14 Abril 2010, 11:21 am
por Leyer
Sustituir palabras en palabras...
Java
soser 4 5,059 Último mensaje 18 Julio 2011, 02:06 am
por Valkyr
Tomar una palabra random de una lista de palabras en un .txt
Programación Visual Basic
extreme69 8 3,997 Último mensaje 17 Noviembre 2011, 00:02 am
por Pablo Videla
Reconocimiento de Palabras y Oraciones
.NET (C#, VB.NET, ASP)
rigorvzla 0 2,213 Último mensaje 20 Octubre 2017, 15:12 pm
por rigorvzla
¿Algoritmo para obtener todas las palabras de un fichero en python?
Programación General
pran_krr 1 2,602 Último mensaje 11 Noviembre 2019, 14:33 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines