文本统计与分析指南:字数、阅读时间、关键词密度全攻略
文本(更新于 2026年6月2日)
为什么需要文本统计?
| 场景 | 需要的指标 |
|---|---|
| SEO 优化 | 字数、关键词密度、可读性 |
| 内容定价 | 字数、阅读时间 |
| 学术论文 | 字数(中英分别统计) |
| 社交媒体 | 字符数(限制 280/2000) |
| 翻译报价 | 字数/词数 |
中英文字数统计的差异
核心问题:中文没有空格分词
英文:Hello World → 2 个单词(空格分隔)
中文:你好世界 → 4 个字(逐字计算)还是 2 个词(你好/世界)?
三种统计方式
| 方式 | 算法 | "你好World"的结果 | 适用场景 |
|---|---|---|---|
| 字符数 | 所有字符 | 7 | 社交媒体限制 |
| 字/词数 | 中文按字,英文按词 | 6(4字+2词) | 内容定价、SEO |
| 字节数 | UTF-8 编码长度 | 10(4×3+2×1) | 存储空间 |
JavaScript 实现
function countText(text: string) {
// 移除零宽字符
const clean = text.replace(/[\u200B-\u200D\uFEFF]/g, '');
// 字符数
const charCount = clean.replace(/\s/g, '').length;
// 中文字数
const chineseChars = (clean.match(/[\u4e00-\u9fff]/g) || []).length;
// 英文词数
const englishWords = (clean.match(/[a-zA-Z]+/g) || []).length;
// 数字组数
const numbers = (clean.match(/\d+/g) || []).length;
// 总字/词数
const wordCount = chineseChars + englishWords + numbers;
// 字节数(UTF-8)
const byteCount = new TextEncoder().encode(clean).length;
// 行数
const!lineCount = clean.split(/\n/).filter(l => l.trim()).length;
// 段落数
const paragraphCount = clean.split(/\n\s*\n/).filter(p => p.trim()).length;
return {
charCount,
wordCount,
chineseChars,
englishWords,
numbers,
byteCount,
lineCount,
paragraphCount,
};
}
阅读时间估算
计算公式
中文阅读速度:~500 字/分钟
英文阅读速度:~200-250 词/分钟
阅读时间 = 中文字数 / 500 + 英文词数 / 225
实现
function estimateReadingTime(text: string) {
const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
const englishWords = (text.match(/[a-zA-Z]+/g) || []).length;
const minutes = chineseChars / 500 + englishWords / 225;
if (minutes < 1) return '不到 1 分钟';
if (minutes < 60) return `约 ${Math.ceil(minutes)} 分钟`;
const hours = Math.floor(minutes / 60);
const mins = Math.ceil(minutes % 60);
return `约 ${hours} 小时 ${mins} 分钟`;
}
不同内容的阅读速度
| 内容类型 | 中文速度 | 英文速度 |
|---|---|---|
| 小说/散文 | 500-700 字/分 | 250-300 词/分 |
| 技术文档 | 300-400 字/分 | 150-200 词/分 |
| 法律文件 | 200-300 字/分 | 100-150 词/分 |
| 社交媒体 | 600-800 字/分 | 300+ 词/分 |
关键词密度分析
什么是关键词密度?
关键词密度 = 关键词出现次数 / 总词数 × 100%
示例:
总词数:500
"前端" 出现 15 次
密度 = 15 / 500 × 100% = 3%
SEO 建议密度
| 密度 | 评价 |
|---|---|
| < 1% | 过低,搜索引擎可能不重视 |
| 1-3% | ✅ 最佳范围 |
| 3-5% | 偏高,注意自然度 |
| > 5% | ❌ 关键词堆砌,可能被惩罚 |
实现
function analyzeKeywordDensity(text: string, keyword: string) {
const regex = new RegExp(keyword, 'gi');
const occurrences = (text.match(regex) || []).length;
const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
const englishWords = (text.match(/[a-zA-Z]+/g) || []).length;
const totalWords = chineseChars + englishWords;
const density = (occurrences / totalWords) * 100;
return {
keyword,
occurrences,
totalWords,
density: density.toFixed(2) + '%',
evaluation: density < 1 ? '过低' : density <= 3 ? '最佳' : density <= 5 ? '偏高' : '堆砌',
};
}
文本可读性评分
Flesch Reading Ease(英文)
分数 = 206.835 - 1.015 × (总词数/总句数) - 84.6 × (总音节数/总词数)
评分对照:
90-100 非常容易(5年级)
60-70 标准(8-9年级)
30-50 较难(大学生)
0-30 非常难(专业学术)
中文可读性
中文没有音节概念,通常用平均句长衡量:
function chineseReadability(text: string) {
const sentences = text.split(/[。!?;\n]/).filter(s => s.trim());
const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
const avgSentenceLength = chineseChars / sentences.length;
if (avgSentenceLength <= 15) return { score: '易读', level: '大众' };
if (avgSentenceLength <= 25) return { score: '适中', level: '标准' };
if (avgSentenceLength <= 40) return { score: '较难', level: '专业' };
return { score: '难读', level: '学术' };
}
使用工具库统计文本
- 打开 字数统计工具
- 粘贴或输入文本
- 自动显示:字符数、字/词数、行数、段落数、阅读时间
- 支持中英文混合统计
SEO 文案优化实战
1. 标题长度
// Google 显示约 60 个字符(30 个中文字)
function checkTitle(title: string) {
const length = title.length;
return {
length,
status: length <= 60 ? '✅' : '❌ 超过 60 字符',
};
}
2. 描述长度
// Google 显示约 160 个字符(80 个中文字)
function checkDescription(desc: string) {
const length = desc.length;
return {
length,
status: length <= 160 ? '✅' : '❌ 超过 160 字符',
};
}
3. 正文长度
| 页面类型 | 建议字数 |
|---|---|
| 博客文章 | 1500-3000 字 |
| 产品页面 | 300-800 字 |
| 首页 | 300-500 字 |
| 教程 | 2000+ 字 |
4. 关键词分布
✅ 好的分布:
标题含关键词
第一段含关键词
正文自然出现 3-5 次
H2/H3 子标题含变体
❌ 坏的分布:
每段都重复关键词
关键词与上下文无关
用隐藏文本堆砌
常见问题
Word 统计和在线工具统计不一致?
Word 的"字数"统计规则与在线工具可能不同:
- Word 2019+ 中文按"字"统计
- 部分工具中文按"字符"统计
- 建议统一使用一种工具,避免报价争议
如何统计代码中的注释率?
function commentRate(code: string, language: string) {
const totalLines = code.split('\n').length;
let commentLines = 0;
if (language === 'javascript') {
const singleLineComments = (code.match(/\/\/.*/g) || []).length;
const multiLineComments = (code.match(/\/\*[\s\S]*?\*\//g) || []).length;
commentLines = singleLineComments + multiLineComments;
}
return (commentLines / totalLines * 100).toFixed(1) + '%';
}
总结
文本统计看似简单,实则暗藏玄机——中英混合统计、阅读时间估算、关键词密度分析各有讲究。掌握这些指标,无论是 SEO 优化、内容定价还是翻译报价,都能做到心中有数。工具库的 字数统计工具 一键获取所有指标,让你专注内容创作。
#文本统计#字数统计#阅读时间#文本分析#教程