文本张量介绍

什么是文本张量

将一段文本以张量的形式表示,其中将文本中的词以向量的形式表示,称为词向量,由各个词向量按照顺序组成矩阵的形式表示文本

为什么需要将文本以张量的形式表示

为的是可以作为计算机程序的输入

文本张量表示的方法
  • onehot编码:将每个词以n个元素组成的向量表示,其中每一个词向量中有且只有1位置个为1,其他的位置为0(n是不同词汇的总数)
    onehot编码的缺点:词与词的没有任何关联关系,同时大语料的数据集情况下,每个词的向量由于长度过长导致占用大量的内存

    使用keras的方式实现

from sklearn.externals import joblib
from tensorflow.keras.preprocessing.text import Tokenizer

vocabs = ['bai','bai','hai','sheng','happy', 'ha', 'ha']
tokenizer=Tokenizer(num_words=None,char_level=False)
tokenizer.fit_on_texts(vocabs)
for vocab in vocabs:
        vocab_zero=[0]*len(vocabs)
        vocab_index=tokenizer.texts_to_sequences([vocab])[0][0]-1
        vocab_zero[vocab_index]=1
        print(vocab_zero)

# 保存引射器
joblib.dump(tokenizer,'./tokenizer')

**运行结果**
[1, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0]
[0, 0, 1, 0, 0, 0, 0]
[0, 0, 0, 1, 0, 0, 0]
[0, 0, 0, 0, 1, 0, 0]
[0, 1, 0, 0, 0, 0, 0]
[0, 1, 0, 0, 0, 0, 0]

  • word2vec
    word2vec 是2012年被被Google提出来的将文本生成词向量模型,w它是将词汇表示成向量的无监督的训练方法,该过程会构建神经网络模型,包含CBOW和skipgram两种训练模式

    CBOW(Continuous bag of words)模式

    给定一段用于训练的文本语料, 再选定某段长度(窗口)作为研究对象, 使用上下文词汇预测目标词汇.

在这里插入图片描述
过程:

  1. 将每个词的oneho [1,n]t编码向量作为输入层的输入

  2. 分别乘以一个[V,N] 权重矩阵W,将分别得到的结果相加求平均作为隐层向量 表示成[1,N]

  3. 将第2步的结果乘以输出权重矩阵W’ (NxV)得到结果表示成[1,V]

  4. [1,V]的向量经过sigmoid输出0到1的概率分布,它将与我们真正的目 标矩阵即词的one-hot编码矩阵(1xn)进行损失的计算, 然后更新网络参数W ,W’ 完成一次模型迭代

  5. 迭代多轮训练完毕后,输入层的每个词的onehot与矩阵W相乘得到的向量的就是我们想要的词向量

  • skipgram模式

    给定一段用于训练的文本语料, 再选定某段长度(窗口)作为研究对象, 使用目标词汇预测上下文词汇
    与CBOW的计算过程不一样的是CBOW的第4步中W’ 是多个,所以得到多个[1,V]的向量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值