词嵌入与聚类如何让计算机理解文本含义
计算机不像人类那样“阅读”单词,但它们可以通过称为词嵌入的数值表示来分析词义。这些向量模型(如 GloVe)将文本转化为机器学习算法可处理的数值数据,用于自动分类新闻文章等任务,准确率可达 99%。
从单词到数字:为什么简单标量不够用
自然语言处理(NLP)的核心挑战是将人类文本转化为机器可读格式。简单地为每个单词分配一个唯一数字(标量)行不通,因为它无法捕捉语义关系。例如,“猫”和“狗”应该比“猫”和“游艇”更接近,但标量表示无法体现这一点。
独热编码:简单却局限
最基本的方法是独热编码,它创建一个长度为 N 的向量(N 为词汇表大小),激活单词位置为 1,其余为 0。
5 个单词词汇表的示例:
- 猫 = [1, 0, 0, 0, 0]
- 狗 = [0, 1, 0, 0, 0]
- 苹果 = [0, 0, 1, 0, 0]
主要缺点:
- 所有向量正交:任意两个不同单词的余弦相似度始终为 0。
- 任意两个向量间的欧几里得距离恒定:√2。
- 忽略语义相似性:“猫”与“狗”的距离和与“游艇”一样远。
这种方法不适合上下文感知任务,如文本分类。
GloVe:捕捉语义的词嵌入
斯坦福大学开发的全局词向量表示(GloVe)克服了独热编码的缺陷。其核心洞见:文本中经常共同出现的单词具有语义关联。该算法分析海量语料库(如维基百科),学习稠密向量表示,使相似单词在向量空间中聚类靠近。
GloVe 优势:
- 利用全局单词共现统计。
- 支持反映语义关系的向量运算。
- 示例:vector("国王") - vector("男人") + vector("女人") ≈ vector("女王").
GloVe 嵌入通常有 50、100、200 或 300 维——远比独热向量紧凑,同时保留丰富语义信息。
从单词到文档:构建文本向量
要分类整篇文档如新闻文章,需要聚合单个单词向量。简单有效的办法是平均:
文档向量 = (Σ 单词向量) / 单词数量
如果文章充斥主题特定单词(如体育新闻的“进球”、“比赛”、“球队”),它们的嵌入会将平均文档向量拉向向量空间的对应区域。
文档比较度量:
- 欧几里得距离:测量向量间直线距离。受文档长度影响。
- 余弦相似度:计算向量间角度余弦。忽略幅度,关注方向——适合长度不一的文本。
对于分类,余弦相似度往往更胜一筹,因为它突出语义接近度,无视文本长度。
用 K-Means 聚类新闻
无标签数据下自动将新闻归类是聚类任务。K-Means 通过文档向量表示完美胜任。
文本聚类中的 K-Means:
- 初始化:随机选取 K 个点作为初始聚类中心(K = 期望类别数)。
- 分配:用距离度量(如余弦)将每个文档分配到最近中心。
- 更新:重新计算每个中心为其聚类中所有向量的均值。
- 迭代:重复 2-3 步直至收敛(分配稳定)。
实际效果:在 500 篇体育、政治、娱乐新闻测试中,GloVe 平均嵌入 + K-Means 聚类准确率达 ~99%,与人工标签高度一致。计算机无需人类般的词义理解,仅凭数字模式就精准分类。
关键要点
- 嵌入将语义转为几何:单词相似性表现为高维空间中的向量接近。
- GloVe 挖掘共现统计:基于海量语料的词频模式训练。
- 单词向量平均超实用:生成可靠文档表示。
- K-Means 聚类精准:无监督按主题分组文本。
- 余弦相似度文本首选:最佳捕捉语义重叠,忽略长度差异。
— Editorial Team
暂无评论。