
本文介绍阿拉伯语文本关键词密度的定义与计算原理,并提供兼容阿拉伯字符的PHP脚本实现方案,解决str_word_count()默认不识别阿拉伯字母的问题。
本文介绍阿拉伯语文本关键词密度的定义与计算原理,并提供兼容阿拉伯字符的php脚本实现方案,解决`str_word_count()`默认不识别阿拉伯字母的问题。
关键词密度(Keyword Density)指目标词汇在全文中出现频次占总词数的百分比,常用于内容分析与SEO评估。对于阿拉伯语等Unicode非ASCII语言,PHP原生str_word_count()函数默认仅识别英文字母(a–z、A–Z)及下划线作为“单词字符”,无法正确切分阿拉伯文字(如أ،ب،ت،ث…),导致统计失效。
✅ 正确处理阿拉伯文本的关键:自定义分词逻辑
由于阿拉伯语单词间无空格分隔(尤其在连写形式中),且包含变音符号(如َ ِ ُ)、叠音符(ّ)及起始/结束形变,推荐采用基于空格与常见标点的简单分词(适用于标准书写),再辅以Unicode规范化和清洗:
<?php function calculateArabicKeywordDensity($text, $minLength = 2) {
// 1. 移除HTML标签、多余空白及常见标点(保留阿拉伯字母、数字、空格)
$cleaned = preg_replace('/[^\p{Arabic}\p{N}\s]/u', ' ', $text);
$cleaned = preg_replace('/\s+/', ' ', trim($cleaned));
// 2. 按空格分割(阿拉伯语通常以空格分词)
$words = explode(' ', $cleaned);
$words = array_filter($words, function($w) use ($minLength) {
return mb_strlen(trim($w), 'UTF-8') >= $minLength;
});
if (empty($words)) {
return [];
}
// 3. 统一转小写(阿拉伯语无大小写,但可标准化)
$words = array_map(function($w) {
return mb_strtolower($w, 'UTF-8');
}, $words);
$totalWords = count($words);
$wordCount = array_count_values($words);
arsort($wordCount);
// 4. 计算密度并返回关联数组
$result = [];
foreach ($wordCount as $word => $count) {
$density = ($count / $totalWords) * 100;
$result[$word] = [
'count' => $count,
'density' => round($density, 2)
];
}
return $result;
}
// 使用示例
$arabicText = "مشروعنا يهدف إلى تحسين أداء البحث وتحليل المحتوى العربي بدقة عالية. تحسين البحث يعتمد على تحليل الكلمات المفتاحية مثل مشروع، بحث، محتوى.";
$densityData = calculateArabicKeywordDensity($arabicText);
foreach ($densityData as $word => $data) {
echo htmlspecialchars($word) . " = {$data['count']}. Density: {$data['density']}%<br>\n";
}
?>
⚠️ 注意事项与优化建议
- 编码必须为UTF-8:确保PHP文件、数据库连接、HTML响应头均声明UTF-8,否则阿拉伯字符将乱码或截断;
- *`mb_函数启用**:确认PHP已开启mbstring扩展(phpinfo()中检查),否则mb_strlen()、mb_strtolower()`不可用;
- 高级分词需求:如需处理连写词(كِتَابٌ)、词根提取(如كتب ← كتاب ← كتب),应集成专业库如PHP Arabic或调用外部NLP服务;
- 停用词过滤:实际应用中建议剔除高频虚词(مثل، إلى، في…),可维护一个阿拉伯语停用词表提升分析质量;
- 性能考量:对超长文本(如整页HTML),建议先用DOMDocument提取纯文本,再清洗,避免正则过度消耗内存。
该方案兼顾准确性与实用性,无需依赖外部扩展即可稳定支持阿拉伯语关键词密度分析,是构建多语言内容分析工具的基础模块。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











