TF-IDF向量计算
时间: 2025-03-05 13:24:53 浏览: 28
### TF-IDF 向量计算方法
TF-IDF (Term Frequency-Inverse Document Frequency) 是一种用于评估词语在一个文档集合中的重要性的统计方法。该方法通过两个主要因素来衡量词的重要性:
- **词频(Term Frequency, TF)**:表示某个词在特定文档中出现的次数占总词数的比例[^1]。
- **逆文档频率(Inverse Document Frequency, IDF)**:用来度量一个词的独特性,即这个词在整个语料库中的普遍程度。IDF 越高意味着这个词汇越具有区分能力[^2]。
#### 计算公式
对于给定的一个词 \( t \),以及包含此词的一篇文档 \( d \),其对应的 TF 和 IDF 可以按照如下方式定义并计算:
\[ \text{tf}(t,d)=\frac{\text { 文档 }d\text { 中词 }t\text { 出现的次数 }}{\sum_{i=1}^{n}\left(\text { 文档 }d\text { 中所有词项出现次数 }\right)} \]
\[ \mathrm{idf}(t,D)=\log \frac{|D|}{|\{d \in D : t \in d\}|+\epsilon}, \quad (\epsilon>0,\text{防止分母为零}) \]
其中,
- \( |D| \) 表示整个数据集中文档的数量;
- \( |\{d \in D : t \in d\}| \) 表示含有词 \( t \) 的文档数量;
最终得到某篇文章里某个词的权重可以由下面公式得出:
\[ w(t,d)=\operatorname{tf-idf}(t,d)=\text { tf }(t,d) * \text { idf }(t,D) \]
#### Python 实现代码
下面是基于上述公式的Python实现例子,使用 `sklearn` 库简化操作过程:
```python
from sklearn.feature_extraction.text import TfidfVectorizer
documents = [
"This is the first document.",
"This document is the second document.",
"And this is the third one.",
"Is this the first document?"
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(documents)
print("Feature names:", vectorizer.get_feature_names_out())
print("\nTF-IDF Matrix:\n", X.toarray())
```
这段程序会输出每篇文档对应于各个特征(单词)的 TF-IDF 权重矩阵。每一列代表不同的词汇,而每一行则对应不同文档下的这些词汇所具有的 TF-IDF 值。
阅读全文
相关推荐




















