Foros del Web » Programando para Internet » PHP »

Densidad de palabras de un texto

Estas en el tema de Densidad de palabras de un texto en el foro de PHP en Foros del Web. Tengo creado un código para saber la densidad de palabras frecuentes de un texto. Partiendo de un texto cualquiera, asignado a una variable, el código ...
  #1 (permalink)  
Antiguo 24/03/2009, 14:16
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 4 meses
Puntos: 0
Densidad de palabras de un texto

Tengo creado un código para saber la densidad de palabras frecuentes de un texto.
Partiendo de un texto cualquiera, asignado a una variable, el código crea un listado con las palabras más frecuentes.
¿Qué necesito? .- Sacar el listado de las palabras frecuentes separadas por comas fuera del foreach para añadir dicho listado a un campo MySQL
¿Alguna idea?

Código PHP:
<?php

   $texto 
"Cuando se reconosció el armada del Turco, en la dicha batalla naval, el dicho Miguel de Cervantes
estaba malo y con calentura, y el dicho capitán... y otros muchos amigos suyos le dijeron que, pues estaba enfermo
y con calentura, que estuviese quedo abajo en la cámara de la galera; y el dicho Miguel de Cervantes respondió que
qué dirían dél, y que no hacía lo que debía, y que más quería morir peleando por Dios y por su rey, que no meterse
so cubierta, y que con su salud... Y peleó como valente soldado con los dichos turcos en la dicha batalla en el lugar
del esquife, como su capitán lo mandó y le dio orden, con otros soldados. Y acabada la batalla, como el señor don Juan
supo y entendió cuán bien lo había hecho y peleado el dicho Miguel de Cervantes, le acrescentó y le dio cuatro ducados
más de su paga... De la dicha batalla naval salió herido de dos arcabuzazos en el pecho y en una mano, de que quedó
estropeado de la dicha mano."
;


    
// str_word_count 0 - cuenta la cantidad de palabras de la cadena
    
$cuenta_palabras=str_word_count($texto);

    
// str_word_count 1- formar un array con las palabras
    
$array_palabras=array($texto);

    
// strlen — Obtiene la longitud de la cadena
    
$v=strlen($texto);


    
$frecuencia array_count_valuesstr_word_count$texto1) );
    
arsort ($frecuencia);

    foreach( 
$frecuencia as $F => $value ) {

    
// Creo que es la formula para la densidad de palabras...¿ :) ?
    
$densidad round( ($value 100) / ($cuenta_palabras) );

    
// trim — Elimina espacios en blanco (u otros caracteres) del principio y final de una cadena
    
$palabra_frecuente=trim($F);

    
//  Excluir palabras poco frecuentes, en este caso inferiores a 2
    
if($value >=2){

    
// Obtener la longitud de la cadena de frecuencia
    
$long=strlen($F);

    
//  Excluir palabras con longitud de frecuencia inferior a 5
    
if($long >= 5){

    
// Resaltar
    
$texto str_replace"$palabra_frecuente""<span style='background-color: #FF9933'>$palabra_frecuente</span>" $texto);


    echo
"<ul><li><strong><span style='background-color: #FFFF00'>".$palabra_frecuente."</span></strong> - Frecuencia: ".$value." - Densidad: ".$densidad."% </li></ul> \n";



}
}
}

#### Necesito listar las palabras frecuentes  ($palabra_frecuente) separadas por comas fuera de foreach
#### Con el proposito de alamcenar dicho listado en un campo de una tabla MySQL

        
print "<p>".$texto."</p>" ;
?>
  #2 (permalink)  
Antiguo 24/03/2009, 14:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Densidad de palabras de un texto

implode()

Código php:
Ver original
  1. echo implode(', ', $palabras_frecuentes);
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 25/03/2009, 06:44
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Densidad de palabras de un texto

Gracias, con implode puedo separar las palabras por comas, pero sigo iguial...
Lo que necesito es sacar el listado fuera del foreach... no se si me explico.
Quizas creanado el código como si fuera una función?????
  #4 (permalink)  
Antiguo 25/03/2009, 13:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Densidad de palabras de un texto

Antes del foreach declaras $palabras_frecuentes como array(), dentro del foreach agregas cada palabra con $palabras_frecuentes[] = 'palabra' y fuera del foreach usas implode.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 25/03/2009, 14:10
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Densidad de palabras de un texto

Muchas gracias amigo Trybi, ahora ya si puedo sacar las palabras frecuentes fuera del foreach.

Solo que ahora la salida generada por el código, el primer elemento generado por implode es la palabra "Array"
Se genera esto.- ¿Por qué?

Array, dicho, batalla, dicha, Cervantes, Miguel, otros, capitán, naval, calentura, estaba

Encima del Foreach he añadido esto:
$palabras_frecuentes=array($frecuencia);

y dentro del Foreach:
$palabras_frecuentes[] = $palabra_frecuente;


Reitero mis agradecimientos.
  #6 (permalink)  
Antiguo 25/03/2009, 14:31
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Densidad de palabras de un texto

Antes del foreach solo necesitas declarar $palabras_frecuentes como array() vacio, imagino que $frecuencia es otra matriz.

$palabras_frecuentes = array();
__________________
- León, Guanajuato
- GV-Foto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.