Như thế này:
Sử dụng một danh sách các từ dừng, nhận được tất cả từ hoặc cụm từ không có trong từ dừng, đếm lần xuất hiện của mỗi, sắp xếp theo thứ tự giảm dần.
Các từ dừng cần phải là danh sách tất cả các thuật ngữ tiếng Anh thông dụng. Nó cũng phải bao gồm dấu chấm câu và trước tiên bạn sẽ cần phải đặt trước tất cả các dấu chấm câu là một từ riêng biệt, ví dụ: "Một cái gì đó, như thế này." -> "Một cái gì đó, như thế này." HOẶC, bạn chỉ có thể xóa tất cả dấu chấm câu.
$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);
Bây giờ bạn có một mảng kết hợp theo tần suất các thuật ngữ xảy ra trong dữ liệu đầu vào của bạn.
Cách bạn muốn thực hiện các kết quả phù hợp tùy thuộc vào bạn và phụ thuộc phần lớn vào độ dài của các chuỗi trong dữ liệu đầu vào.
Tôi sẽ xem liệu có bất kỳ trong số 3 khóa mảng hàng đầu khớp với bất kỳ trong số 3 khóa hàng đầu từ bất kỳ khóa nào khác trong dữ liệu hay không. Đây là những nhóm của bạn.
Hãy cho tôi biết nếu bạn gặp bất kỳ sự cố nào với vấn đề này.
Kết hợp chúng dựa trên nội dung gì? Một nhóm có ý nghĩa với bạn là gì? – netcoder
Vui lòng xác định "các nhóm có ý nghĩa có tên". – hakre
@netcoder: trong thư viện phân cụm mục đích chung, điều đó không quan trọng. Việc lựa chọn các tính năng nên xác định loại nhóm nào được tạo ra. –