当前位置: 首页 > news >正文

循环神经网络和自然语言处理一

目录

一.分词

1.分词工具

2.分词的方法

3.N-gram表示方法

二.向量化

1.one-hot编码

2.word embedding

3.word embedding API

4.数据形状改变


既然是自然语言,那么就有字,词,句了

一.分词

1.分词工具

tokenization,jieba,清华大学的分词工具THULAC等等

2.分词的方法

对于中文我们可用把句子分为词语或者字,比如我爱那个姑娘,可以分为[我,爱,那个,姑娘],或者[我,爱,那,个,姑,娘]

对于英文来说直接按照空格分就可以了

3.N-gram表示方法

前面我们说句子可以分为单个字或者词,但是有些时候我们要用到三个字,四个字,五个字等等这些词语来表示,而N-gram就是用来将句子分为一组一组的词语,N表示能够被一起使用的字或者词的数量

import jieba
s='很多深度学习算法中都会包含"神经网络"这个词,比如:卷积神经网络、循环神经网络'
cuted=jieba.lcut(s)
# 这里就是N-grad方法,这里的N=2,两个词的意思
[cuted[i:i+2] for i in range(len(cuted)-1)]
print(cuted)

运行后打印出[['很多', '深度'], ['深度', '学习'], ['学习', '算法'], ['算法', '中'], ['中', '都'], ['都', '会'], ['会', '包含'], ['包含', '"'], ['"', '神经网络'], ['神经网络', '"'], ['"', '这个'], ['这个', '词'], ['词', ','], [',', '比如'], ['比如', ':'], [':', '卷积'], ['卷积', '神经网络'], ['神经网络', '、'], ['、', '循环'], ['循环', '神经网络']]

二.向量化

因为计算机不能识别文字,所以要把文字向量化,转化成数字形式

1.one-hot编码

在one-hot编码中,每一个字词使用一个长度为N的向量表示,N表示token的数量。比如我们要对“深度学习”进行分词one-hot处理

2.word embedding

这个方法是深度学习中常用的方法,word embadding使用了浮点型的稠密矩阵来表示token。根据需要分词的文本,我们的向量通常采用不同的维度,比如100,256,300等等。其中向量中的每一个值都是参数,其初始值是随机生成的,之后会在训练的过程中不断的学习改进获得

比如一个文本中有10000个字词,如果使用one-hot编码,那么生成的矩阵就是10000*10000的大小,而且每个字词的代表向量基本是用0组成的。而用word embedding来表示的画,只需要10000*200,或者10000*300大小的矩阵。

我们把所有文本转化为向量,把句子用向量来表示。但是在着中间,我们先把token使用数字来表示,在把数字用向量来表示,因为文字计算机识别不了。token----->num----->vector

3.word embedding API

在torch中导入,torch.nn.Embedding(num_embeddings, embedding_dim)。其中num_embedding表示词典的大小,embedding_dim表示embedding的维度也就是上面说的100,256,300等等。

4.数据形状改变

比如每一个batch中的每个句子有十个词语,经过形状为[20,4]的word emebedding之后,原来的句子会变成[batch_size,10,4]的形状。相当于增加了一个维度,比如二维数据变成三维

关注我持续更新!!!

http://www.lryc.cn/news/417441.html

相关文章:

  • CSS技巧专栏:一日一例 20-纯CSS实现点击会凹陷的按钮
  • 20240807 每日AI必读资讯
  • 海外社媒账号如何让防关联?账号隔离的5大要点
  • 下一代 AI 搜索引擎 MindSearch:多智能体 + 系统2,模拟人类认知过程的 AI 搜索引擎
  • 一键生成专业PPT:2024年AI技术在PPT软件中的应用
  • Godot学习笔记8——PONG游戏制作
  • 软件RAID配置实战(2个案例场景)
  • # 基于MongoDB实现商品管理系统(2)
  • 国标GB28181视频平台LntonCVS视频融合共享平台视频汇聚应用方案
  • java基础I/O
  • 关于“八股文”在程序员面试中的角色及其对工作实际效用的讨论
  • 【算法设计题】基于front、rear和count的循环队列初始化、入队和出队操作,第6题(C/C++)
  • 端点区间影响
  • Leetcode3224. 使差值相等的最少数组改动次数
  • thinkphp之命令执行漏洞复现
  • 算法板子:匈牙利算法——二分图的最大匹配
  • 轻松拯救数据危机!四大必备的数据恢复软件免费版推荐!
  • windbg常用命令
  • Ubuntu(20.04 LTS)更换镜像源
  • golang使用 copier对象复制时进行类型转化
  • 英特尔18A制程技术分析解读
  • 【百度面试算法题】2024-08-02
  • OSPF基础
  • leetcode 958.二叉树的完全性检验
  • Spring 中请求作用域的数据存储在 ThreadLocal 中还是 Spring 容器中?
  • 基础岛 - 8G显存验证书生·浦语大模型的Demo
  • Jangow靶机攻略
  • Vue项目通过宝塔部署之后,页面刷新后浏览器404页面
  • Java一一一简易图书管理系统
  • Ubuntu配置carla docker环境