文本处理 本地计算 开箱即用 内置示例 不留痕迹

词频统计与关键词密度计算器

粘贴一段文本,选择统计口径(中文单字、英文单词、双字组合、三字组合),即可看到高频字词排行与占比,用于文案自查、关键词密度分析与「这段文字到底在说什么」的快速判断。中文不做词典分词,四种口径的规则都写在页面上;全部计算在浏览器本地完成,文本不上传。

词频统计用于快速判断一段文字到底在讲什么,也用于自查关键词密度是否自然:把文本按口径切分后统计出现次数与占比,取前若干名看排行。判断「这段内容重复度是不是太高」或「主题词有没有跑偏」时,它比肉眼扫更可靠。

中文不做词典分词是这里的关键前提:本工具按单字、双字组合等口径机械切分,所以会出现「品运」这类不成词但在文中相邻的组合 —— 这是统计口径的必然结果,不是错误。分析英文内容时建议勾选忽略虚词(the、and、of 等),否则排行前列会全是功能词,看不出实际主题。

使用步骤

  1. 粘贴文本,选择口径:中文单字、英文单词、双字组合或三字组合。
  2. 英文内容勾选忽略虚词,让排行反映实际主题而不是功能词。
  3. 看次数与占比排行,判断主题倾向与用词重复度。
  4. 写文案时参考关键词密度即可,不必为凑密度牺牲语句通顺。

计算原理与示例

四种口径怎么选

看中英混排的用词习惯选「字词频」——中文按单字、英文与数字按单词统计;分析英文文章的关键词选「英文词频」(可勾选忽略 the / and / of 这类虚词);想找出中文里的高频词块选「双字组合」,它把相邻两个汉字组成一组,能显出「复利 / 收益 / 风险」这类二字词;「三字组合」则更适合看「不好意思」「性价比」这类固定说法。

关键词密度怎么看

占比 = 该字词出现次数 ÷ 参与统计的字词总数。中文里「的、了、是」天然占据榜首,占比高不代表写得好,而是说明它们是不可压缩的功能字;真正值得看的是内容词(名词、动词)的分布是否集中——如果某个内容词占比异常高(例如超过 5%),通常意味着主题明确,也可能意味着用词重复、需要替换同义表达。

为什么中文不按词统计

中文没有词间空格,要做到「真正的分词」必须依赖词典或统计模型,不同工具给出的结果互不一致,也很难解释清楚「为什么这两个字被算成一个词」。本工具改用四种规则明确、可复核的口径:字、英文词、双字组合、三字组合。它们不是分词,但足以回答「哪些字词被反复使用」这个问题。

统计口径:汉字取 Unicode 基本区(U+4E00~U+9FFF)与扩展 A 区(U+3400~U+4DBF);英文与数字按连续字母数字串切分,忽略大小写;双字 / 三字组合按标点、空白与数字切段后段内滑窗,不跨段组合;占比 = 该字词次数 ÷ 参与统计的字词总数;同频字词按字符升序排列。不做同义词合并、不做词形还原、不做繁简归一。

代码示例

JavaScript 双字组合统计

const bigrams = (s) => {
  const cs = [...s].filter((c) => /[\u4e00-\u9fa5]/.test(c));
  const out = [];
  for (let i = 0; i + 1 < cs.length; i++) out.push(cs[i] + cs[i + 1]);
  return out;
};

const top = (arr, n = 5) => {
  const m = new Map();
  arr.forEach((k) => m.set(k, (m.get(k) || 0) + 1));
  return [...m.entries()]
    .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
    .slice(0, n);
};

top(bigrams('关键词密度分析,关键词自查'));
// 关键 2、键词 2、词密 1 …

Shell 英文词频(命令行)

# 转小写 → 拆词 → 排序 → 计数 → 取前 10
tr -cs 'A-Za-z' '\n' < article.txt | tr 'A-Z' 'a-z' \
  | sort | uniq -c | sort -rn | head -10

# 先排除常见虚词再看主题词
tr -cs 'A-Za-z' '\n' < article.txt | tr 'A-Z' 'a-z' \
  | grep -vE '^(the|and|of|to|in|is|are|for|on|that)$' \
  | sort | uniq -c | sort -rn | head -10

常见问题

双字组合里为什么会出现「品运」这种奇怪的组合?

因为双字组合是「相邻两字滑窗」,不判断它们是不是一个词。一段文字「产品运营」会产出「产品」「品运」「运营」三组,其中「品运」是跨词边界的伪组合。这是口径本身的性质,不是错误——所以页面刻意标注了「按标点、空白与数字切段」,段内滑窗至少能避免跨句乱组合。真正想找词时,看高频的前几名通常仍是真词。

出现次数一样的字词,谁排在前面?

按字符升序(编码顺序)排列。这是刻意的确定性口径:同样的输入必须得到同样的排行,否则同一段文本两次统计的顺序可能不同,也没法做回归比对。中文按 Unicode 码点排序,所以「世」会排在「界」前面。

关键词密度多少算合适?

对中文内容,把「字词频」里的内容词占比控制在 1%~3% 通常读起来自然;超过 5% 会明显有重复感。需要强调的是:现代搜索引擎并不存在一个「密度达标就排名靠前」的阈值,密度只适合用来自查「是不是翻来覆去只说一件事」,不要为了凑数字硬塞关键词。

英文虚词是什么?勾选忽略有什么用?

虚词指 the、a、and、of、to 这类只有语法功能、不承载信息的词。统计英文时它们几乎总占榜首,勾选「忽略」后排行榜会立刻显露出真正的内容词。本工具内置约 45 个常见虚词,只在「英文词频」口径下生效,且默认不忽略——口径以你的选择为准。

标点、数字和英文会参与统计吗?

标点与符号不参与(它们不作为字词计入),数字与英文单词参与:连续的字母数字串会被整体视为一个词,例如「2026」与「Python」各算一个词,并按大小写归一(Python 与 python 合并统计)。中文标点、英文标点、空格与换行都不会进入统计。

为什么这里的汉字数和「字数统计」工具不一样?

口径不同:本页的「汉字数」只统计基本区与扩展 A 区的汉字,不含标点、数字、字母与 emoji;而字数统计工具区分「含标点字符数」与「去标点字数」,还统计行数、段落数。做内容合规核对(比如平台要求 300 字以上)时,用字数统计工具的口径更稳妥。

一段文本里全是数字,为什么提示没有可统计的字词?

「双字组合」与「三字组合」只处理汉字,纯数字或纯符号文本在段内凑不满两个字,因此没有任何组合可统计。换成「字词频」或「英文词频」口径即可正常统计数字串。

我粘贴的文本会被上传或保存吗?

不会。统计在浏览器本地完成,文本不发送到服务器、不写入浏览器存储,页面刷新即清空,也没有「计算历史」区块。这也是本站把这类工具放在本地运算的原因:待分析的文本常常是还没发布的稿件。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。