当前位置: 首页 > news >正文

词向量转化

目录

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

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

二.什么是词向量

三.为什么需要词向量

四.词向量转化

1.目的

2.方法

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

六.总结

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

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


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

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

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

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

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

二.什么是词向量

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

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

三.为什么需要词向量

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

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

    缺点:维度灾难、无法表示语义关系、向量稀疏
  2. 词袋模型(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]]

http://www.dtcms.com/a/330307.html

相关文章:

  • RocketMQ 消息存储机制 CommitLog和ConsumerQu
  • 第八课:python的运算符
  • 从 VLA 到 VLM:低延迟RTSP|RTMP视频链路在多模态AI中的核心角色与工程实现
  • 论文分享 | Flashboom:一种声东击西攻击手段以致盲基于大语言模型的代码审计
  • 04-spring-手写spring-demo-aop0V1
  • Canal解析MySQL Binlog原理与应用
  • Unity、C#常用的时间处理类
  • Laravel 使用ssh链接远程数据库
  • 使用 Simple Floating Menu 插件轻松实现浮动联系表单
  • AI一周事件(2025年8月6日-8月12日)
  • [ Mybatis 多表关联查询 ] resultMap
  • ResourcelessTransactionManager的作用
  • 第三天-如何在DBC中描述CAN Signal的“负数/值”
  • JetPack系列教程(六):Paging——让分页加载不再“秃”然
  • 理财学习资料推荐
  • 谈一些iOS组件化相关的东西
  • C# 多线程:并发编程的原理与实践
  • C++中的STL标准模板库和string
  • Heterophily-aware Representation Learning on Heterogeneous Graphs
  • AI - 工具调用
  • AI智能体记忆策略
  • 10 ABP 模块系统
  • [转]SURREAL数据集国内下载链接
  • Deep Agents:用于复杂任务自动化的 AI 代理框架
  • nm命令和nm -D命令参数
  • 19. 重载的方法能否根据返回值类型进行区分
  • Java之String类
  • 3.Cursor提效应用场景实战
  • UEdior富文本编辑器接入AI
  • 算法篇----分治(归并排序)