词频统计怎么做?文章关键词怎么提

一、先决定「什么是词」:三种切分口径

词频统计的第一步不是数数,而是定义计数单位。同一段中文用不同口径,结果完全不同:

口径说明适合
单字(char)每个汉字算一个快速看用字分布
二元组(cn2)相邻两字成词中文关键词提取的性价比最高方案
三元组(cn3)相邻三字成词找完整词组与固定搭配

以这段文字为例:

人工智能和机器学习是人工智能的重要方向,机器学习需要数据,数据质量决定人工智能的效果。

按单字统计(共 40 字、去重 24 个),前 6 名:

次数333322

问题很明显:「人工」「智能」被拆成了四个字,每个都各 3 次,你没法判断真正的关键词是「人工」还是「能工」。

按二元组统计,前 6 名立刻清楚:

人工工智智能器学学习数据
次数333222

「人工 3 次、智能 3 次」——主题暴露出来了。当然二元组也有噪声:「工智」「器学」这种跨词边界的组合是切分算法的副产品,需要人工筛掉。

按三元组会得到「人工智 3、工智能 3、器学习 2」——颗粒度更粗,能看出叠加搭配,但跨词边界的碎片也更多(「器学习」把「机器」与「学习」切在了中间)。所以三元组适合观察搭配,不适合直接当关键词列表用。

二、英文走词口径,但停用词要过滤

英文是天然分词的语言,直接按词统计即可。实测:

Natural language processing helps machines understand language. Language models need data, and data quality matters.
languagedataandhelpsmachines
次数32111

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 这类高频虚词。它们出现频率高但信息量低——「的」在中文里也是一样,所以中文关键词提取同样需要把「的、了、是、在」排除。

三、词频只是起点,不是终点

词频高 ≠ 关键词好,至少还要过三关:

  1. 排除主题词本身:如果整篇都在讲「人工智能」,那它出现 30 次也是理所当然,反而不适合当关键词;
  2. 看区分度:一个词在本文多、在别的文章少,才是特征词。只看本文频次会把「数据」「方法」这类通用词排到前面;
  3. 看搜索意图:真正的关键词是用户会去搜的词。文章里高频的书面语,未必是大家会用的搜索词。

实操顺序:词频 → 去掉停用词与主题词 → 保留有区分度的候选 → 用搜索量或搜索建议验证。工具负责第一步(把候选摆出来),后三步靠判断。

四、顺带一个:命名法的批量转换

整理关键词、写代码、建表时经常要在不同命名法之间转换。工具支持十种口径,同一个 hello world_font-size 转换结果:

命名法结果用途
camelCasehelloWorldFontSizeJavaScript、Java 变量
PascalCaseHelloWorldFontSize类名、组件名
snake_casehello_world_font_sizePython、数据库字段
kebab-casehello-world-font-sizeCSS 类名、URL
CONSTANT_CASEHELLO_WORLD_FONT_SIZE常量
Title CaseHello World_font-size标题
sentence caseHello 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 等十种命名法互转

字数统计:字符、汉字、词数、行数与阅读时长

本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。