从 TF-IDF 到 Word2Vec:让推荐系统更懂语义
在推荐系统中,“基于内容的推荐”是一种经典而实用的策略。
它的核心思想是:根据物品内容本身的特征来计算相似度,从而实现推荐。
本文将带你从最基础的 TF-IDF,一步步理解到语义层面的 Word2Vec,通过实例讲解这些向量化技术如何让推荐系统“更懂内容”。
一、基于内容的推荐是什么?
“基于内容的推荐”(Content-Based Recommendation)指的是:
根据商品自身的内容信息(如标题、描述、标签)提取特征,通过内容相似度来推荐相似的商品。
📦 特点:
- 不依赖用户的历史行为数据;
- 只要有内容,就能进行推荐;
- 适合系统冷启动或商品冷启动阶段(无用户数据)。
💡 举例:
假设你正在浏览“苹果手机”,系统可能会推荐:
- “华为手机”
- “小米手机”
- “三星手机”
因为它们的内容描述(关键词、属性)相似。
二、如何提取商品特征向量?
要实现基于内容的推荐,第一步是将商品内容转化为向量,也就是 embedding。
常见的三种传统方法是:
- 词频向量(Bag of Words)
- N元语法(N-gram)
- TF-IDF(词频-逆文档频率)
下面我们用一个具体例子来说明这三种方法。
三、案例:三个商品的相似度计算
商品 | 描述 |
---|---|
A | 苹果手机,高清摄像头,性能强大 |
B | 小米手机,拍照清晰,性价比高 |
C | 苹果平板,屏幕大,续航持久 |
目标:
当用户浏览商品A(苹果手机)时,系统应推荐最相似的商品。
1️⃣ 词频向量(Bag of Words)
首先,对文本进行分词:
商品 | 分词结果 |
---|---|
A | [苹果, 手机, 高清, 摄像头, 性能, 强大] |
B | [小米, 手机, 拍照, 清晰, 性价比, 高] |
C | [苹果, 平板, 屏幕, 大, 续航, 持久] |
然后,将所有出现过的词组成词表:
[苹果, 小米, 手机, 高清, 摄像头, 性能, 强大, 拍照, 清晰, 性价比, 高, 平板, 屏幕, 大, 续航, 持久]
再统计每个词在商品中的出现次数(出现记1,未出现记0):
词 | 商品A | 商品B | 商品C |
---|---|---|---|
苹果 | 1 | 0 | 1 |
小米 | 0 | 1 | 0 |
手机 | 1 | 1 | 0 |
高清 | 1 | 0 | 0 |
摄像头 | 1 | 0 | 0 |
性能 | 1 | 0 | 0 |
强大 | 1 | 0 | 0 |
拍照 | 0 | 1 | 0 |
清晰 | 0 | 1 | 0 |
性价比 | 0 | 1 | 0 |
高 | 0 | 1 | 0 |
平板 | 0 | 0 | 1 |
屏幕 | 0 | 0 | 1 |
大 | 0 | 0 | 1 |
续航 | 0 | 0 | 1 |
持久 | 0 | 0 | 1 |
→ 这就形成了最原始的“词袋模型”(Bag of Words)。
📈 商品A的向量是 [1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0](高维稀疏向量)
同理也可以得出商品B、C的向量,然后通过余弦公式进行相似度计算。
但它有个明显缺点:忽略了词序和语义。
2️⃣ N元语法(N-gram)
N-gram 会考虑相邻词的组合,捕捉部分上下文信息。
比如 2-gram:
- 商品A: [“苹果 手机”, “手机 高清”, “高清 摄像头”, “摄像头 性能”, “性能 强大”]
- 商品B: [“小米 手机”, “手机 拍照”, “拍照 清晰”, “清晰 性价比”, “性价比 高”]
相比单个词的词袋法,N-gram 能让“苹果手机”这样的组合特征更加独特,提高推荐的准确性。
3️⃣ TF-IDF(词频-逆文档频率)
TF-IDF 在词频的基础上加入“词的重要性”概念。
它的核心思想是:
如果一个词在当前文档中频繁出现,但在所有文档中很少出现,那么这个词更能代表该文档的特征。
公式:
[
\text{TF-IDF}(t, d) = TF(t, d) \times \log\frac{N}{DF(t)}
]
例如:
- “苹果”只出现在A和C → 区分度高,权重大;
- “手机”出现在A和B → 区分度低,权重小。
计算完后可以得到:
词 | TF-IDF(A) | TF-IDF(B) | TF-IDF© |
---|---|---|---|
苹果 | 0.35 | 0.00 | 0.33 |
小米 | 0.00 | 0.45 | 0.00 |
手机 | 0.20 | 0.15 | 0.00 |
高清 | 0.40 | 0.00 | 0.00 |
性能 | 0.25 | 0.00 | 0.00 |
平板 | 0.00 | 0.00 | 0.45 |
续航 | 0.00 | 0.00 | 0.35 |
接着用余弦相似度计算相似程度:
商品对比 | 相似度 |
---|---|
A vs B | 0.25 |
A vs C | 0.60 |
✅ 结果:
“苹果平板(C)”与“苹果手机(A)”更相似,因此系统会推荐 C。
四、Word2Vec:让推荐更“懂语义”
前面三种方法只关注“词出现的统计信息”,并不真正理解语义。
这就是 Word2Vec 出现的原因。
1️⃣ Word2Vec 的定义
Word2Vec 是一种将词语转换为低维稠密向量的算法,能让计算机理解词语之间的语义关系。
它的核心思想是:
相似的词出现在相似的上下文中。
2️⃣ 举个例子
训练语料:
我 买 了 一个 苹果手机
我 买 了 一个 华为 手机
他 喜欢 吃 苹果
通过上下文关系,模型会学到:
- “苹果手机” ≈ “华为手机”
- “苹果” 在不同上下文中具有不同语义
训练完后,可能得到以下向量(简化示意):
词 | 向量 |
---|---|
苹果手机 | [0.8, 0.6] |
华为手机 | [0.7, 0.7] |
苹果 | [0.1, 0.9] |
手机 | [0.7, 0.5] |
相似度计算结果:
词对 | 余弦相似度 |
---|---|
苹果手机 vs 华为手机 | 0.98 ✅ |
苹果手机 vs 手机 | 0.92 ✅ |
苹果手机 vs 苹果 | 0.45 ❌ |
Word2Vec 能正确地把“苹果手机”和“华为手机”放在语义相近的空间中。
3️⃣ Word2Vec 的语义算术
Word2Vec 的一个神奇特性是“语义计算”:
向量(国王) - 向量(男人) + 向量(女人) ≈ 向量(女王)
向量(巴黎) - 向量(法国) + 向量(意大利) ≈ 向量(罗马)
在推荐系统中:
向量(苹果手机) - 向量(苹果) + 向量(华为) ≈ 向量(华为手机)
说明模型真正理解了词语间的关系结构。
五、TF-IDF vs Word2Vec 对比总结
对比项 | TF-IDF | Word2Vec |
---|---|---|
核心思想 | 统计词频 | 学习语义 |
向量性质 | 稀疏、高维 | 稠密、低维 |
是否理解语义 | ❌ 否 | ✅ 是 |
计算复杂度 | 低 | 略高 |
推荐效果 | 一般 | 更精准 |
适用场景 | 简单文本 | 复杂文本、长描述 |
六、在推荐系统中的应用场景
场景 | 说明 |
---|---|
商品冷启动 | 新商品没有行为数据,可以通过文本 embedding 找到相似商品 |
内容召回 | 通过语义相似度快速找到语义上接近的候选集 |
个性化推荐 | 将用户浏览过的商品 embedding 平均化,得到“用户兴趣向量” |
七、结语
TF-IDF 是文本特征提取的经典起点,但它只看到“词的出现”,看不到“词的含义”。
Word2Vec 则通过上下文学习,让模型真正理解词语之间的语义联系。
从统计到语义,从词频到向量 ——
推荐系统正因为这些“向量革命”,才越来越聪明,也越来越懂你。