首页 > 其他分享 >文本向量化

文本向量化

时间:2023-10-11 16:32:20浏览次数:33  
标签:上下文 模型 语义 单词 量化 文本 向量

文本向量化

文本向量化是将文本表示成一系列能够表达文本语义的向量。词语是表达文本处理的最基本单元,因此当前阶段对文本向量化大部分的研究都是通过对词向量化实现的。与此同时,也有相当一部分研究者将文章或者句子作文文本处理的基本单元,与之对应的是doc2vec和str2vec技术。

1.词向量化之 word2vec算法

一: 词袋(Bag Of Word)模型 词袋模型是最早的以词语为基本处理单元的文本向量化方法,其原理如下: 取所有文本中单词的并集并去重,构建词典,词典中为为每一个出现过的单词进行编号。然后对某一个文本进行处理时,则遍历该词典中每一个单词,若该单词在这个文本中没有出现则记为0,出现了则记录出现的次数。具体如下: 文档1:John likes to watch movies, Mary likes too. 文档2:Johon also likes to watch football games. 根据上述文档构造的词典为: {'John':1,'likes':2,'to':3,'watch':4,'movies':5,'alse':6,'football':7,'game':8,'Mary':9,'too':10} 根据上述词典对文档进行向量化: 文档1:[1,2,1,1,1,0,0,0,1,1] 文档2:[1,1,1,1,0,1,1,1,0,0] 该向量与原来文本中单词出现的顺序没有关系,而是记录每个单词在文本中出现的频率。其缺点如下:

  • 维数灾难。若词典中包含大量的单词(10000),则每个文本就需要响应维度(10000)的向量表示,并且除了文本中出现的词语位置不为0,其余9000多位置都为0.
  • 向量没有保留原有文本单词的顺序信息
  • 存在语义鸿沟 词语是表达语义的基本单元。词袋模型只是将词语符号化,他不考虑词的顺序,并且假设词于词之间是独立的,实际上词的顺序对语义至关重要并且词与词也是相互影响的。所以词袋模型是不包含任何语义信息的。为了解决如何使‘词向量'包含语义信息,有人提出了分布假说,其核心思想是:上下文相似的词,其语义也相。运用该思想的方法有词空间模型(word space model)以及神经网络模型等。

高维稀疏向量的降维:

Dristributed representation可以解决One hot representation的高维稀疏矩阵问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,进而可以用普通的统计学的方法来研究词与词之间的关系。这个较短的词向量维度是多大呢?这个一般需要我们在训练时自己来指定。比如以全世界的 将世界所有城市名称作为语料库的话,采用One-hot编码将词向量化,那这个向量会过于稀疏,并且会造成维度灾难。

杭州 [0,0,0,0,0,0,0,1,0,……,0,0,0,0,0,0,0] 上海 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0] 宁波 [0,0,0,1,0,0,0,0,0,……,0,0,0,0,0,0,0] 北京 [0,0,0,0,0,0,0,0,0,……,1,0,0,0,0,0,0]

而可通过指定维度将其进行压缩,比如指定4个维度population人口,地理位置position,全球影响力,经济发达指数: 杭州[0.6, 0.5, 0.1, 0.3] 上海[0.8, 0.5, 0.9, 0.9] 宁波[0.3, 0.6, 0.05, 0.1] 北京[0.8, 0.1, 1.0, 0.85] 当然实际况中,我们并不能对词向量的每个维度做一个很好的解释。向量由高维向低微映射需满足以下性质:

(1)这个映射是单设(不懂的概念自行搜索); (2)映射之后的向量不会丢失之前的那种向量所含的信息。 该高维向量由低维向量压缩的过程被称为embedding,高维向量难于理解难于发现规律,压缩后便于分析各个向量之间的关系

二: 神经网络语言模型 (NNLM) 神经网络词向量模型根据上下文与目标词之间的关系进行建模。其以长度为n的文本单词文本序列集合文本向量化_词向量作为训练样本,以目标词为文本向量化_向量化_02标签设为1,目标词不为文本向量化_向量化_02标签设置为0作为标签,进而通过训练神经网络的参数使得目标词为文本向量化_向量化_02的概率最大。 当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵。 神经网络语言模型采用的是经典的三层前馈神经网络结果。为解决词袋模型数据稀疏问题,其输入为低纬度的紧密的词向量。 输入层: 输入层的操作就是将给定的词序列文本向量化_词向量的词向量按顺序进行拼接为输入数据: 文本向量化_神经网络_06输出层: 输出层文本向量化_神经网络_07 为上文出现词序列为文本向量化_词向量的情况下,下一个词为文本向量化_向量化_02的概率 NNLM模型优点:

  • 输入数据采用低微紧凑的词向量对词序列进行表示,解决了词袋模型带来的数据稀疏,语义鸿沟等问题。
  • NNLM模型根据上下文语境预测出现概率最大的目标词,因而在相似的语义环境下,模型可预测出相似的目标词。

三: C&W模型 NNLM模型的目标是构建一个语言概率模型,而C&W模型则是以生成词向量为目标的模型,其核心机理是:如果n元短语在语料库中出现过,那么模型会给短语打高分,若是未在语料库中出现过,那么模型会给短语打较低的评分。与NNLM模型的目标词在输出层不同,C&W模型的输入层就包含了目标词,其输出层也变为一个节点,该节点输出值的大小代表n元短语的打分高低

四: CBOW模型和Skip-gram模型 CBOW使用一段文本的中间词作为目标词,同时去掉了隐藏层,此外CBOW模型使用上下文各词向量的平均值代替NNLM模型各个拼接的词向量。 CBOW(continuouns bag of words)的目标是根据上下文来预测当前词语的概率,且上下文所有的词对当前词出现概率的影响的权重是一样的。如在袋子中取词,取出数量足够的词就可以了,取出的先后顺序则是无关紧要的。

Skip-gram刚好相反,是根据当前词语来预测上下文概率的

文本向量化_神经网络_10

文本向量化_词向量_11

标签:上下文,模型,语义,单词,量化,文本,向量
From: https://blog.51cto.com/u_16297761/7815160

相关文章

  • CSS 多行文本超链接下划线动效
    先看效果乍一看,是不是感觉很简单,仔细一瞅发现事情好像没有那么简单。如果十分钟还没想出怎么实现,那就把简历上的“精通css”改成“了解css”……......
  • 音视频开发基础入门|声音的采集与量化、音频数字信号质量、音频码率
     栏目介绍:为了帮助开发者更好的理解音视频概念,进行音视频应用开发,ZEGO即构科技联合内部音视频开发专家打磨了本套《音视频开发进阶》课程,帮助大家轻松入门并可以自己动手开发音视频App!本次课程为系列内容,课程将从音视频基础概念讲解展开,进行学习内容的难度进阶,后期将带领大家学......
  • 音视频开发基础入门|声音的采集与量化、音频数字信号质量、音频码率
      栏目介绍:为了帮助开发者更好的理解音视频概念,进行音视频应用开发,ZEGO即构科技联合内部音视频开发专家打磨了本套《音视频开发进阶》课程,帮助大家轻松入门并可以自己动手开发音视频App!本次课程为系列内容,课程将从音视频基础概念讲解展开,进行学习内容的难度进阶,后期将带领......
  • HEVC的量化和变换
    HEVC的变换和量化大体上和H.264/AVC相似,但增加了多处改进,提高了本部分的编码效率。在变换方面的改进主要体现在三方面,一是变换块(TB)的尺寸可变范围扩大,二是整数DCT的精度提高,三是引进了4X4的离散正弦变换。一.离散余弦变换与正弦变换1.2维DCT矩阵2.2维DST矩阵3.量化与......
  • winform-RichTextBox控件(有格式文本控件)
    RichTextBox控件用于显示、输入和操作带有格式的文本   除了执行TextBox控件的所有功能外,还可以显示字体、颜色和链接 1、在RichTextBox控件中显示滚动条  2、在RichTextBox控件中设置字体属性 3、将RichTextBox控件显示为超链接样式 4、在RichTextBox控件......
  • uni-app 文本显示两行超出部分显示...
    <template><view><view>这是登录界面<button@click="RedirdectToMain">跳转到首页</button></view></view><view><uni-file-pickerv-model="imag......
  • nginx配置返回文本或json的方法
    下面是讲解“nginx配置返回文本或json的方法”的完整攻略。方法一:返回文本在nginx配置文件中,使用add_header指令来设置响应头部信息,如下所示:location/text{add_headerContent-Typetext/plain;return200"Hello,World!";}上述配置中,location指明请求的URI为......
  • css样式对单行和多行文本的隐藏
    在我们日常的网页中,尤其是新闻类的网页会遇到许多类似于这样的样式多行甚至单行的文本隐藏+上省略号标题。解决这一办法,需要利用css的样式进行改变如下代码的演示:单行文本隐藏:多行文本隐藏:主要知识点:1、单行文本隐藏省略:文本不能换行、超出部分隐藏、超出部分省略2、......
  • 【Python】文本文件的读写(简)
    start#读1try:f=open("C:/DIP-PC/lt/workspace/Py_Wk/source/temp.txt","r",encoding="UTF-8",errors="ignore")#全读(无参)#print(f.read())#按行读forlineinf.readlines():print("re......
  • linux 中删除文本中第一个.号之前的内容
     001、方法1利用cut[root@pc1test01]#lsa.txt[root@pc1test01]#cata.txt##测试数据001.002.003.004.005006.007.008.009.010011.012.013.014.015016.017.018.019.020021.022.023.024.025026.027.028.029.030[root@pc1test01]#cut-d".&q......