词频统计怎么做?文章关键词怎么提
一、先决定「什么是词」:三种切分口径
词频统计的第一步不是数数,而是定义计数单位。同一段中文用不同口径,结果完全不同:
| 口径 | 说明 | 适合 |
|---|---|---|
| 单字(char) | 每个汉字算一个 | 快速看用字分布 |
| 二元组(cn2) | 相邻两字成词 | 中文关键词提取的性价比最高方案 |
| 三元组(cn3) | 相邻三字成词 | 找完整词组与固定搭配 |
以这段文字为例:
人工智能和机器学习是人工智能的重要方向,机器学习需要数据,数据质量决定人工智能的效果。
按单字统计(共 40 字、去重 24 个),前 6 名:
| 字 | 人 | 工 | 智 | 能 | 习 | 器 |
|---|---|---|---|---|---|---|
| 次数 | 3 | 3 | 3 | 3 | 2 | 2 |
问题很明显:「人工」「智能」被拆成了四个字,每个都各 3 次,你没法判断真正的关键词是「人工」还是「能工」。
按二元组统计,前 6 名立刻清楚:
| 词 | 人工 | 工智 | 智能 | 器学 | 学习 | 数据 |
|---|---|---|---|---|---|---|
| 次数 | 3 | 3 | 3 | 2 | 2 | 2 |
「人工 3 次、智能 3 次」——主题暴露出来了。当然二元组也有噪声:「工智」「器学」这种跨词边界的组合是切分算法的副产品,需要人工筛掉。
按三元组会得到「人工智 3、工智能 3、器学习 2」——颗粒度更粗,能看出叠加搭配,但跨词边界的碎片也更多(「器学习」把「机器」与「学习」切在了中间)。所以三元组适合观察搭配,不适合直接当关键词列表用。
二、英文走词口径,但停用词要过滤
英文是天然分词的语言,直接按词统计即可。实测:
Natural language processing helps machines understand language. Language models need data, and data quality matters.
| 词 | language | data | and | helps | machines |
|---|---|---|---|---|---|
| 次数 | 3 | 2 | 1 | 1 | 1 |
and 排进前五就是噪声。开启停用词过滤后:总词数 15 → 14(and 被剔除),前五名变成 language 3、data 2、helps 1、machines 1、matters 1。
停用词表收录的是 a、an、the、and、or、but、if、of、to、in、on、at、by、for、with、from、is、are、was、were、be、it、its 这类高频虚词。它们出现频率高但信息量低——「的」在中文里也是一样,所以中文关键词提取同样需要把「的、了、是、在」排除。
三、词频只是起点,不是终点
词频高 ≠ 关键词好,至少还要过三关:
- 排除主题词本身:如果整篇都在讲「人工智能」,那它出现 30 次也是理所当然,反而不适合当关键词;
- 看区分度:一个词在本文多、在别的文章少,才是特征词。只看本文频次会把「数据」「方法」这类通用词排到前面;
- 看搜索意图:真正的关键词是用户会去搜的词。文章里高频的书面语,未必是大家会用的搜索词。
实操顺序:词频 → 去掉停用词与主题词 → 保留有区分度的候选 → 用搜索量或搜索建议验证。工具负责第一步(把候选摆出来),后三步靠判断。
四、顺带一个:命名法的批量转换
整理关键词、写代码、建表时经常要在不同命名法之间转换。工具支持十种口径,同一个 hello world_font-size 转换结果:
| 命名法 | 结果 | 用途 |
|---|---|---|
| camelCase | helloWorldFontSize | JavaScript、Java 变量 |
| PascalCase | HelloWorldFontSize | 类名、组件名 |
| snake_case | hello_world_font_size | Python、数据库字段 |
| kebab-case | hello-world-font-size | CSS 类名、URL |
| CONSTANT_CASE | HELLO_WORLD_FONT_SIZE | 常量 |
| Title Case | Hello World_font-size | 标题 |
| sentence case | Hello world_font-size | 句子 |
| UPPER / lower | 全大写 / 全小写 | 规范化 |
注意下划线与连字符的差异会被保留(world_font 在 Title Case 下没被拆开),因为工具无法确定它们是分隔符还是内容的一部分——批量转换后一定抽样检查。
五、字数统计不只看「字数」
一篇文章的「字数」至少有六个口径:
| 指标 | 含义 | 例子 |
|---|---|---|
| chars | 总字符数(含空格) | 15 |
| charsNoWs | 不含空白 | 13 |
| cjk | 中日韩汉字数 | 7 |
| latinWords | 英文单词数 | 1 |
| words | 综合词数 | 8 |
| lines / paragraphs | 行数 / 段数 | 2 / 1 |
| readingSec | 预计阅读秒数 | 2 秒 |
投稿、按字数计酬、写 meta description 时用的口径不同,要求「3000 字」时先确认是汉字数还是含标点的总字符数——两者能差 20% 以上。
六、直接算
→ 词频统计:单字、二元组、三元组与英文词四种口径,含停用词过滤
→ 文本处理工具:批量替换、去除空行等统计前的整理
→ 大小写与命名转换:camelCase、snake_case 等十种命名法互转
→ 字数统计:字符、汉字、词数、行数与阅读时长
本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。