文本离散表示方法

大杰吖_8200

大杰吖_8200

2025-07-28

309人浏览

原创

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

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

文本离散表示方法 - 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手机;

jQuery模拟iPhone下拉滚动条动画特效
jQuery模拟iPhone下拉滚动条动画特效

jQuery模拟iPhone下拉滚动条动画特效,当我们滚动鼠标滚轮时,菜单也随机会跟着上下滚动。

下载
  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模型的计算复杂度太高

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

iphone iphone手机

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

2023.07.04

1962

6

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.07

2750

5

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

2023.10.16

7430

14

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

2024.03.13

3124

8

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

2025.09.08

4825

12

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

2025.10.14

7432

24

Python 数据分析与可视化合集
Python 数据分析与可视化合集

聚焦 Python 在数据分析领域的核心应用,讲解 NumPy 数组运算、Pandas 数据清洗与聚合统计、缺失值与异常值处理、数据透视表生成,以及使用 Matplotlib、Seaborn、Pyecharts 制作折线图、柱状图、热力图、地图等多种可视化图表,适合数据分析师和运营人员快速掌握用 Python 从原始数据中挖掘洞察的能力。

2026.04.08

396

25

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

2026.04.13

771

25

热门下载

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

精品课程

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

共16课时 | 12.9万人学习

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

共25课时 | 35.8万人学习

Docker 教程
Docker 教程

共19课时 | 29.6万人学习