2011-01-12 49 views
5

Duplicar posible:
php: sort and count instances of words in a given string¿Contar la frecuencia de las palabras en un texto?

Busco escribir una función PHP que toma una cadena como entrada, lo divide en palabras y luego devuelve una matriz de palabras ordenados por la frecuencia de ocurrencia de cada palabra.

¿Cuál es la forma más eficiente algorítmicamente de lograr esto?

+0

espero que dependerá del tamaño del texto. En cualquier caso, hay montones de analizadores así, y la forma más eficiente de programar es reutilizar en lugar de escribir el suyo. Solo google 'word frequency counter php' – dnagirl

+0

Depende de lo que quieras decir con 'palabra' también. ¿"" "" Cuenta como una palabra cuando es un marcador posesivo? ¿Qué pasa cuando es una contracción para "es"? ¿Qué hay de otras contracciones? Si solo te interesa dividir por espacios en blanco o guiones (como lo hace T9 en tu teléfono), probablemente sea mejor que uses las cosas integradas que Gordon sugiere a continuación. – Crisfole

+0

2 preguntas anteriores de StackOverflow sobre el mismo tema. Debería ser útil. [Contar con qué frecuencia se produce la palabra en el texto en PHP] [1] [php: clasificar y contar los casos de palabras en una cadena dada] [2] [ 1]: http://stackoverflow.com/questions/2123236/count-how-often-the-word-occurs-in-the-text-in-php [2]: http://stackoverflow.com/ preguntas/2984786/php-sort-and-count-instances-of-words-in-a-given-string – Paul

Respuesta

22

Su mejor apuesta son los siguientes:

Ejemplo

$words = 'A string with certain words occuring more often than other words.'; 
print_r(array_count_values(str_word_count($words, 1))); 

salida

Array 
(
    [A] => 1 
    [string] => 1 
    [with] => 1 
    [certain] => 1 
    [words] => 2 
    [occuring] => 1 
    [more] => 1 
    [often] => 1 
    [than] => 1 
    [other] => 1 
) 

marca CW debido pregunta es un duplicado de al menos otras dos preguntas que contienen la misma respuesta

Cuestiones relacionadas