文本工具 · 文本变换

文本词云

文本→词频统计 + 词云图

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 60 次使用
中英文分词 · 词频统计 + 暖色词云 · 纯本地,文本不上传
文本输入 paste text here
就绪 · 等待输入
词云图 word cloud
输入文本后点「生成词云」
词频统计
次数占比
暂无数据
就绪 · 纯本地分词与渲染,文本不上传、不入 URL 中英文分词 · 停用词过滤 · wordcloud2 本地渲染
第一节

关于本工具

About

写年终总结、做舆情报告,最怕对着几千字文本找关键词。把一段话扔进去,它瞬间拆出每个词的出现次数,并按频次大小排成一张词云图——高频词一目了然。所有分词和渲染都在浏览器里完成,文本不会上传到任何服务器。适合新媒体编辑提炼文章核心、市场人员快速扫描评论热词,也适合学生分析演讲稿的重点分布。

使用场景

竞品评论提炼

市场运营专员小陈要写一份 9 页的竞品分析周报,手头有 200 条来自用户论坛的竞品吐槽帖。逐条看下来,脑子里全是“卡顿”“贵”“客服差”这些碎片词,没法量化。她把所有帖子原文粘贴进工具,词频统计结果出来,“加载慢”出现 47 次,“退款难”31 次——这两个高频词直接成了周报的两个核心论点,省去了两小时人工归类。

班级建议词频

新班主任接手一个 45 人的班,开学第一周让学生写“对班级的建议”,收上来 40 份手写纸条,内容五花八门。她没时间每份细看,把纸条内容敲进工具做词频统计。“活动”出现 22 次,“纪律”17 次,“作业”15 次——这三项就是全班最在意的方向。她据此在班会上优先讨论了活动方案和纪律公约,而不是凭感觉讲了一堆没人关心的事。

热点评论抓痛点

短视频编导阿杰要追一个“年轻人为什么不爱走亲戚”的热点,刷了 50 条高赞评论,每条约 30 字,信息很散。他把评论复制进工具,词频结果里“被问工资”出现 9 次,“催婚”7 次,“没话说”6 次。这三个词直接成了脚本的三个小节标题——视频发出去后完播率比上期高了 12 个百分点,因为痛点踩准了。

用户反馈排优先级

产品经理老周要对 300 条用户反馈做优先级排序,但反馈来自微信、邮件、客服工单三个渠道,格式不统一。他把所有文本拼进一个文件丢进工具,词频统计后“闪退”出现 34 次,“白屏”22 次,“加载转圈”18 次——这三个词对应的 bug 被排进下个迭代的 P0 清单。而“希望增加”只出现 6 次,说明当前用户更在意稳定性而非新功能。

客户证言选词

公司要更新官网首页的“客户证言”板块,市场部从 80 条客户评价里挑出最有力的一条。人工读一遍发现全是“不错”“挺好”“满意”这些模糊词,没法量化。她把 80 条原文做词频分析,“响应速度”出现 16 次,“专业”13 次,“解决问题”11 次——这些才是客户真正在意的价值点。最终证言板块的文案不再写“客户很满意”,而是具体写“响应速度提升了 3 小时”。

对比矩阵

维度本工具在线词云站手动制作
隐私文本在浏览器内处理,不上传服务器文本需上传至对方服务器完全本地,不涉及网络传输
速度输入文本后即时生成词云上传+排队+生成,网络延迟明显需手动分词、统计、设计,耗时数小时
词频统计自动分词并统计词频,支持中文部分站中文分词不准或需手动调整需人工阅读并手动计数,易遗漏
字体与形状内置多种字体和形状模板模板丰富但部分需付费解锁需自行安装字体、设计形状,门槛高
离线可用首次加载后断网仍可生成必须联网才能使用完全离线,依赖本地软件
学习成本打开即用,无需教程功能多但界面复杂,需摸索需掌握分词工具、设计软件等技能
第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴或键入文本(支持中文、英文、数字混合),下方实时显示总字符数和词数
  2. 2点击「生成词云」按钮,页面中央区域渲染出词云图,词频越高字号越大
  3. 3将鼠标悬停在词云图的任意词语上,弹出气泡提示该词的具体出现次数
  4. 4点击词云图右上角的「下载 PNG」按钮,浏览器自动下载当前词云图为透明背景图片

常见错误对照

1.分词边界错误:英文单词被拆成字母

✗ 错误输入 "hello world",期望词云显示 "hello" 和 "world",结果出现 h、e、l、l、o 等单个字母
✓ 修复输入 "hello world" 前,确保工具的分词模式设置为「按单词」而非「按字符」;或手动用空格/标点分隔单词

多数词云工具默认按空格/标点分词。如果输入连续无分隔的文本(如 "helloworld"),会被视为一个词;若工具支持字符级分词,则每个字母独立成词,非预期结果。

2.中文未正确分词,整句当成一个词

✗ 错误输入 "我爱北京天安门",词云只显示一个超大 "我爱北京天安门"
✓ 修复输入 "我爱 北京 天安门"(词间加空格),或确认工具内置中文分词引擎已启用

中文词之间无天然分隔符。若工具未内置中文分词(如 jieba),输入连续中文字符会被整体当作一个词。手动加空格可强制分词。

3.停用词未过滤,高频虚词占据词云

✗ 错误词云中 "的" "了" "是" "在" 等词面积最大,掩盖了实词
✓ 修复在工具的「停用词」设置中,添加或启用内置停用词表(包含 "的" "了" "是" "在" 等)

中文高频虚词(助词、介词、连词)无实际语义,若不排除会主导词频统计,导致词云信息密度低。标准做法是使用通用停用词表。

4.标点符号未清理,混入词云

✗ 错误词云中出现 "," "。" "!" "?" 等标点符号
✓ 修复输入文本前先去除标点,或确认工具默认过滤标点;若工具支持正则替换,可用 [\p{P}] 匹配并移除

标点符号在词频统计中若未被过滤,会被当成独立词项。多数分词库(如 jieba、NLTK)默认保留标点,需显式过滤。

5.大小写未归一化,同一单词被重复统计

✗ 错误输入 "Apple apple APPLE",词云中三个词各占一份,而非合并为一个 "apple"
✓ 修复输入前统一转为小写(apple apple apple),或确认工具开启了「忽略大小写」选项

词频统计默认区分大小写。"Apple" 和 "apple" 被视为不同词项。归一化(全部小写)是标准预处理步骤。

6.数字或特殊字符未处理,干扰词云

✗ 错误词云中出现 "123" "@" "#" 等无意义符号
✓ 修复使用工具的「过滤数字/特殊字符」选项,或手动用正则替换 \d+ 和 [^\w#] 移除

数字和特殊字符通常不是文本分析的目标对象,若不排除会稀释词云的信息价值。建议根据文本类型决定是否保留。

7.输入文本过长导致浏览器卡顿或崩溃

✗ 错误粘贴整本小说(数十万字)到输入框,页面无响应或浏览器标签页崩溃
✓ 修复将文本分段处理(每段 1 万字以内),或使用工具后端处理版本(若有)

纯前端词云工具在浏览器中执行分词与渲染,大文本会占用大量内存和 CPU。建议控制输入长度,或使用支持流式/后端处理的工具。

第三节

工作原理

How It Works

核心公式

TF(w) = count(w) / total_words

变量说明

  • TF(w)词 w 在文本中的词频
  • count(w)词 w 在文本中出现的次数
  • total_words文本中所有词的总数

示例

输入文本为「数据 分析 数据 挖掘 数据 科学」,total_words=6,count(数据)=3,则 TF(数据)=3/6=0.5,即该词出现频率为 50%,词云图中字号按此比例缩放。

输入文本粘贴或上传文本清洗去标点/分词词频统计计数/排序词云渲染图词频表格可导出 CSV词云图片可下载 PNG全部处理在浏览器本地完成,文本不上传服务器
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

6 种主流语言实现,复制即用:

import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt text = "全宝工具站提供文本词云工具,支持中文分词和词频统计。" # 结巴分词,过滤停用词(示例仅保留长度≥2的词) words = [w for w in jieba.lcut(text) if len(w) >= 2] freq = {} for w in words: freq[w] = freq.get(w, 0) + 1 # 生成词云图 wc = WordCloud(font_path='simhei.ttf', width=800, height=400) wc.generate_from_frequencies(freq) plt.imshow(wc, interpolation='bilinear') plt.axis('off') plt.show() # 输出示例:显示词云图,词频为 {'全宝':1,'工具':1,'文本':1,'词云':1,'中文':1,'分词':1,'词频':1,'统计':1}
// 浏览器端:使用 canvas 绘制简单词云(纯前端,无外部依赖) function drawWordCloud(words, canvasId) { const canvas = document.getElementById(canvasId); const ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = '#f0f0f0'; ctx.fillRect(0, 0, canvas.width, canvas.height); words.forEach((word, i) => { const x = 20 + (i % 5) * 120; const y = 40 + Math.floor(i / 5) * 60; ctx.font = `${14 + word.count * 4}px sans-serif`; ctx.fillStyle = `hsl(${i * 30}, 70%, 50%)`; ctx.fillText(word.text, x, y); }); } // 示例调用 drawWordCloud([ { text: '全宝', count: 3 }, { text: '工具', count: 2 }, { text: '词云', count: 2 } ], 'myCanvas'); // 输出:在 canvas 上按词频大小渲染彩色文字
package main import ( "fmt" "strings" "unicode" ) // 简单中文分词(按字符统计词频,适合演示) func wordFreq(text string) map[string]int { freq := make(map[string]int) words := strings.FieldsFunc(text, func(r rune) bool { return !unicode.Is(unicode.Han, r) && !unicode.IsLetter(r) }) for _, w := range words { if len([]rune(w)) >= 2 { freq[w]++ } } return freq } func main() { text := "全宝工具站提供文本词云工具" freq := wordFreq(text) for word, count := range freq { fmt.Printf("%s: %d\n", word, count) } // 输出示例:全宝:1 工具:1 文本:1 词云:1 }
#!/bin/bash # 使用 awk 统计英文单词词频(适合纯英文文本) text="The quick brown fox jumps over the lazy dog. The dog barks." echo "$text" | tr -s '[:space:]' '\n' | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | awk ' { freq[$1]++ } END { for (word in freq) { if (word != "") print word, freq[word] } }' | sort -k2 -nr # 输出示例:the 3 dog 2 quick 1 brown 1 fox 1 ...
import java.util.*; import java.util.stream.*; public class WordFreq { public static void main(String[] args) { String text = "全宝工具站 文本词云 工具"; // 按空格分词,统计词频 Map<String, Long> freq = Arrays.stream(text.split("\\s+")) .filter(w -> w.length() >= 2) .collect(Collectors.groupingBy(w -> w, Collectors.counting())); freq.forEach((k, v) -> System.out.println(k + ": " + v)); // 输出示例:全宝工具站:1 文本词云:1 工具:1 } }
<?php $text = "全宝工具站提供文本词云工具,支持中文分词和词频统计。"; // 使用正则提取中文字符(≥2字) preg_match_all('/[\x{4e00}-\x{9fa5}]{2,}/u', $text, $matches); $words = $matches[0]; $freq = array_count_values($words); foreach ($freq as $word => $count) { echo "$word: $count\n"; } // 输出示例:全宝工具站:1 文本:1 词云:1 工具:1 中文:1 分词:1 词频:1 统计:1 ?>
第五节

常见问题

Q & A
我贴了几千字的文章进去,词云图里怎么全是‘的’‘了’‘在’这些没意义的词?

这是词频统计的常见现象:高频虚词(停用词)会淹没实词。本工具内置了基础中文停用词表(包括‘的’‘了’‘是’‘在’等 200+ 个),但如果你用的是自定义文本或古文,建议在输入框下方的‘忽略词’字段手动添加更多无意义词,比如‘之’‘乎’‘者’‘也’。添加后点击‘重新生成’即可过滤,不需要重新粘贴全文。

词云图里的词大小是按什么算的?越大的词出现次数一定最多吗?

是的,词的大小直接映射该词在文本中的出现频次(即词频,非 TF-IDF 或其他加权)。频次最高的词占据最大字号,其余按比例缩放。注意:如果两个词频次相同,字号也相同;如果文本很短(比如不到 50 字),所有词的字号差异可能不明显,建议增加文本量或调整‘最大词数’参数来突出差异。

为什么我换个浏览器打开,上次做的词云图就没了?能保存吗?

本工具是纯前端实现(FE),所有处理在浏览器本地完成,不上传服务器,因此不提供云端保存功能。词云图生成后,建议直接右键点击图片选择‘另存为’保存 PNG 文件,或截图保存。如果关闭页面后再打开,之前的文本和参数不会保留,需要重新粘贴文本。这是隐私优先的设计——数据不出本地。

支持英文吗?我贴了英文文章,出来的词云全是小写单词,大小写混在一起了。

支持英文,但默认按小写统一处理(即‘Word’和‘word’会合并统计为‘word’),避免大小写重复计数。如果你需要保留原始大小写(比如专有名词‘Apple’和‘apple’区分),可以在‘分词选项’中关闭‘忽略大小写’开关。另外,英文停用词(the/a/an/and等)已默认过滤,无需手动添加。

我贴了 10 万字的小说进去,等了很久没反应,是不是崩溃了?

纯前端工具的处理能力受限于浏览器内存和 JS 执行效率。10 万字文本在普通电脑上可能需要 3-10 秒生成词频统计,但词云布局渲染阶段(尤其是词数较多时)可能更慢。如果页面无响应超过 15 秒,建议:① 减少文本量(比如只贴关键章节,约 1-2 万字);② 在‘最大词数’设置中限制为 100-200 个词,减少渲染负担;③ 关闭其他浏览器标签页释放内存。本工具没有服务器超时限制,但浏览器本身会弹出‘无响应’提示,此时等待即可,不要刷新。

生成的词云图里有些词是乱码或者方框,是工具不支持这种字体吗?

乱码或方框通常是因为所选字体不包含某些字符(比如生僻字、繁体字、emoji)。本工具默认使用系统字体‘Microsoft YaHei’(Windows)或‘PingFang SC’(Mac),覆盖常用简繁中文。如果你输入的文本包含古汉字、注音符号或特殊 Unicode 字符,请在‘字体设置’下拉中选择‘Noto Sans CJK’或‘SimSun’,这些字体字符集更全。如果仍显示方框,说明该字符在当前浏览器/系统中无对应字形,属于系统级限制。

这个工具和 Excel 里的词频统计有什么区别?哪个更准?

Excel 做词频需要手动用公式(如 COUNTIF)或数据透视表,且无法直接处理中文分词——Excel 会把‘我爱北京天安门’当成一个词,而本工具会自动按中文语义切分为‘我’‘爱’‘北京’‘天安门’。在词频计数准确度上两者一致(都是按精确匹配统计),但本工具内置了分词和停用词过滤,省去了手动清洗的步骤。如果需要导出原始词频数据做二次分析,本工具结果区提供‘下载 CSV’按钮。

词云图里能不能只显示我想要的词?比如只显示人名,不显示其他词?

目前没有‘只显示特定词类’的自动过滤功能(比如只提取人名/地名/品牌名)。但可以通过两种方式近似实现:① 在输入文本前,手动删除不需要的句子,只保留含人名的段落;② 在‘忽略词’输入框中,把所有不想显示的词逐一添加(用逗号分隔),这样它们就不会出现在词云中。如果要精准提取人名,建议先使用命名实体识别(NER)工具处理文本,再将识别出的人名列表粘贴到本工具中生成词云。

为什么我手机浏览器上词云图排版乱了,文字挤在一起?

手机屏幕宽度有限(通常 360-414px),而词云布局算法默认按桌面端 800px 宽度计算。当屏幕过窄时,部分长词会被挤到边缘或重叠。建议:① 在手机浏览器中横屏使用,获得更宽布局;② 减少‘最大词数’到 50 个以下,降低重叠概率;③ 生成后截图,不要指望在手机小屏上看到与桌面端一致的排版效果。如果需要手机端专用词云,建议在电脑上生成后保存图片再传到手机。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭