人工智能之玩转NLP

文本预处理的主要环节
文本处理基本方法
文本张量表示方法
文本语料的数据分析
文本特征处理
数据增强的方法

文本预处理方法

分词
词性标注
命名实体识别

文本张量的表示方法

one—hot 编码(不能计算不同单词之间的相似度)
Word2vd
Embedding

文本语料的数据分析

标签数量分布
句子长度分布
词频统计与关键词词云

文本特征处理

添加n—gram特征
文本长度规范

数据增强方法

回译数据增强法

文本预处理的方法

jieba分词

jieba.lcut()将生成器对象以列表的形式返回
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在jieba.lcut(文本)的默认情况下,是精确模式分词

import jieba

content = “工信处女干事每月经过下属科室都要亲口交代24口交换机等技术型器件”
print(jieba.cut(content,cut_all=False))
print(jieba.lcut(content,cut_all=False))

#更多的详情见上方代码图片

流行的中英文分词工具hanlp

  • 环境安装,Anaconda Prompt pip install hanlp
    然后切换pytorch环境再安装一下(我用的是pytorch里的python编译器)
  • hanlp处理的都是列表形式,如果文本不是列表形式的话,用list给解析一下
  • 本小节所使用的部分代码,由于篇幅较长,所以在图片选择的时候,没有选择全部 在敲代码的时候一定要看清括号的嵌套。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

词性标注

在这里插入图片描述
在这里插入图片描述

文本张量的表示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

one-hot编码实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

word2vec的实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
总的来说,CBOW就是用周围的词语来预测中间的词语,在整段语料上,选取窗口大小的语料,计算,并筛选最合适的,然后依次向后进行,直到完成所有语料的遍历。
skipgram则是使用中间的词语来预测前后词语的训练方式。

word2vec代码实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上数据加载是在Linux系统下的命令行实现的,接下来讲如何使用Python进行训练。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

代码

import fasttext

model = fasttext.train_unsupervised('路径') #设置模型超参数
model.get_nearest_neighbors('某个词')# 查询最近的词向量
model.get_word_vector("the")#获取某个词向量
model.save_model("文件名.bin")#模型保存
model = fasttext.load_model("文件名.bin")#模型重加载


# 模型超参数的设定
model = fasttext.train_unsupervised('路径',"cbow", dim = 300, epoch = 1, lr = 0.1, thread = 8)#无监督训练的方式,dim词嵌入向量维度,epoch总体的数据集循环几轮,初始学习率lr,线程thread

# 模型效果检验
model.get_nearest_neighbors('cat')

#模型保存与重加载
model.save_model("文件名.bin")
model = fasttext.load_model("文件名.bin")

词嵌入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文本张量表示的小结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HMM模型与CRF模型

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

RNN模型

概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

RNN模型的分类

在这里插入图片描述

N-N

在这里插入图片描述

N-1

在这里插入图片描述

1-N

在这里插入图片描述

N-M(seq2seq架构)

在这里插入图片描述
在这里插入图片描述

RNN小结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

传统RNN模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在代码中体现

在这里插入图片描述
在这里插入图片描述


import torch
import torch.nn as nn

# 实例化RNN对象
#第一个参数:input_size(输入张量x的维度)
#第二个参数:hidden_size(隐藏层的维度,隐藏层神经元的数量)
#第三个参数:num_layers(隐藏层的层数)
rnn = nn.RNN(input_size, hidden_size, num_layers)

#设定输入的张量x
# seq_len:输入序列的长度。batch_size:批次的样本数。input_size:输入张量x的维度
input = torch.randon(seq_len, batch_size, input_size)

#设定初始化的h0
#第一个参数:num_layers*num_directions(层数*网络方向数)
#batch_size:批次的样本数
#  hidden_size:隐藏层的维度,隐藏层神经元的数量
h0 = torch.randn(num_layers, batch_size, hidden_size)

#输入张量放入RNN中,得到输出结果
output, hn = rnn(input1, h0)

print(output)
print(output.shape)
print(hn)
print(hn.shape)

LSTM模型

在这里插入图片描述
在这里插入图片描述

遗忘门部分结构图

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

两个输入: 当前时间步的输入xt 与 上一个时间步隐含状态h(t-1)拼接 得到[xt,h(t-1)]经过全连接层与sigmoid函数得到f
在这里插入图片描述在这里插入图片描述
在RNN中,tanh的作用是将流经网络的值压缩为[-1,1]之间
而在LSTM中,sigmoid函数的作用是将流经网络中的值压缩在[0,1]之间

输入门部分结构图

在这里插入图片描述
在这里插入图片描述
将拼接后的值复制两份,然后一个进入sigmoid函数,一个进入tanh函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值