词频统计器
文本统计文本的词频与字符 n-gram——中文走 Intl.Segmenter 分词,拉丁文按 Unicode 字母或空格分词——输出 Top-N 词频表、占比,并可导出 CSV。
不获取远程 URL;请直接粘贴你的 JSON。
本页内容
什么是词频分析器?#
词频分析器读进一段文字,数每个词元出现了多少次,然后排序。它是 SEO 关键词密度检查、搜索索引停用词发现、语言学习词汇量估计,以及任何正经文本编辑器里”最常用词”面板背后的那把刀。靠手数一定会数错——大小写、标点、CJK 分词一掺进来,直觉就失灵了。
难的地方在于决定什么算一个词元。这个工具提供四种分词模式,因为正确答案取决于文字本身:
- 空格分词 —— 按任意空白切分。与语种无关;会把
Hello,和hello当成不同的词元(因为逗号和大小写不同)。 - 正则分词 —— 最长的 Unicode 字母序列(
\p{L}+)。丢掉数字和标点,所以Hello,变成Hello。拉丁字母正文默认就该用它。 - CJK 分词 —— 用浏览器的
Intl.Segmenter按词粒度做真正的语言学分词(我爱北京按真实的词边界切,而不是按字切)。浏览器没有分词器时退化为按汉字逐字计数并提示你。 - N-gram —— 在压掉空白的字符流上取 2–5 元的字符 n-gram,用于重复模式分析和错别字聚类分析。
全部计数都在本地跑;输入超过 1 兆字节时会转到后台 worker,保证页面不卡。
怎么使用#
- 在工具栏选 模式:空格、正则、CJK、N-gram。
- 设 Top N(默认 20,上限 1000)。只显示这么多行,但表格下方的总计始终反映所有词元。
- 如果选了 N-gram,会出现一个 大小 选择器(2、3、4、5)——选 gram 长度。
- 勾选或取消 忽略大小写(默认开)。开着时
The和the合并成一条计数。 - 在左框粘贴文字,或点 示例 加载一段内置短文。
- 看右框:一段汇总(总词元数、去重词元数)加一张排序表(词元 / 计数 / 占比)。用 复制 复制表格,或 下载 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。排序表是:
| 词元 | 计数 | 占比 |
|---|---|---|
| fox | 2 | 33.33% |
| the | 2 | 33.33% |
| brown | 1 | 16.67% |
| quick | 1 | 16.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 线程,但那个线程仍然属于这一页——不会把任何东西发到服务器。