工具
指南

词频统计器

文本

统计文本的词频与字符 n-gram——中文走 Intl.Segmenter 分词,拉丁文按 Unicode 字母或空格分词——输出 Top-N 词频表、占比,并可导出 CSV。

100% 客户端 无后端

不获取远程 URL;请直接粘贴你的 JSON。

输入
输出
输入文本以统计词频。
本页内容

什么是词频分析器?#

词频分析器读进一段文字,数每个词元出现了多少次,然后排序。它是 SEO 关键词密度检查、搜索索引停用词发现、语言学习词汇量估计,以及任何正经文本编辑器里”最常用词”面板背后的那把刀。靠手数一定会数错——大小写、标点、CJK 分词一掺进来,直觉就失灵了。

难的地方在于决定什么算一个词元。这个工具提供四种分词模式,因为正确答案取决于文字本身:

  • 空格分词 —— 按任意空白切分。与语种无关;会把 Hello, 和 hello 当成不同的词元(因为逗号和大小写不同)。
  • 正则分词 —— 最长的 Unicode 字母序列(\p{L}+)。丢掉数字和标点,所以 Hello, 变成 Hello。拉丁字母正文默认就该用它。
  • CJK 分词 —— 用浏览器的 Intl.Segmenter 按词粒度做真正的语言学分词(我爱北京 按真实的词边界切,而不是按字切)。浏览器没有分词器时退化为按汉字逐字计数并提示你。
  • N-gram —— 在压掉空白的字符流上取 2–5 元的字符 n-gram,用于重复模式分析和错别字聚类分析。

全部计数都在本地跑;输入超过 1 兆字节时会转到后台 worker,保证页面不卡。

怎么使用#

  1. 在工具栏选 模式:空格、正则、CJK、N-gram。
  2. 设 Top N(默认 20,上限 1000)。只显示这么多行,但表格下方的总计始终反映所有词元。
  3. 如果选了 N-gram,会出现一个 大小 选择器(2、3、4、5)——选 gram 长度。
  4. 勾选或取消 忽略大小写(默认开)。开着时 The 和 the 合并成一条计数。
  5. 在左框粘贴文字,或点 示例 加载一段内置短文。
  6. 看右框:一段汇总(总词元数、去重词元数)加一张排序表(词元 / 计数 / 占比)。用 复制 复制表格,或 下载 CSV 得到一份 token,count,share 文件,能直接在表格软件里打开。

如果 CJK 模式因为浏览器缺少 Intl.Segmenter 而走了回退,表格下方会出现一行小字提示,告诉你当前是按字计数而非按词计数。

主要特性#

  • 四种分词模式。 空格做原始计数、正则做干净词频、CJK 做真正的中日文分词、N-gram 做模式发现——而不是用一种模式去硬套四种文字、对其中三种都数错。
  • 真正的 CJK 分词。 用 Intl.Segmenter 的 granularity: "word",也就是浏览器内置的语言学分词器,让 我爱北京天安门 按词边界切,而不是被硬拆成一个一个字。
  • 诚实的回退。 分词器不可用时退化为按汉字逐字计数,并且明明白白告诉你,而不是悄悄给出不一样的数字。
  • 报的是占比,不只是次数。 每一行都显示它占所有词元的百分比,按全文计算——所以即便只看一份一万词文档的 Top-20,报出来的百分比也有意义。
  • CSV 导出。 一键下载 token,count,share 文件,直接进表格软件或画图。
  • 顺序确定。 同频次的词按字母序(词元升序)破并列,所以同样的输入在不同浏览器、不同引擎上跑出来顺序一致。
  • 大输入走 worker。 输入超过约 1 MB 时转到后台 worker,主线程和页面其余部分保持流畅。
  • 本地且安全。 词元只用 textContent 渲染——用户控制的文字绝不可能从一个表格单元格里逃逸出去。

实例演示#

把这行短文粘进输入框,模式选空格、忽略大小写开:

the quick brown fox the fox

汇总显示 总词元 6、去重 4。排序表是:

词元计数占比
fox233.33%
the233.33%
brown116.67%
quick116.67%

有两点要看。第一,fox 排在 the 前面,虽然计数相同——这是因为同频次按字母序破并列。第二,四个词元的占比加起来正好 100%——百分比是按全部词元总数算的,不是只按显示出来的行算,所以哪怕 Top N 把长尾藏起来了,百分比依然有意义。

把 模式 切到 N-gram、大小选 2,对同一段文字(空格被压掉)分析:会得到 th、he、e 、 q 这样的二元组,让你看出哪些字母对在重复——这正是找重复前缀或卡键键盘的套路。

常见问题#

普通英文文字该用哪种模式?#

正则是拉丁字母正文的正确默认:它去掉标点和数字,所以 word,、word. 和 word 都算同一个词元,得到干净的词汇计数。只有在标点本身有意义时(比如数日志里原始的空格分隔字段)才用 空格。

CJK 模式到底怎么切中文?#

它调用浏览器的 Intl.Segmenter,granularity 设为 "word"——这是一个真正的语言学分词器,知道中文词从哪开始到哪结束。所以 我爱北京天安门 会按真实的词切,而不是切成五个字。如果你的浏览器不支持 Intl.Segmenter,工具会退化为按字计数并给出提示——这些数字拿来对比密度仍然能用,只是语言学上没那么精确。

N-gram 模式是干什么的?#

N-gram 揭示重复的子串。对一段长文字跑 2-gram,能看出哪些字母或字符对占主导;跑 3-gram、4-gram,能浮现重复前缀、常见语素或错别字聚类。这是关键词堆砌审查、密码分析和自动补全排序背后的标准手法。

为什么百分比按所有词元算,而不是只按显示出来的 Top N?#

因为只有对照真实总数,百分比才有意义。你要一篇 5000 字文章里出现频率最高的 10 个词,每个词的占比应该反映它占整篇文章的份额,而不是占这 10 个词的份额。按全部词元总数算占比,哪怕表格被截断了,数字也是诚实的。

我的文字会被上传到哪里吗?#

不会。分词、计数、生成 CSV 全在浏览器里跑。大输入会转到后台 worker 线程,但那个线程仍然属于这一页——不会把任何东西发到服务器。