0

0

文本离散表示方法

P粉084495128

P粉084495128

发布时间:2025-07-28 09:41:03

|

289人浏览过

|

来源于php中文网

原创

本文介绍了文本的向量表示,包括词向量的概念、将单词转化为向量的方式及词向量具备语义信息的特点。还讲解了独热编码、词袋模型、TF-IDF、N-gram模型等离散表示方法,并指出离散表示存在无法衡量词间关系、数据稀疏、计算复杂等缺点。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

文本离散表示方法 - php中文网

1. 文本的向量表示

  • 文本的向量表示:核心的思想就是把文本中的单词(句子)表示成对应的数字
  • 文本的向量表示也叫Word Embeding & Word Representation。
  • 词向量:Word2vec:CBOW & Skip-Gram (单词的词向量)

1.1 问题引入

1.1.1 计算机中如何表示一个词语?

  • 请找出和青蛙(frog)最接近的前7个单词是哪些?

文本离散表示方法 - php中文网        

  • 计算机系统中学习到单词的向量表示时应满足向量空间分布的相似性。

文本离散表示方法 - php中文网        

  • 计算机系统中学习到单词的向量表示同时应满足向量空间子结构

文本离散表示方法 - php中文网        

最终目标:单词的向量表示作为机器学习,特别是深度学习的输入和表示空间

1.1.2 词向量的基本概念

  • 词向量是一种自然语言中表示单词的方法,即把每个单词表示为NN维空间内的一个点,也是高维空间的向量,通过这种方法,可以把自然语言的计算转换为空间向量的计算。

文本离散表示方法 - php中文网        

1.1.3 实现词向量的两大挑战

文本离散表示方法 - php中文网        

1.1.4 单词转化为向量

  • 通过词向量表(Excel,数据库表,text文本文件,numpy文件(npz)进行查询,词向量表中每行存储了单词和对应的向量表示
  • 第一列单词的本身

文本离散表示方法 - php中文网        

1.1.5 词向量具备语义信息

  • 科研人员都有一个共识,可以使用一个单词附近的词语来表示这个单词的含义

文本离散表示方法 - php中文网        

使用上下文可以推断出第一个“苹果”指的是iphone手机;

MVM mall 网上购物系统
MVM mall 网上购物系统

采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压

下载
  1. 第二个“苹果”指的是水果苹果
  2. 第三个根据语境得到“菠萝”指的是一个手机。
  3. 我们可以使用同样的想法来训练词向量,让这些词向量能够表示语义信息的能力。

1.2 文本的离散表示方法

1.2.1 独热编码(One-Hot Encoder)

  • 独热码:只管来说就是有多少个状态就用多少个比特位来表示。而且只有一个比特位为1,其他全为0的一种表示方法。
  • 红、黄、蓝。 {红:1,蓝:2,黄:3}
  • 红:1 0 0;黄色:0 1 0;蓝色:0 0 1
  • 对于文本的向量表示该如何使用独热编码表示:深度学习
深 1 0 0 0  
度 0 1 0 0  
学 0 0 1 0  
习 0 0 0 1
       

文本离散表示方法 - php中文网        

In [2]
# 实现one-hot encoder编码表示"""
    性别 区域 成绩
    0  0  3
    1  1  0
    0  2  1
    1  0  2
    需求:请输出[0, 1, 3]每个数字的one-hot编码表示
"""# 导入工具包sklearnfrom sklearn import preprocessing # 数据预处理,实现了one-hot的方法one_hot = preprocessing.OneHotEncoder()
one_hot.fit([
    [0, 0, 3],
    [1, 1, 0],
    [0, 2, 1],
    [1, 0, 2]
    ]
)
result = one_hot.transform([[0,2,2]]).toarray()print(result)
       
[[1. 0. 0. 0. 1. 0. 0. 1. 0.]]
       

1.2.2 词袋模型(Bag of words)

  • 词袋模型:将所有的词语装进一个袋子中,不考虑词法和语序的问题,每个单词都是独立的,同时对每个单词统计其在语料库中出现的次数。
  • 实现词袋模型的步骤
    1. 构建词汇表:语料库中所有不重复的单词组成的字典
    2. 构建字典时按照单词的字典(a\b.)顺序组成,{orange:3,banana:1,apple:0,grape:2}
orange banana apple grape   
banana apple apple
grapeorange apple
       
  • 把每个句子转化成对应的向量表示 文本离散表示方法 - php中文网            
In [11]
# 1. 导入工具库from sklearn.feature_extraction.text import CountVectorizer # 计数texts = [    "orange banana apple grape",    "banana apple apple apple",    "grape",    "orange apple",
]

count_vec = CountVectorizer() # 创建词袋模型的对象count_vec_fit = count_vec.fit_transform(texts) # 训练语料库print(count_vec.vocabulary_) # 输出根据语料库构建的词汇表print(count_vec_fit.toarray()) #  把文本转换成对应的向量表示
       
{'orange': 3, 'banana': 1, 'apple': 0, 'grape': 2}
[[1 1 1 1]
 [3 1 0 0]
 [0 0 1 0]
 [1 0 0 1]]
       

1.2.3 词频-逆文本频率

  • TF-IDF是一种用于咨询检索与文本挖掘的常用加权技术,词袋模型使用的是词频,TF-IDF用的是词的权重。
  • 词频:指的是一个给定的词语在文本中出现的频率。
  • 逆向文本频率:是一个词语普遍重要性的度量。

注意事项:如果一个单词在句子中出现的频率非常的高,说明该单词具有一定的重要性,但如果一个词语在整篇语料库中出现的频率都很高,就说明这个单词很普遍(常见)。文本离散表示方法 - php中文网            

In [12]
# 1.  导入工具库from sklearn.feature_extraction.text import TfidfVectorizer

texts = [    "orange banana apple grape",    "banana apple apple apple",    "grape",    "orange apple",
]

tdf_vec = TfidfVectorizer() # 创建词袋模型的对象tdf_vec_fit = tdf_vec.fit_transform(texts) # 训练语料库print(tdf_vec.vocabulary_) # 输出根据语料库构建的词汇表print(tdf_vec_fit.toarray()) #  把文本转换成对应的向量表示
       
{'orange': 3, 'banana': 1, 'apple': 0, 'grape': 2}
[[0.42344193 0.52303503 0.52303503 0.52303503]
 [0.92468843 0.38072472 0.         0.        ]
 [0.         0.         1.         0.        ]
 [0.62922751 0.         0.         0.77722116]]
       

1.2.4 N-gram模型(语言模型)

  • 考虑了词语之间的顺序
  • 缺点:词表的维度会随之单词的增加而急剧增加,在实际的工作中,n=4以上的情形是没有用过的,因为算法的复杂度太高。

1.2.4 bi-gram的表示方法

文本离散表示方法 - php中文网        

1.2.6 tri-gram的表示方法

文本离散表示方法 - php中文网        

In [13]
from sklearn.feature_extraction.text import CountVectorizer # 词频的统计可以实现n-gram# 1. 构建语料库texts = [    "orange banana apple grape",    "banana apple apple",    "grape",    "orange apple",
]# 2. 创建构建n-gram的对象count_ngram_vec = CountVectorizer(ngram_range=(2,3))
count_ngram_vec_fit = count_ngram_vec.fit_transform(texts)print(count_ngram_vec.vocabulary_) # 打印bi-gram的词汇表print(count_ngram_vec_fit.toarray())  # 文本转换成对应的向量表示
       
{'orange banana': 6, 'banana apple': 2, 'apple grape': 1, 'orange banana apple': 7, 'banana apple grape': 4, 'apple apple': 0, 'banana apple apple': 3, 'orange apple': 5}
[[0 1 1 0 1 0 1 1]
 [1 0 1 1 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 1 0 0]]
       

1.3 总结

1.3.1 离散的文本向量表示方法的缺点

  • 无法衡量词向量词向量之间的关系
酒店 1 0 0
宾馆 0 1 0
旅社 0 0 1
       
  • 无论使用那种度量方式都不能表示这三个单词之间的关系
  • 数据非常稀疏
  • N-gram模型的计算复杂度太高

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

389

2023.08.14

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

335

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2068

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

346

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

251

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

321

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

402

2023.10.16

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

374

2023.10.16

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Highcharts中文参考手册
Highcharts中文参考手册

共16课时 | 6.4万人学习

ios开发手册中文版
ios开发手册中文版

共25课时 | 14.6万人学习

Docker 教程
Docker 教程

共19课时 | 16.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号