nlp自然语言处理

2023-09-19 11:07:15

NLP

nlp自然语言处理(不一定是文本,图形也可以)接入深度学习(向量处理),需要把文字等内容转换成向量输入

深度学习分为有监督和无监督学习两类,对应分类和生成算法都是向量输入

词嵌入(映射到向量)

词嵌入最简单的模型是one-hot,但数据计算量太大,所以后续更多的是减少数据量和建立关联性

  • one-hot,最简单分类(单位矩阵),无法识别词之间的相似性,维度高计算量大(10w个词,需要10w个维度)
  • word2vector包含两个算法
  1. skip-gram,跳字模型:中心词预测背景词
  2. cbow,连续词袋模型:背景词预测中心词

输入one-hot输出概率分布,词向量隐藏层输出(非最终输出)
词向量纬度:w(词数量)*v(隐藏层输出)
word2vector通过分析词语的常用组合得到词语的分类信息,类似词语填空
word2vector依赖局部统计信息、对全局缺少依赖

import tensorflow as tf

# 假设vocab_size = 1000
VOCAB_SIZE = 1000
# 假设embedding_size = 300
EMBEDDINGS_SIZE = 300

# 输入单词x是一个[1,vocab_size]大小的矩阵。当然实际上我们一般会用一批单词作为输入,那么就是[N, vocab_size]的矩阵了
x = tf.placeholder(tf.float32, shape=(1,VOCAB_SIZE))
# W1是一个[vocab_size, embedding_size]大小的矩阵
W1 = tf.Variable(tf.random_normal([VOCAB_SIZE, EMBEDDING_SIZE]))
# b1是一个[1,embedding_size]大小的矩阵
b1 = tf.Variable(tf.random_normal([EMBEDDING_SIZE]))
# 简单的矩阵乘法和加法
hidden = tf.add(tf.mutmul(x,W1),b1)

W2 = tf.Variable(tf.random_normal([EMBEDDING_SIZE,VOCAB_SIZE]))
b2 = tf.Variable(tf.random_normal([VOCAB_SIZE]))
# 输出是一个vocab_size大小的矩阵,每个值都是一个词的概率值
prediction = tf.nn.softmax(tf.add(tf.mutmul(hidden,w2),b2))
# 损失函数 
cross_entropy_loss = tf.reduce_mean(-tf.reduce_sum(y_label * tf.log(prediction), reduction_indices=[1]))
# 训练操作
train_op = tf.train.GradientDescentOptimizer(0.1).minimize(cross_entropy_loss)
  • FastText算法库,速度极快类似cbow,预测目标类别而非word2vector的目标词
  • glove,在word2vector的基础上,统计同一词在一个上下文出现后在另一个上下文出现的概率

词向量输出位,共现方阵大小v*v(隐藏层输出)

  • bert
  • 知识图谱,rdf三元组(包含两点一线的结构)、neo4j

图嵌入

类似词嵌入的方式,可以在分类算法中,把隐藏层输出作为图嵌入的表征

向量相似度

  • 使用向量的模,点的距离
  • 余弦夹角,one-hot向量的相似度0,适用于方向上的差异对大小不敏感的,类似用户评分等。

向量的存储

  • elasticsearch
  • 向量数据库
  • Faiss
  • Annoy

语言模型

  • seq2seq
  • transfomer

输入词向量,通过输出词向量
encoder=》decoder模型

  • bert,预训练模型

nltk工具

更多推荐

内网穿透的应用-Cloudreve搭建云盘系统,并实现随时访问

文章目录1、前言2、本地网站搭建2.1环境使用2.2支持组件选择2.3网页安装2.4测试和使用2.5问题解决3、本地网页发布3.1cpolar云端设置3.2cpolar本地设置4、公网访问测试5、结语1、前言自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局,一时间公有云盘遍地开花。但一段时间后,公有云盘潜在的

【2023全网最全最火】Selenium WebDriver教程(建议收藏)

在本教程中,我将向您介绍SeleniumWebdriver,它是当今市场上使用最广泛的自动化测试框架。它是开源的,可与所有著名的编程语言(如Java、Python、C#、Ruby、Perl等)一起使用,以实现浏览器活动的自动化。通过本文,我将告诉您开始使用SeleniumWebDriver测试Web应用程序所需了解的所

https跳过SSL认证时是不是就是不加密的,相当于http?

https跳过SSL认证时是不是就是不加密的,相当于http?,其实不是,HTTPS跳过SSL认证并不相当于HTTP,也不意味着没有加密。请注意以下几点:HTTPS(HypertextTransferProtocolSecure)本质上是在HTTP的基础上添加了安全性层(SSL/TLS),用于加密和保护数据传输。通过使

一、并发编程之----AQS上

对于一个程序员来说,需要解决多线程问题,这就需要好好学习下并发了。并发编程设计比较广泛,那我们就先从线程、进程开始吧一、线程、进程二、并发1、为什么会出现2、是什么并发是针对一个共享变量,多个线程同一时间去编辑该共享变量。3、会出现什么问题其中一个线程a获取到共享变量x后进行修改,而这一时刻,线程b拿到了共享变量x,也

华纳云:如何搭建Nginx服务器做到负载均衡

要搭建Nginx服务器实现负载均衡,您可以使用Nginx作为反向代理来分发客户端请求到多个后端服务器。以下是一个基本的步骤指南:前提条件:您需要一台安装有Nginx的服务器。您需要有多台后端服务器,这些服务器将处理客户端请求。步骤:安装Nginx:如果您还没有安装Nginx,请使用适合您操作系统的包管理工具来安装Ngi

【MATLAB】【函数介绍】cp2tform函数从控制点对推断空间变换

官方链接:https://ww2.mathworks.cn/help/images/ref/cp2tform.html?s_tid=doc_ta.cp2tform函数的作用是根据传入的控制点对的坐标推断空间变换参数。函数语法如下:从控制点对推断空间变换,并将此变换作为tform结构返回,有些转换类型具有可选的富家参数t

【EasyExcel】excel表格的导入和导出

【EasyExcel】excel表格的导入和导出【一】EasyExcel简介【二】EasyExcel使用【1】EasyExcel相关依赖【2】写Excel(1)最简单的写(方式一)(2)最简单的写(方式二)(3)排除模型中的属性字段(4)向表格中导出指定属性(5)插入指定的列(6)复杂头数据写入(7)重复写到Excel

c++用dijkstra堆优化版求严格次短路(洛谷p2865)acwing(Tle)版本

先看原题:贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友。贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路。贝茜所在的乡村有R(1\leR\le10^5)R(1≤R≤105)条双向道路,每条路都联结了所有的N(1\leN\le50

理解Spring原理 - 手写IOC和DI

理解Spring原理-手写IOC回顾Java反射自定义User类:自定义UserTest类:实现Spring的IOC本文完整资源包,懒得一步步操作的同学可以移步下载:CSDN资源-手写IOC和DI完整代码下载回顾Java反射我们都知道,Spring框架的IOC是基于Java的反射机制实现的,下面我们先回顾一下Java反

国产系统适配——kylin安装32位老linux程序方法

运维过程中很多老程序是32位,只能在很老的linux上跑,有没有办法在kylin操作系统上跑呢?实测可以解决,具体如下:1、判断一个程序能否在某个操作系统上运行,可通过执行ldd进程名判断是否能运行或缺失动态库。lddsyncfile报notadynamicexecutable(不是动态可执行文件)或出现notfoun

吐槽一下上周看过的119份简历。

作者:阿秀InterviewGuide大厂面试真题网站:https://top.interviewguide.cn这是阿秀的第「308」篇原创小伙伴们大家好,我是阿秀。以前就分享过写简历的文章:一份百投百中的计算机校招简历是如何迭代足足26版的?、但从最近我修改的一些简历来看,还是有很多小伙伴不会写简历,合格的相当少,

热文推荐