跳到主要内容

TF-IDF

一、直观理解:又常见于本文、又少见于全文的词更“关键”​

TF-IDF(Term Frequency–Inverse Document Frequency)给文档中的词赋权:在某文档里出现越多(TF)权重倾向越高,但若该词在很多文档都出现(如“的”“我们”),则 IDF 变小,总权重被压低。于是“文档特有关键词”会排到前面。

它是文本挖掘的基础表示,可用于检索、关键词抽取、作为分类/聚类的输入特征。

二、适用场景与优缺点​

类型说明
适用场景中文分词后的关键词;文档相似度;朴素文本特征;赛题评论/新闻语料分析。
核心优点简单高效;可解释;无需标签;实现门槛低。
局限与缺点词袋假设丢语序;近义词割裂;短文本稀疏;不如现代嵌入语义丰富。

三、核心原理​

对词 tt、文档 dd、语料 DD:

tf(t,d)=ft,d∑t′ft′,d或1+log⁡ft,d\mathrm{tf}(t,d)=\frac{f_{t,d}}{\sum_{t'}f_{t',d}} \quad\text{或}\quad 1+\log f_{t,d} idf(t,D)=log⁡∣D∣1+∣{d∈D:t∈d}∣\mathrm{idf}(t,D)=\log\frac{|D|}{1+|\{d\in D:t\in d\}|} tf-idf(t,d)=tf(t,d)×idf(t,D)\mathrm{tf\text{-}idf}(t,d)=\mathrm{tf}(t,d)\times\mathrm{idf}(t,D)

文档可表示为稀疏向量,相似度常用余弦。

四、实践要点​

  1. 中文先分词与去停用词;
  2. 统一大小写/全半角;
  3. 限制词表(高低频裁剪);
  4. 解释时列出每篇 top-k 词。

五、MATLAB 示例​

%% 简化 TF-IDF(已分词的词袋)
docs = {
["数学" "建模" "优化" "模型" "数学"]
["建模" "统计" "回归" "模型"]
["图像" "滤波" "边缘" "图像" "分割"]
};

% 建词表
vocab = unique([docs{:}]);
N = numel(docs); V = numel(vocab);
tf = zeros(N, V);
for i=1:N
for j=1:V
tf(i,j) = sum(docs{i}==vocab(j));
end
if sum(tf(i,:))>0
tf(i,:) = tf(i,:) / sum(tf(i,:));
end
end
df = sum(tf > 0, 1);
idf = log((N)./(1+df)) + 1;
tfidf = tf .* idf;

for i=1:N
[w, ord] = sort(tfidf(i,:), "descend");
fprintf("文档%d Top词: ", i);
for k=1:min(3,V)
fprintf("%s(%.3f) ", vocab(ord(k)), w(k));
end
fprintf("\n");
end

% 余弦相似度
S = tfidf * tfidf';
nrm = sqrt(sum(tfidf.^2,2));
S = S ./ (nrm*nrm');
disp("余弦相似度矩阵:"); disp(S);

六、如何解释结果​

说明预处理、TF/IDF 定义、每类文档关键词与文档相似结构。避免把高频但无信息量的词当发现。

七、常见误区​

1. 不分词直接按字​

2. 不去停用词​

3. 把 TF-IDF 当主题模型​

它不自动给出“主题-词分布”。

4. 短文本上解释过度​

附:建模流程中的落地清单(TF-IDF)​

要把方法真正写进论文,建议补齐以下模块,而不是只贴一个最终数字。

1. 问题对齐与假设​

说明题目中的输入/输出如何映射到本方法,并显式列出关键假设。假设越清楚,后面的敏感性分析越有对象。

2. 关键关系​

tf-idf=tf×idf\mathrm{tf\text{-}idf}=\mathrm{tf}\times\mathrm{idf},抬高文档特有词、压低处处出现的词。

3. 补充实现片段​

% 见正文词袋例子;此处强调余弦
a=[0.1 0.8 0]; b=[0.1 0.7 0.1]; cosab=dot(a,b)/(norm(a)*norm(b)); disp(cosab);

4. 报告要素​

预处理、公式细节、top 词、文档相似度。

5. 不适用情形​

不分词;把 TF-IDF 当主题模型。

6. 与验证章节的衔接​

至少做一项:参数扰动、与基线方法对照、极限情形检查。把“方法正文”和“全局方法论(第15门类)”连起来,结论才站得住。

附:结果解读示例与常见审稿问题​

结果解读示例​

假设已经得到主要数值输出。写作时应把数字翻译回题目语言,例如:

  • “在基准参数下指标为 A;当关键参数变化 ±10% 时,指标波动约 B%,方案排序未变。”
  • “算法在 R 次独立重复中有 S 次收敛到同一结构解,说明结论对初始化不敏感。”
  • “与简化基线相比,本方法在验证集误差降低 Δ,但计算时间增加,权衡后仍采用。”

如果只有表格没有句子,评委很难判断你是否真正理解结果。

参数与数据的最小敏感性​

即使篇幅有限,也建议给出一个小表:选取 1–3 个最关键参数,各取偏低/基准/偏高三档,报告输出变化。这比大段空泛的“模型具有较强鲁棒性”更有说服力。

可复现信息​

在附录或正文脚注中记录:软件版本、随机种子、关键容差、数据截取时间范围。另一人按文档应能得到同量级结果。

审稿式自问​

  1. 方法假设在题目数据上是否可检查?
  2. 若最敏感参数估计错误 20%,结论是否翻盘?
  3. 是否存在更简单方法达到相近效果?
  4. 图表是否都能用一句话概括?
  5. 局限是否写得具体,而不是套话?

把上述自问的答案写进论文,方法章节会明显更“像完成了建模”,而不是“像完成了公式摘录”。

八、小结​

TF-IDF 用词频与逆文档频提升特有词权重,是文本特征化与关键词分析的基线。它轻量可解释,适合作为更复杂文本模型之前的标准第一步。