当前位置: 首页 > 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.lryc.cn/news/620287.html

相关文章:

  • nginx知识点
  • C语言相关简单数据结构:顺序表
  • 使用 Simple Floating Menu 插件轻松实现浮动联系表单
  • Linux学习-UI技术
  • phpstudy搭建pikachu
  • 《探索C++ set与multiset容器:深入有序唯一性集合的实现与应用》
  • java中的各种引用
  • C++算法·递推递归
  • 从感知到执行:人形机器人低延迟视频传输与多模态同步方案解析
  • 飞算AI:企业智能化转型的新引擎——零代码重塑生产力
  • 音频重采样使用RandomOverSampler 还是 SMOTE
  • Python 基础语法(一)
  • Java研学-RabbitMQ(七)
  • 云计算-实战 OpenStack 私有云运维:服务部署、安全加固、性能优化、从服务部署到性能调优(含数据库、内核、组件优化)全流程
  • 《深入解析C++中的Map容器:键值对存储的终极指南》
  • FPGA+护理:跨学科发展的探索(四)
  • Java 大视界 -- 基于 Java 的大数据可视化在能源互联网全景展示与能源调度决策支持中的应用
  • Ubuntu24.04桌面版安装wps
  • 20250813比赛总结
  • Centos 用户管理
  • 在CentOS 7上配置Android USB网络共享方式的方法
  • 「数据获取」《中国海洋生态环境状况公报》(2001-2023年)(获取方式看绑定的资源)
  • 【linux】--U盘挂载
  • 更友好的并发库conc介绍
  • java集合之单列集合
  • 基于离散余弦变换的激活水印(DCT-AW)
  • TCP Socket 编程实战:实现简易英译汉服务
  • Devextreme-vue + Vue2日历下拉框的使用
  • MySQL优化常用的几个方法
  • 《量子雷达》第3章 量子雷达的传输与散射 预习2025.8.13