自然语言处理---文本向量化表示

分词:tokenization
一个词:token

词语分割表示方法:
1.单个词。
2.单个字
3.n_gram.

n_gram考虑到了文本之间的顺序问题
自然语言处理中N-Gram模型介绍
amazing!

import jieba
import torch

text="深度学习(英文:deep learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法"

cuted=jieba.lcut(text) #获取到列表的格式

"假设为2_gram "
"注意这里len(cuted-1) 因为是对文本进行长度为2的词语的组合。最后一个词的后面没有能跟他组合的了,所以-1." \
"如果是3_gram 那么就是减-2"
n_gram=[cuted[i:i+2] for i in range(len(cuted)-1)]
print(n_gram)

输出:
在这里插入图片描述

代码中减1的原因:
自然语言处理---文本向量化表示_第1张图片
二、文本的向量化
1.one-hot 编码
2.word embedding表示法
自然语言处理---文本向量化表示_第2张图片
这里的词典:待训练的样本里面,不重复的词语的个数。

on-hot使用稀疏的向量表示文本,占用的空间大

2.word embedding表示法
自然语言处理---文本向量化表示_第3张图片

把文本转化为向量,把句子用向量表示。

前提:先将token用数字表示,再把数字用向量表示,最终才能输入到网络中训练。

token–>num—>vector

如下解释:

  1. 我们有batch_size个句子,每个句子有N个词语。
  2. 我们还有一个词典。其中定义了不重复的单词的个数M,以及每个单词的向量维度4.
  3. 将batch_size*N个词语分别进行num编号,然后到词典中查找相应的vector。最红转化为[batch_size,N,4]这个一个Vector。

自然语言处理---文本向量化表示_第4张图片
torch中可以实现上述过程的API:
自然语言处理---文本向量化表示_第5张图片
这里的num_emeddings是样本中不重复词语的个数。
这个api的输出维度:[batch_size,N,embedding_dim]

你可能感兴趣的:(自然语言处理,深度学习,人工智能)