神经网络之PPMI矩阵

🧩 一、问题回顾:为什么要用 PPMI?

在共现矩阵 中,我们统计了词与词共同出现的次数。

但**"次数"并不能直接反映语义关联强度**:

  • 高频词(如"的""是""一个")会出现在几乎所有上下文里 → 共现次数大,但语义关联弱。
  • 低频但特定搭配的词(如"苹果--吃")共现次数少,但语义关联强。

👉 所以,我们需要一种度量能体现**"某两个词的共现是偶然还是有意义"**。

这就引出了 PMI(Pointwise Mutual Information)。


🧮 二、PMI 的定义

PMI 衡量两个事件(这里是两个词)之间的关联程度:

PMI(wi,wj)=log⁡P(wi,wj)P(wi),P(wj) PMI(w_i, w_j) = \log \frac{P(w_i, w_j)}{P(w_i) , P(w_j)} PMI(wi,wj)=logP(wi),P(wj)P(wi,wj)

含义:

  • 如果两个词独立出现,则 (P(wi,wj)=P(wi)P(wj))( P(w_i, w_j) = P(w_i) P(w_j) )(P(wi,wj)=P(wi)P(wj)),PMI = 0
  • 如果它们比独立出现更频繁地一起出现 → PMI > 0
  • 如果它们几乎从不一起出现 → PMI < 0

🧠 举例

假设语料统计结果如下:

词对 共现次数 PMI 含义
(吃, 苹果) 很多 PMI 高(语义相关)
(吃, 书) 几乎没有 PMI 低(语义不相关)
(的, 苹果) 次数大但普遍 PMI≈0(无特异语义)

⚙️ 三、PMI 的计算公式(基于计数矩阵)

设:

  • (C(wi,wj)):词(wi)与(wj)( C(w_i, w_j) ):词 (w_i) 与 (w_j)(C(wi,wj)):词(wi)与(wj) 的共现次数
  • (C(wi)=∑jC(wi,wj))( C(w_i) = \sum_j C(w_i, w_j) )(C(wi)=∑jC(wi,wj)):词 (w_i) 的总出现次数
  • (N=∑i,jC(wi,wj))( N = \sum_{i,j} C(w_i, w_j) )(N=∑i,jC(wi,wj)):所有共现对的总次数

则:
P(wi,wj)=C(wi,wj)N,P(wi)=C(wi)N,P(wj)=C(wj)N P(w_i, w_j) = \frac{C(w_i, w_j)}{N} \quad , \quad P(w_i) = \frac{C(w_i)}{N} \quad , \quad P(w_j) = \frac{C(w_j)}{N} P(wi,wj)=NC(wi,wj),P(wi)=NC(wi),P(wj)=NC(wj)

代入:
PMI(wi,wj)=log⁡C(wi,wj)⋅NC(wi)⋅C(wj) PMI(w_i, w_j) = \log \frac{C(w_i, w_j) \cdot N}{C(w_i) \cdot C(w_j)} PMI(wi,wj)=logC(wi)⋅C(wj)C(wi,wj)⋅N


💡 四、PPMI(正点互信息)

问题:PMI 可能为负(当两个词比随机还少共现)。

负值往往无意义且影响向量分析,于是只保留正值:

PPMI(wi,wj)=max⁡(PMI(wi,wj),0) PPMI(w_i, w_j) = \max(PMI(w_i, w_j), 0) PPMI(wi,wj)=max(PMI(wi,wj),0)

即:

只保留"比随机更相关"的词对。


🧱 五、从共现矩阵 → PPMI 矩阵

假设有一个简单语料:

复制代码
我 爱 吃 苹果 和 香蕉

窗口大小 = 1

共现矩阵(示意):

目标\上下文 我 爱 吃 苹果 和 香蕉
我 0 1 0 0 0 0
爱 1 0 1 0 0 0
吃 0 1 0 1 0 0
苹果 0 0 1 0 1 0
和 0 0 0 1 0 1
香蕉 0 0 0 0 1 0

我们可依次计算:
PPMI(wi,wj)=max⁡(log⁡C(wi,wj)⋅NC(wi)C(wj),0) PPMI(w_i, w_j) = \max\left( \log \frac{C(w_i, w_j) \cdot N}{C(w_i)C(w_j)}, 0 \right) PPMI(wi,wj)=max(logC(wi)C(wj)C(wi,wj)⋅N,0)

得到一个实数矩阵(多数值为 0,少数高关联词如 "吃--苹果" 会有较高的正值)。


🧮 六、PPMI 矩阵的特点

特点 说明
去除了频率偏差 高频功能词不再主导矩阵
凸显语义关系 "吃--苹果""狗--汪汪"等搭配得到高权重
稀疏但信息集中 仅保留真正相关的词对
可进一步降维 用 SVD → 得到低维稠密语义向量(LSA、GloVe)

🧠 七、直觉理解

想象二维空间:

共现情况 概率 PMI/PPMI 含义
"苹果--吃" 经常一起 高于独立预期 PPMI↑,语义相关
"苹果--跑" 几乎无共现 低于独立预期 PPMI=0
"的--苹果" 经常出现但无特异性 接近独立 PPMI≈0

因此,PPMI矩阵是共现矩阵的"语义放大版"。


✅ 八、总结对比

项目 共现矩阵 PPMI矩阵
元素含义 共现次数 语义关联强度(信息量)
值域 0 ~ ∞(整数) 0 ~ 实数(通常 <10)
高频词 权重大 权重小(被修正)
语义性 弱 强
后续可操作性 可直接降维(SVD) 常作为 GloVe 的输入
相关推荐
段一凡-华北理工大学8 小时前
工业智能体:从Codex/Claude到项目实战~系列文章05:从“AI助手“到“工业智能体“:能力跃迁与落地范式
人工智能·python·claude·codex·工业智能体·高炉炼铁智能化
岁月宁静9 小时前
什么是 Agent:从"会聊天"到"会做事"
人工智能·python
岁月宁静10 小时前
AI 应用开发工程师简历怎么写:HR 初筛、技术复筛、面试追问,三道关卡各看什么?
人工智能·python·面试
老金带你玩AI10 小时前
全球股市跌麻了:AI在进化,牛马在买单
人工智能
我qq不是4515165212 小时前
WorkBuddy下载体验
人工智能·经验分享·ai·workbuddy
IT_陈寒13 小时前
Redis雪崩把我坑惨了,这是5年经验的教训
前端·人工智能·后端
心祭丫丫13 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
海螺_AIHCC13 小时前
LLM 返回的 JSON 十次坏三次,别急着骂模型——60 行容错解析器先兜住(附可运行代码)
人工智能
露天赏雪13 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel