【NLP】 3. Distributional Similarity in NLP(分布式相似性)

Distributional Similarity in NLP(分布式相似性)

分布式相似性(Distributional Similarity) 是自然语言处理(NLP)中的核心概念,基于"相似的单词出现在相似的上下文中"这一假设。它用于衡量单词之间的相似性,广泛应用于词向量、信息检索、文本分类等任务。

1. 分布式假设(Distributional Hypothesis)

分布式相似性基于以下假设:

"You shall know a word by the company it keeps."

------ J. R. Firth (1957)

即,两个单词如果经常出现在相似的上下文中,那么它们的语义相似

例如:

  • "猫" 和 "狗" 经常出现在 "宠物"、"喜欢吃"、"可爱"等词的上下文中,因此它们的意义接近。
  • "汽车" 和 "自行车" 都出现在 "交通工具"、"驾驶"、"速度" 等上下文中,因此它们可能具有相似性。

2. 计算分布式相似性的方法

2.1 共现矩阵(Co-occurrence Matrix)

最基础的分布式相似性计算方法是共现矩阵

  • 统计一个词与不同词的共现次数,形成一个词-词矩阵。
  • 每个单词的向量由其共现次数构成。

示例:

汽车 自行车 可爱 速度
5 3 0 0 10 0
3 5 0 0 8 0
汽车 0 0 6 4 0 10
自行车 0 0 4 6 0 9

问题:

  • 稀疏性:矩阵可能非常大,大量词对没有共现。
  • 维度灾难:单词的维度取决于整个词汇表大小,计算开销大。

2.2 词向量(Word Embeddings)

为了解决稀疏性问题,使用低维向量表示单词

  1. 基于共现矩阵的降维方法
    • PCA(主成分分析)
    • SVD(奇异值分解)
    • PPMI(正点互信息)
  2. 预测式方法(Neural-based Models)
    • Word2Vec(CBOW & Skip-Gram)
    • GloVe(基于矩阵分解)
    • FastText(子词信息)
    • BERT & Transformer Embeddings(上下文相关词向量)

示例:

复制代码
from gensim.models import Word2Vec

# 训练 Word2Vec
sentences = [["猫", "喜欢", "鱼"], ["狗", "喜欢", "骨头"], ["汽车", "行驶", "速度", "快"]]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=0)

# 获取 "猫" 的词向量
vector = model.wv["猫"]
print(vector)

3. 计算词相似性的方法

3.1 余弦相似度(Cosine Similarity)

余弦相似度衡量两个词向量的夹角:

  • sim ( A , B ) = A ⋅ B ∥ A ∥ ∥ B ∥ \text{sim}(A, B) = \frac{A \cdot B}{\|A\| \|B\|} sim(A,B)=∥A∥∥B∥A⋅B

    结果范围:[][-1,1][−1,1]

  • 1 表示完全相似,0 表示不相关,-1 表示完全相反

3.2 欧几里得距离(Euclidean Distance)

d ( A , B ) = ∑ ( A i − B i ) 2 d(A, B) = \sqrt{\sum (A_i - B_i)^2} d(A,B)=∑(Ai−Bi)2

  • 距离越小,词的相似度越高。
  • 适用于低维向量。

3.3 Jaccard 相似度

用于离散词袋模型

J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B) = \frac{|A \cap B|}{|A \cup B|} J(A,B)=∣A∪B∣∣A∩B∣

  • 适用于 n-gram、关键词提取。
相关推荐
一水鉴天1 分钟前
整体设计 全面梳理复盘 之27 九宫格框文法 Type 0~Ⅲ型文法和 bnf/abnf/ebnf 之1
人工智能·状态模式·公共逻辑
极客BIM工作室6 分钟前
GAN vs. VAE:生成对抗网络 vs. 变分自编码机
人工智能·神经网络·生成对抗网络
咋吃都不胖lyh7 分钟前
小白零基础教程:安装 Conda + VSCode 配置 Python 开发环境
人工智能·python·conda
minhuan8 分钟前
构建AI智能体:八十九、Encoder-only与Decoder-only模型架构:基于ModelScope小模型的实践解析
人工智能·模型架构·encoder-only架构·decoder-only架构
rit843249911 分钟前
基于MATLAB的PCA+SVM人脸识别系统实现
人工智能·算法
一 铭21 分钟前
Claude Agent Skills:一种基于 Prompt 扩展的元工具架构
人工智能·大模型·llm·prompt
连线Insight26 分钟前
小马智行港股上市:自动驾驶从“技术追跑”到“商业领跑”的里程碑
人工智能
xier_ran28 分钟前
深度学习:为什么不能将多层神经网络参数全部初始化为零以及如何进行随机初始化
人工智能·深度学习
扫地僧98529 分钟前
[特殊字符]用于糖尿病视网膜病变图像生成的生成对抗网络(GAN)
人工智能·神经网络·生成对抗网络
文心快码BaiduComate33 分钟前
疯了!双11,百度文心快码帮我省钱又赚钱?
人工智能