De esta manera:
utilizar una lista de palabras vacías, obtener todas las palabras o frases no en las palabras vacías, contar las ocurrencias de cada uno, más o menos en orden descendente.
Las palabras vacías deben ser una lista de todos los términos comunes en inglés. También debe incluir signos de puntuación, y tendrá que volver a colocar previamente todos los signos de puntuación como una palabra separada, p. Ej. "Algo como esto." -> "Algo, como esto". O bien, puede eliminar toda la puntuación.
$content=preg_replace('/[^a-z\s]/', '', $content); // remove punctuation
$stopwords='the|and|is|your|me|for|where|etc...';
$stopwords=explode('|',$stopwords);
$stopwords=array_flip($stopwords);
$result=array(); $temp=array();
foreach ($content as $s)
if (isset($stopwords[$s]) OR strlen($s)<3)
{
if (sizeof($temp)>0)
{
$result[]=implode(' ',$temp);
$temp=array();
}
} else $temp[]=$s;
if (sizeof($temp)>0) $result[]=implode(' ',$temp);
$phrases=array_count_values($result);
arsort($phrases);
Ahora tiene una matriz asociativa en orden de la frecuencia de los términos que ocurren en sus datos de entrada.
La forma en que desea realizar las coincidencias depende de usted, y depende en gran medida de la longitud de las cadenas en los datos de entrada.
Vería si alguna de las 3 mejores teclas de matriz coinciden con cualquiera de las 3 principales de cualquier otra en los datos. Estos son tus grupos.
Avíseme si usted tiene algún problema con esto.
Clústerlos según qué? ¿Qué es un grupo significativo para ti? – netcoder
Defina "grupos con nombre significativo". – hakre
@netcoder: en una biblioteca de clústeres de propósito general, eso no debería importar. La elección de las características debería determinar qué tipo de grupos se producen. –