自然语言处理
文章平均质量分 57
Mr Gao
一个爱好分享的编程学习者,关于博客有不懂的可以留言,基本看到就会回复,最后,希望我的博客可以帮助你们解决一些问题,
展开
-
python pytorch实现RNN,LSTM,GRU,文本情感分类
python pytorch实现RNN,LSTM,GRU,文本情感分类原创 2023-11-30 22:57:26 · 814 阅读 · 0 评论 -
基于sentencepiece工具和unicode编码两种编码分词的word2vec(CBOW,Skip-gram)词向量训练,并结合TextCNN模型,替换初始词向量进行文本分类任务
博主这次做的实验很难,但是想法很好,我觉得基础不好的可能都看不懂我的题目,在这篇博客里,博主会附上我得代码,大家可以好好学习一下。注:word2vecdata.txt为文本其中吗,每一个问一个句子。这个实验分如下几个部分。训练部分代码如下,同时。原创 2023-10-20 13:22:53 · 264 阅读 · 0 评论 -
python pytorch- TextCNN TextRNN FastText Transfermer (中英文)文本情感分类实战(附数据集,代码皆可运行)
如下是我们的数据集:数据集由六个txt文件组成,如下图:分别是三个训练集文件和三个测试集文件,三个训练集文件分别对应消极、积极、中性的三种文本数据。同理三个测试机文件也分别对应消极、积极、中性的三种文本数据。其中每一个数据集都是一个一个的句子组成,每个句子占一行。如下:只有stopwrods.txt比较特别:其实由一个个的停用词组成,每一行为一个停用词。建议大家可以下载我得数据集,也可以在私聊我,我可以将数据集发给你们。(1)将句子通过jieba库进行分词操作。原创 2023-10-08 14:18:14 · 879 阅读 · 5 评论 -
浅谈wor2vec,RNN,LSTM,Transfermer之间的关系
但是也存在冒险,在学习的时候,神经网络需要自己知道Q K矩阵是为了权值而学习的,而V矩阵则是对数据进行最后的信息提取而学习的。我们可以给与transfermer更多的提示,让其对于这三个矩阵的学习更加具有目的性,这样或许可以更好的提升transfermer的学习能力,否则直接让其再目标函数的驱动下去学习这三个矩阵,目的性较弱,且会局限于数据初始化。下面是RNN的模型示意图。我们可以很显然的发现,RNN在做一些任务的时候,是一个个的输入一个句子的单词,这样的计算方式,会导致忽略句子内单词之间的内在联系。原创 2023-10-05 16:24:46 · 489 阅读 · 0 评论 -
2785. 将字符串中的元音字母排序
解释:‘E’ ,‘O’ 和 ‘e’ 是 s 中的元音字母,‘l’ ,‘t’ ,‘c’ 和 ‘d’ 是所有的辅音。将元音字母按照 ASCII 值排序,辅音字母留在原地。元音字母为 ‘a’ ,‘e’ ,‘i’ ,‘o’ 和 ‘u’ ,它们可能是小写字母也可能是大写字母,辅音字母是除了这 5 个字母以外的所有字母。解释:s 中没有元音字母(s 中都为辅音字母),所以我们返回 “lYmpH”。输入:s = “lEetcOde”输入:s = “lYmpH”输出:“lEOtcede”输出:“lYmpH”原创 2023-09-27 20:55:30 · 429 阅读 · 1 评论 -
Unigram,Bigram,N-gram介绍
Unigram,Bigram,N-gram这三个概念,在学习自然语言的过程中大家可能会遇到。Unigram,Bigram,N-gram在自然语言内容中的语言模型部分中大家可能会碰到。语言模型有很多种,在上一篇介绍一个翻译系统的部分中,我提到了语言模型,语言模型在那个翻译系统中属于第二部分内容,其可以计算一个句子语法正确的概率,或者说可能出现的概率。可以通过很多方式实现一个语言模型,当然Unigram,Bigram,N-gram就是实现语言模型的三种方式。原创 2023-09-26 22:15:39 · 1412 阅读 · 0 评论 -
论一种简单的翻译系统
于是在这个系统中,采用了组合的方式,将翻译后的单词全部随机拼接,然后,我们计算所有拼接后句子语序正确的概率,之后选择概率最大的那个作为最终翻译的句子。最后这个系统,因为第一个模块存在不足,翻译的时候可能会出现漏词、多词等问题,且可能翻译过于死板,因为是词对词的翻译,不能考虑翻译句子整体的连贯性、语义等因素,也会存在很多问题。然后呢,分词之后,在进行词对词的翻译,也就是如果我们要将中文翻译成英文,那么将中文分词之后呢,把每个词语先翻译成对应的一个个单词,做到这一步,第一个模块的任务就算完成了。原创 2023-09-24 20:35:08 · 210 阅读 · 0 评论 -
CBOW (以txt文本小说为例) pytorch实战
之后,我们训练了自己的模型,在此基础上,我们也对模型进行了些许验证,就是通过我们得到的嵌入词向量,然后计算某一个词语与其最近的k个词语,在验证过程中,我们发现数据集质量很差,不过,经过验证确实,模型还是有一定效果的。上图是我们测试跟萧炎有关的30个词语,大家可以发现还还是可以的,因为上面很多词语都是人发出的,萧炎是一个人名,其次弟子,长老,纳兰,跟其萧炎很有关系,说明该模型是有一定效果的。今天博主做了一个不错的实验,我认为,很多小伙伴可能都可以从中学到东西。原创 2023-09-22 22:22:07 · 335 阅读 · 0 评论 -
python pytorch 纯算法实现前馈神经网络训练(数据集随机生成)
下面这个代码大家可以学习学习,这个代码难度最大的在于反向传播推导, 博主推了很久,整个过程都是纯算法去实现的,除了几个激活函数,可以学习一下下面的代码。我下面这个代码还是很严谨的,从数据集生成,损失函数,网络结构、梯度求导,优化器等等组件都实现了。原创 2023-07-09 10:06:48 · 854 阅读 · 1 评论 -
支持向量机推导之r||w||=1的限制转化
有了这个距离公式,再结合我们的常识,我们知道,当我们每次有了一个超平面,是不是可以求得每个样本到超平面的距离,那么研究者根据先验经验认为,每一个超平面求得之后呢,都会存在一个样本到超平面的最小距离,研究者们发现,如果这个最小距离越大,超平面的分类效果越好,于是得到了我们的SVM模型,即求解一个超平面,可以将样本都正确分类,且样本到超平面的最小距离最大。我们可以发现,有很多超平面,或者说线,都可以把我们的样本都正确的分隔开来,但如果从直观的效果靠,是不是红色的那一条是效果最好的,那么这一条怎么找到呢?原创 2023-07-07 22:09:55 · 832 阅读 · 0 评论 -
揭秘logistic 回归 与 sigmoid激活函数的关系
人们发现,线性模型可以表示一个样本空间中的一个超平面,这个线性空间可以将样本空间一分为二,研究者就说,我们可以求一个最好的超平面,正好把我们的训练集给分好类,这不就好了嘛,那这个线性模型表示的超平面不就对进行分类了吗?应该是更合适的,这是因为,上述使用距离之和作为损失结果,但是显然有些样本如果比较离群,那么他计算得到的距离就会很大,对于损失函数的影响很大,人们想到了什么呢?(wx+b)/||w||是样本到超平面的距离,那就是正样本让他们到超平面一边,负样本到超平面一边,然后距离超平面越远越好。原创 2023-07-03 22:17:11 · 336 阅读 · 0 评论 -
NLP学习笔记十二-词袋模型
词袋模型其实是一种很简单的统计模型,这个统计模型说法是博主自己定义的,也可能真的统计模型中含有词袋模型这一类,为什么说它是统计模型?因为词袋模型他呢是基于统计的,比如现在我们有两组组词,现在我们希望对这组词建立词袋模型。然后这里要提到的是,词袋模型本质上就是统计一个词组单词的出现次数,在进行向量转化,词袋模型是比较简单的,它并不会考虑这些单词之间的内在联系,同时转化的过程中,原来单词之间的顺序也不会被考虑。比如我们现在有两组组词语。原创 2023-07-02 07:45:07 · 769 阅读 · 0 评论 -
机器学习优化器和SGD和SGDM实验对比(编程实现SGD和SGDM)
博主最近在学习优化器,于是呢,就做了一个SGD和SGDM的实验对比,可谓是不做不知道,一做吓一跳,这两个算法最终对结果的影响还是挺大的,在实验中SGDM明星要比SGD效果好太多了,SGD很容易陷入局部最优,而且非常容易发生梯度爆炸的情况,而SGDM做的实验当中还未出现这些情况。下面是一张跑出的实验图,事实上,我做了很多很多的实验,这是一件十分有趣的事情,在实验中,你可以看到这些优化器的特点,这很有趣,当然前提是这个优化器是你自己完全编程写的。(4)超参数的设置对于这两个模型的影响都是很大的,要小心处理。原创 2023-06-30 21:22:58 · 1230 阅读 · 0 评论 -
python pytorch教程-带你从入门到实战(代码全部可运行)
其实这个教程以前博主写过一次,不过,这回再写一次,打算内容写的多一点,由浅入神,然后加入一些实践案例。下面是我们的内容目录:1.先从数据类型谈起2.数据类型和其操作谈完,选择某一个方向开始学习和实践(深度学习)。1.先从数据类型谈起那如果从数据类型谈起,我们就要从下面几个角度去谈:1.1 如何生成pytorch的各种数据类型?1.2 pytorch的各种数据类型有哪些属性?1.3 pytorch的各种数据类型有哪些函数操作?首先,我们知道pytorch是一个计算库,也有人说是深度学习库,那么计算库呢,肯原创 2023-06-23 02:32:30 · 11052 阅读 · 5 评论 -
NLP学习笔记十二-skip-gram模型求解
上一篇文章,我们见到了skip-gram模型的原理,这里我们在陈述一下skip-gram模型其实是基于分布相似性原理来设计的,在skip-gram模型中,他认为一个词的内涵可以由他的上下文文本信息来概括,,那么基于这个原理,skip-gram模型设计了两个矩阵,一个是词向量表征矩阵,也就是这个向量中每一行代表了一个词的嵌入向量,也就是表征信息,又设计了一个表示词语在上下问中做背景词是的表征矩阵,在这个矩阵中每一行,表示一个词语做上下问词语时自己的表征信息。就是中心词的表征向量h乘以背景词的表征向量。原创 2023-06-15 01:14:30 · 1005 阅读 · 0 评论 -
NLP学习笔记十一-word2vec模型
注意:上面的2m 个mxn 矩阵都是同一个矩阵,所以这里也是博主很疑惑的一点,想了很久也没想通,每个位置的背景词汇按理不应该一样啊,但是,他用的确实同一个矩阵,所以skip-gram模型是有一个很大的问题的,他其实在论文中标识除了上下文位置的区分度,也就是上下文词汇是有位置去别的,但是这个模型在真正处理的时候,把上下文的词汇忽略了位置因素,相当于看成了一个集合,所以2m 个mxn 矩阵都是同一个矩阵。再介绍word2vec模型之前,我们需要先介绍一些背景知识。作为输入,乘以一个词向量表示矩阵,就是,原创 2023-06-13 17:13:02 · 1298 阅读 · 1 评论 -
NLP 学习笔记十-simple RNN+attention(注意力机制)
和之前lstm是一个原理,比如我们要实现英文到德语的翻译,那么可以先将英语文本的字符进行onehot编码,编码成一个个的向量,然后先经过一个simple RNN模型的信息提取,也就是下图的Encoder RNN模型,之后将最终提取的信息结合要翻译的德语文本,输入下一个simple RNN模型,这个simple RNN模型也就是Decoder RNN模型。感兴趣的伙伴,看这个笔记,最好从头开始看哈,而且我的笔记,其实不面向零基础,最好有过一些实践经历的来看最好。作为decoder模型的输入吗,现在我们取。原创 2023-06-13 14:19:53 · 1104 阅读 · 0 评论 -
NLP学习笔记九-机器翻译-seq2seq模型
lstm模型最终会输出记忆信息c和最终的输出h,其实我认为,c就是对应RNN里的最终输出h,lstm的最终输出h则是对c进行了一次输出门处理,也就是进行了一次tanh操作和遗忘处理。再次基础上,将德语已经翻译好的句子的第一个字符也进行one-hot编码得到t,将(c,h)和t按照lstm模型流程,t作为x输入,(c,h)作为上一个单元得到的记忆信息和输出然后得到德语下一个预测字符,将下一个预测字符作为x,上一次得到的(c,h)再输入,就变成正常的lstm模型了。seq2seq模型跟lstm模型有很大关系。原创 2023-06-12 15:21:08 · 751 阅读 · 0 评论 -
NLP学习笔记八-RNN文本自动生成
不过RNN对于英文文本自动生成还是有一些效果的,说明,该神经网络还是具有很强的特征容错性的和识别性的,对于输入的数据可以有着较好的提取能力。3.其实我们可以以拼音为单位进行处理,先对文本进行分词,在把分词的词语翻译成拼音,然后以拼音字符为单位进行输入,但是这个方法,得到的也会是拼音,最终,我们需要在将拼音翻译回来,这个方法是有很大问题的,因为不一定能翻译回来,生成的拼音必须要和汉语字尽可能对应,否则无法翻译成汉语。1.如果是中文文本生成,那么输入单元是什么,是词语,是一个字(英文文本输入是一个单词)?原创 2023-06-12 14:19:16 · 875 阅读 · 0 评论 -
NLP学习笔记七-多层RNN和双向RNN
我看的教学视频,这博主做的是文本分类,他说双向RNN效果很好,其实只是一个偶然,对于文本分类,双向RNN效果可能容易更好一点,这是因为双向RNN得到的两个结果向量可以更大程度的保留语句的信息,如果我们做的是文本推测,这就不一定效果会更好了。有些人可能就考虑了,为什么要用循环的,我不用循环的不行吗?不用循环的当然也可以,但是RNN实际上很像一个简单的感知机神经网络,如果每一次输入数据的时候另起一个RNN单元,网络会过深,很容易发生梯度消失,另外也会导致网络训练开销非常大。原创 2023-06-12 02:33:50 · 581 阅读 · 1 评论 -
NLP学习笔记六-lstm模型
但是,他认为之前的有些信息是不需要的,所以加入了遗忘门,同时也认为当前输入x与上一个状态。现在我们再来看看lstm,模型,我们可以发现,其实lstm模型,加入了很多限制,也就是它其实并没有去增强信息,二十不断地在遗忘信息,输入门、遗忘门、输出门起到的其实都是遗忘作用,另外lstm模型输入门、遗忘门、输出门的遗忘效果都是由上一个单元的输出和当前单元的输入共同决定的。和当前状态的输入x决定之前信息的遗忘,其实对于信息的遗忘,我认为lstm模型或许还有待完善的地方,时候,我们的遗忘策略可以更加完善。原创 2023-06-09 07:58:59 · 564 阅读 · 0 评论 -
NLP学习笔记五-simple RNN
那么下面我们讲完simple RNN,还需要将一些知识,simple RNN并不能直接得到什么,simple RNN其实也是相当于一个特征提取的模型,从词向量中提取最终相应的特征信息h,这就是simple RNN的作用,如果我们做的是预测或者分类任务,还需要加入一个全连接层对h进行处理。下面就是一个很典型的simple RNN的网络结构,当然在做simple RNN之前,我们也一定是做完了词向量表征的。我这个学习笔记,感兴趣的小伙伴,看的时候尽量从头开始看,这样更好理解,也更有收获。原创 2023-06-09 00:54:13 · 769 阅读 · 0 评论 -
NLP学习笔记四-word embeding
如上图,word embeding实在我们one-hot word之后才可以进行的,每一步处理技术都是环环相扣的,那么one-hot word之后,每个单词会被表征成一个1xN的向量,这个1xN的向量只有一个元素为1,其他全为0。矩阵的每一列就是我们最终的词嵌入向量。这个矩阵可以真正的将单词和单词之间的相关性进行一定程度上的反映,得到的词嵌入向量才有价值。矩阵并不是一个简单的矩阵,每一列向量代码一个词向量,同时如果映射到多维空间,应可以表设计相应的单词关系。矩阵是需要学习的参数矩阵,可以看出,其实。原创 2023-06-09 00:31:11 · 383 阅读 · 0 评论 -
NLP学习笔记三-数据处理基础
count word frequencies其实顾名思义,就是统计词频,这一步其实是在Tokenization的基础上进行的,首先我们需要先对文本进行Tokenization操作,然后,统计有多少种词语,再统计这些词语分别的个数。[to ,be]->[2,4],将单词因此其对应的索引值,为什么这里可以不用将单词映射成向量,因为在这里我们。NLP当中的Tokenization,博主以前无论是在文章中还是在代码中都能经常看到,这在自然语言处理中也是比较常用的技术。统计词频可以用于保留常用词去掉低频词。原创 2023-06-08 22:43:57 · 888 阅读 · 0 评论 -
NLP学习笔记二 - onehot编码和一般的数值编码
但如果对于国家,比如中国我们往往将他转化为一个长向量【1,0,0,0,0,0,0,0,0,0,0,,,,】为什么呢,因为国家有二百多个,如果我们每个都进行一个数值编码,比如将美国编码成132,澳大利亚编码成205,这样,在建模的时候,因为数值都集中在一个占位符上,我们的模型需要针对这一个占位符进行复杂多变的处理,这可能极大影响模型的性能,但是如果,我们将其分成一个向量,那么其实会让模型在进行训练的时候,对于每个占位符数据的处理可以更加的轻松,毕竟不是0就是1,总比1-205要轻松多了叭。原创 2023-06-08 22:13:33 · 171 阅读 · 0 评论 -
NLP-学习笔记一自然语言处理的概念
但是在博主最近也在看斯坦福开设的NLP这门学科-《深度学习自然语言处理》,在斯坦福开设的这门课程中他如下定义NLP,和百度百科的定义有所区别,他将自然语言定义为计算机科学、人工智能、语言学的交叉学科,它并不像百科百科那样将其定义为人工智能领域的一个重要方向,反而人工智能成为了他的一部分,另外,他并没有着重的去强调数学在NLP中的组成,在斯坦福这们课程中,自然语言处理与百度百科的定义而言,它更像是一门更大且更加独立的学科。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。原创 2023-06-06 04:21:45 · 146 阅读 · 0 评论