云计算百科
云计算领域专业知识百科平台

词向量转化

目录

词向量转化:让机器读懂人类语言的关键一步

一.自然语言处理(NLP)应用场景

二.什么是词向量

三.为什么需要词向量

四.词向量转化

1.目的

2.方法

五.词向量的局限性和发展

六.总结

七.代码演示(基于统计)

1.将下列代码中的texts中的内容转化为词向量


词向量转化:让机器读懂人类语言的关键一步

我们知道TF-IDF可以用于提取文章关键词,但仅适用于关键词提取,无法直接用于文本分类或理解句子含义。

在自然语言处理(NLP)领域,词向量(Word Embedding)是一项革命性的技术,它解决了计算机难以理解人类语言的核心问题。本文将深入探讨词向量的概念、原理、主流算法及其实践应用,帮助你全面理解这一 NLP 基础技术。

一.自然语言处理(NLP)应用场景

  • 文本分类:区分文章类型(如新闻,政治,财经)
  • 情感分析:判断评论的正负面(如好评或差评)
  • 文本对话:实现问答交互(大模型支持)
  • 网络平台责任:需自动检测并屏蔽攻击性评论,防止网络暴力

二.什么是词向量

词向量是将自然语言中的词语转换为数值向量的技术。简单来说,就是给每个词分配一个固定长度的数字列表,使得这些数字能够捕捉词语的语义信息。

例如,"国王" 可能被表示为 [0.2, 0.5, -0.1, 0.3, …],而 "女王" 的向量会与 "国王" 的向量非常相似,因为它们在语义上接近。

三.为什么需要词向量

在词向量技术出现之前,计算机处理文本主要采用以下两种方式:

  • one-hot 编码:为每个词创建一个独热向量,向量长度等于词汇表大小,只有对应词的位置为 1,其余为 0。

    缺点:维度灾难、无法表示语义关系、向量稀疏

  • 词袋模型(Bag of Words):仅统计词的出现频率,忽略词序和语义。

    缺点:丢失上下文信息、无法捕捉词语间的关联

  • 词向量则完美解决了这些问题:

    • 低维度表示,避免维度灾难
    • 能够捕捉词语的语义和语法特征
    • 相似的词具有相似的向量表示
    • 支持向量运算,如 "国王 – 男人 + 女人≈女王"

    四.词向量转化

    1.目的

    目的是将单词(中/英)转化为数值向量,使模型能够处理文本数据

    2.方法

    两种方法:

    • ①基于统计:统计单词频率,根据每个特征单词在句子中出现次数转化词向量
    • ②基于神经网络:训练单词特征(如含义、关联性),更先进但需深度学习基础。

    五.词向量的局限性和发展

    尽管词向量带来了巨大进步,但传统词向量仍有局限性:

    • 静态词向量:一个词只有一个向量表示,无法处理一词多义
    • 缺乏上下文感知:相同的词在不同语境下含义不同,但向量相同

    为解决这些问题,近年来出现了基于预训练语言模型的动态词向量技术,如 BERT、GPT 等。这些模型能够根据上下文生成不同的词向量,更好地捕捉语言的丰富性和歧义性。

    六.总结

    词向量技术是自然语言处理领域的重要突破,它使得计算机能够真正 "理解" 词语的含义,为后续的复杂 NLP 任务奠定了基础。从 Word2Vec 到 BERT,词向量技术不断发展,推动着 NLP 领域的进步。

    无论是从事 NLP 研究还是应用开发,深入理解词向量的原理和应用都是非常必要的。随着技术的不断发展,我们有理由相信,机器对人类语言的理解会越来越深入和精准。

    七.代码演示(基于统计)

    1.将下列代码中的texts中的内容转化为词向量

    导入相关库

    from sklearn.feature_extraction.text import CountVectorizer
    texts=['dog cat fish','dog cat cat','fish bird','fish bir=d']

    使用CountVectorizer类实现词向量转化:

    • 参数max_features限制提取的单词数量。
    • 参数ngram_range控制单词组合范围(如(1,3)表示提取1到3个连续单词的组合)。

    cv=CountVectorizer(max_features=6,ngram_range=(1,2))

    训练出词库并将文本内容转化为词向量fit_transform,

    cv_fit=cv.fit_transform(texts)
    print(cv_fit)

    (0, 3)1
    (0, 2)1
    (0, 5)1
    (0, 4)1
    (1, 3)1
    (1, 2)2
    (1, 4)1
    (2, 5)1
    (2, 1)1
    (3, 5)1
    (3, 0)1

    打印模型词库

    print(cv.get_feature_names_out())

    ['bir' 'bird' 'cat' 'dog' 'dog cat' 'fish']

    将词向量转化为词频矩阵(如"dog"出现1次、"cat"出现1次等)。

    行名是第几个文本例如我们上面有4个文本就是4行

    列名是词库中的单词例如'bir' 'bird' 'cat' 'dog' 'dog cat' 'fish'有六个就有六列

    数组中的数字就是词库中的单词在对应的文本中出现的次数

    print(cv_fit.toarray())

    [[0 0 1 1 1 1]
    [0 0 2 1 1 0]
    [0 1 0 0 0 1]
    [1 0 0 0 0 1]]

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 词向量转化
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!