Mục tiêu
- Trích xuất bigrams (cặp từ khóa) phổ biến nhất từ tất cả tiêu đề bài viết
- Loại bỏ các từ vô nghĩa (stop words)
- Hiển thị danh sách 100 cặp từ khóa xuất hiện nhiều nhất
Mã nguồn PHP để phân tích từ khóa
Bạn sử dụng đoạn mã này để phân tích từ khóa từ danh sách tiêu đề bài viết.
<?php
// Danh sách từ vô nghĩa để loại bỏ
$stopwords = array('từ', 'vô', 'nghĩa');
// Lấy tất cả bài viết
$query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => -1,
'fields' => 'ids', // chỉ lấy ID để tiết kiệm RAM
));
$all_post_title = '';
if ($query->have_posts()) {
foreach ($query->posts as $post_id) {
$all_post_title .= get_the_title($post_id) . ' ';
}
}
if ($all_post_title != '') {
$all_post_title = trim($all_post_title);
$all_post_title = preg_replace('~[^\\pL\d\s]+~u', '', $all_post_title); // Loại bỏ ký tự lạ
$all_post_title = mb_strtolower($all_post_title);
$all_post_title = preg_replace('/\s+/', ' ', $all_post_title); // Xử lý khoảng trắng
$title_arr = explode(' ', $all_post_title);
$keyword_arr = [];
// Ghép cặp từ khóa (bigrams)
for ($i = 0; $i < count($title_arr) - 1; $i++) {
$first = $title_arr[$i];
$second = $title_arr[$i + 1];
// Bỏ qua nếu từ nằm trong stopwords
if (in_array($first, $stopwords) || in_array($second, $stopwords)) {
continue;
}
$keyword_arr[] = $first . ' ' . $second;
}
$keyword_arr = array_unique($keyword_arr);
if ($keyword_arr) {
$keyword_count_arr = [];
foreach ($keyword_arr as $keyword) {
if (str_word_count($keyword) > 1) {
$keyword_count_arr[$keyword] = substr_count(' ' . $all_post_title . ' ', ' ' . $keyword . ' ');
}
}
arsort($keyword_count_arr);
$index = 0;
echo '<ul>';
foreach ($keyword_count_arr as $keyword => $count) {
echo '<li>';
echo '<span class="uk-float-left">' . esc_html($keyword) . '</span>';
echo '<span class="uk-float-right">' . intval($count) . '</span>';
echo '<div class="uk-clearfix"></div>';
echo '</li>';
$index++;
if ($index > 100) break;
}
echo '</ul>';
}
}
?>
Ví dụ kết quả
Sau khi chạy đoạn mã trên để phân tích từ khóa từ danh sách tiêu đề bài viết tại Init HTML, mình có được danh sách từ khóa:
sử dụngxuất hiện 47 lầncài đặtxuất hiện 30 lầnbài viếtxuất hiện 28 lầnmiễn phíxuất hiện 28 lầntrong wordpressxuất hiện 25 lầnhiệu ứngxuất hiện 25 lầnthiết kếxuất hiện 23 lầnhướng dẫnxuất hiện 23 lầncho trangxuất hiện 21 lầnhình ảnhxuất hiện 20 lầntrang wordpressxuất hiện 19 lầntrang webxuất hiện 19 lần- …
Gợi ý mở rộng
- Sử dụng biểu đồ hoặc bảng để trực quan hóa dữ liệu
- Kết hợp với biểu đồ từ Chart.js hoặc thư viện JS khác
- Phân tích theo từng năm/tháng (lọc bài viết theo ngày)
Kết luận
Với đoạn mã trên, bạn dễ dàng phân tích những cặp từ khóa phổ biến nhất trong tiêu đề bài viết – một cách đơn giản nhưng rất hiệu quả để đánh giá chất lượng và xu hướng nội dung website.
Chúc các bạn thành công!
Bình luận