Ti piace questa:
usare un elenco di parole non significative, ottenere tutte le parole o frasi non nelle parole non significative, contare le occorrenze di ciascuno, specie in ordine decrescente.
Le parole chiave devono essere un elenco di tutti i termini inglesi comuni. Dovrebbe includere anche la punteggiatura e dovrai preg_replace che tutta la punteggiatura sia prima una parola separata, ad es. "Qualcosa come questo." -> "Qualcosa, come questo." O, puoi semplicemente rimuovere tutta la punteggiatura.
$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);
Ora si dispone di un array associativo in base alla frequenza dei termini che si verificano nei dati di input.
Come si desidera eseguire le corrispondenze dipende da te e dipende in gran parte dalla lunghezza delle stringhe nei dati di input.
Vedrei se uno qualsiasi dei 3 principali tasti di matrice corrisponde a uno qualsiasi dei primi 3 di qualsiasi altro nei dati. Questi sono quindi i tuoi gruppi.
Fatemi sapere se avete qualche problema con questo.
Raggrupparli in base a cosa? Qual è un gruppo significativo per te? – netcoder
Si prega di definire "gruppi con nome significativi". – hakre
@netcoder: in una libreria di clustering generica, ciò non dovrebbe avere importanza. La scelta delle caratteristiche dovrebbe determinare quale tipo di gruppi vengono prodotti. –