自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 收藏
  • 关注

原创 剑指offer题目描述+代码

1、剑指Offer 25:合并两个有序链表题目描述解题思路通过不断对比l1和l2的值的大小对链表进行添加。代码实现# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def mergeTwoLists(self, l1: ListNode,

2021-03-28 15:06:23 423

原创 Leetcode:字符串问题ii

第一章 字符串相关问题II1、Leetcode 387:字符串中的第一个唯一字符题目描述解题思路使用哈希表,key存储字符,value存储对应下标。代码实现class Solution: def firstUniqChar(self, s: str) -> int: #建立哈希表 dic=collections.defaultdict(list) for i in range(len(s)): dic[s[i

2021-03-25 13:00:37 258

原创 Leetcode每日好多题:排序算法+字符串相关问题

第一章 红黑树和AVL树树的旋转(当平衡因子不在-1,1,0中)红黑树第二章 排序算法1、简单的排序冒泡排序遍历每个位置的元素,与相邻的数字作比较,不断交换位置。def main(nums): n=len(nums) for i in range(n): for j in range(0,n-i-1): if nums[j]>nums[j+1]: nums[j],nums[j+1]=nums[

2021-03-23 23:02:58 381

原创 Leetcode:每日很多题+字典树&并查集&高级搜索

第一章 字典树字典树的基本性质核心思想1、Leetcode 208:实现前缀树题目描述解题思路相对而言比较简单,结构为集合套集合。具体步骤解释在代码中。代码实现class Trie: def __init__(self): """ Initialize your data structure here. """ #定义一个tree,以字典的形式 self.look_up={} def i

2021-03-20 16:48:51 176

原创 Leetcode每日好多题+动态规划

第一章 动态规划分治+最优子结构将一个复杂的问题分解成很多简单的子问题关键点动态规划和递归没有根本上的区别共性:找到重复子问题差异性:最优子结构,中途可以淘汰次优解1、Leetcode 62:不同路径题目描述代码实现Approach 1每一个位置都由左边或者上边状态转移得到class Solution: def uniquePaths(self, m: int, n: int) -> int: #建立dp矩阵 dp=[[0] *(

2021-03-16 22:19:51 472

原创 Leetcode各种题型题目+思路+代码(共176道题)

1、Leetcode-1047题目描述:题目思路:使用stack的思路,先把字符串的第一个字母压栈,然后判断下一个待压栈的字母是否与stack[-1]的字母相同,如果相同,该字母不进入stack中,且stack.pop()将重复的字母剔除。如此遍历一遍字符串,最后返回stack中的元素即为消除重复字后的字符串。举例:“abbaca”建立栈把a压栈b与a不相同,压栈第二个b和stack栈口元素相同,不要第二个b且把栈扣的b pop掉。第四个元素:a,此时stack中还有一个元素a,相同,

2021-03-09 11:07:11 8853

原创 Word2vec 实战

1、对英文文本做情感分析import osimport reimport numpy as npimport pandas as pdfrom bs4 import BeautifulSoupimport nltk.datafrom nltk import word_tokenizefrom nltk.corpus import stopwordsfrom gensim.models.word2vec import Word2Vecfrom sklearn.ensemble i

2021-02-28 15:56:01 399 1

原创 实战1:NLP到word2vec

NLP Word2Vec1、NLP原理及基础NLTK:自带语料库词性分类库自带分类,分词功能1.1 文本处理流程:1、文本预处理2、分词3、make features4、machine learning把人能够理解的文本变成机器可以学习的表达式1.2 Tokensize:分词对于英文:tokens=nltk.word_tokensize(sentence)对于中文:自定义语料库,使用HMM/CRF等方法import jieba#jieba返回的是列表seg_

2021-02-28 09:42:26 159

原创 NLP 3.9 使用permutation 对 Language model的缺点进行改进;Transformer-XL:对Transformer空间复杂度高进行改进

BERT 的优缺点:优点:1、考虑双向信息(上下文信息)2、Long term dependency缺点:1、测试数据没有masked,训练和测试数据不匹配2、缺乏生成能力3、针对每个mask预测时,没有考虑相关性。类似朴素贝叶斯Auto-regressive LM 的优缺点:经典的Language mode从左到右的语言模型优点:1、具备生成能力2、考虑了词之间的相关性3、无监督学习4、严格的数据表达式缺点:1、单向的2、离得近的单词未必有关系3、看不到很远的单词

2021-02-26 12:39:00 1008 1

原创 NLP 3.8 GMM

1、GMM:Gaussian Mixture ModelK-means:hard clusteringGMM: soft-clustering假设数据集的每个样本都是由多个高斯分布组成。即每个高斯分布都会对这个样本值有一定权重的贡献。pi:每个高斯分布的概率,i=1,2,3…kμ\muμ:每个高斯分布的均值σ\sigmaσ:每个高斯分布的方差2.1 GMM 的 目标函数:方差的几种情况:identity,对角矩阵,且矩阵值相同,圆形diagonal,对角矩阵,但值不相同,正椭

2021-02-26 11:02:10 199

原创 NLP 3.7 核函数+变分推断

1、核函数将样本值映射到高维空间,使得非线性不可分的问题可分。如高斯核函数解决内积产生过大的时间复杂度的问题面试题:1)为什么在SVM中应用核函数?对于线性不可分的数据,需要把它映射到高维空间,使它线性可分对于svm的目标函数,有内积项,如果映射增加degree,会使得时间复杂度特别大。2)有哪些常见的核函数:线性核多项式核函数高斯核函数sigmoid核函数3)如何在svm中选择核函数?如果特征的数量大到和样本数量差不多,使用LR或者线性svm如果特征的数量小,样本

2021-02-25 20:54:49 480

原创 NLP 3.6 LDA, Gibbs sampling & collapsed gibbs sampling

1、主题模型 LDA文本类社交推荐1.1 Introduction有大量的文本资料LDA接受的最小单元是document学习出每个文本的主题设定超参数Koutput:每个文档会有一个概率的分布,主题分布,选择概率最大的簇作为当前文档分类后的主题。θ\thetaθ词主题:在每个主题下,每个单词出现的概率有多大。每个单词在每个主题下出现的概率。ϕ\phiϕTopic 是一个隐变量。对于词主题,把每一个簇中出现概率最大的几个单词拿出来,查看它们的

2021-02-24 07:30:57 418

原创 NLP 3.5 Transformer的结构,BERT&masked language model

1、TransformerLSTM 和 transformer可以互相替代。Long term dependency 是 rnn/lstm-based models 的主要问题。以及串行计算的高时间复杂度。shallow model,只在时间维度上deep,纵向的角度是浅层的。Linear computation 是时序模型的通病。1.2 Transformer的结构encoder+decoder: 每个部分都是deep的每个encoder:self-attention+feed forwar

2021-02-23 09:29:32 3844

原创 NLP Project 2:情感分析,使用tf-idf,Logistic回归和SVM

Step 1: 文本读取1、读取数据文本读取:数据分为三份:pos_train,neg_train和test。首先对pos和neg的data读取,将内容取出来这里的一个难度是,对于同一组样本,有的以多行的形式展示,还有某些样本被多行之间还有空格。如以下情况:处理方法是建立一个save列表,每次遇到文字就储存进去,遇到当前行包含review的行就把这些文字合并成字符串添加到train_pos_comments中。def process_file(path,list): save=

2021-02-22 23:03:12 1198

原创 NLP 3.4 Attention,self-attention

1、回顾Seq2Seq模型预处理中,要保证每个seq长度一致输出时,找到长度最长的len,然后把其他输出补齐结构的问题1、梯度问题:当seq过长时,当前词无法捕获到很前面时刻的单词信息,梯度消失2、应用的角度:w=(prev,c),对于某一个词的翻译,只需要观察原始seq中的某一部分的重要信息。使用attention解决3、c没有考虑句子的长度4、BottleNeck:决定了decoder的生成效果2、Seq2Seq 的 Attentionattention:学习每个单词权重的过

2021-02-22 09:33:22 116

原创 NLP 3.3: Seq2Seq

1、Drop outm(k)m^{(k)}m(k)决定了哪些节点的weight被drop outkeep_prob 需要调参2、为什么drop out 防止过拟合答:减少了模型的复杂度对于每一个mini-batch,使用drop out 训练了不一样的模型,在预测时可以使用这些模型的average3、机器翻译基于深度学习的机器翻译系统,端到端的翻译,不需要语法。例如使用:RNN/LSTM模型...

2021-02-21 10:11:23 195

原创 NLP 3.2 Representation learning and about DL

1、Representation Learning表示学习:Feature Engineering,学习更好的表示特征向量的方式如何去评估一个表示优于一个表示?PCA:学习在低维空间中更好地方法The better representation lies in lower dimensional manifold2、What makes a good representation2.1 Smoothness不平滑的函数很难使用梯度下降去找到最优解2.2 Multiple Explan

2021-02-20 12:23:31 116

原创 NLP 3.1 RNN,LSTM,GRU

1、为什么需要递归神经网络?RNN可以考虑上下文关系,语序RNN可以减少参数量,减少模型复杂度可以处理不同时长的数据2、Recurrent Neural Network——递归神经网络2.1 构造语言模型2.2 对于情感分析只需要在最后时刻将rnn cell的输出接入一个softmax2.3 RNN formulation线性的转换+非线性激活函数2.4 RNN vs HMM在hmm中,每一个时刻只有一个状态被激活。RNN每个时刻的每个状态都是一个连续性的随机变量——分布式表示方

2021-02-19 09:31:41 215

原创 NLP 2.9 深度学习与神经网络

1、激活函数1.1 Linear Activation function:直接输出 pre-activation的结果特点:No boundUseless使用情况:神经网络的最后一层如果每一层的叠加都是线性转换的话,那么最后输出的结果就只是每一层weight的乘积和,所以神经网络需要非线性转换的activation function1.2 Sigmoid 函数特点:1、可以将输入值映射到(0,1)区间2、严格递增的函数1.3 Tanh 函数映射到(-1,1)区间严

2021-02-18 10:46:39 188

原创 NLP 2.8 Word2Vec,Skip-Gram model,Subword learning, ELMO

1、Word2Vec1.1 one-hot encoding的缺陷1)稀疏的表示方法,维度太高2)无法表达词的相似性3)表达能力弱(泛化能力)通过余弦相似度可以表达句子之间的相关性1.2 词向量分布式的表示法:维度远小于one-hot encoding在semantic space希望把语义相近的词聚在一起3、Global generation of distributed representation泛化语义相关capacityDense 稠密在一个文章里,离得

2021-02-17 17:17:45 293

原创 NLP 2.8 Log-linear model 和CRF的预测和参数估计

1、有向图与无向图模型2、有向图和无向图的联合概率feature function/factor成为概率的基本条件:z(x):normalization form/partition function离散性数据:使用viterbi算法求解连续性:蒙特卡洛算法3、生成模型和判别模型CRF 属于判别模型4、Log-linear model:一类模型Logistic regressionConditional Random field4.1 Multinomial Lo

2021-02-17 15:17:32 219

原创 NLP 2.7使用EM算法估计Pi,A,B

1、EM 算法em算法中使用了Jenson 不等式EM derivation 是一个coordinate descent 算法。分别优化隐变量和模型参数。2、Remarks on EM无法保证global optimalem增加,一定会收敛3、k-means 算法k-means cost functionk-means算法是特殊的GMM算法,把每一个样本点当作属于一个独立的分布。4、MLE for GMM在GMM中,一个样本出现的概率是多个高斯分布的叠加概率。5、C

2021-02-16 23:25:21 238

原创 NLP 2.6 HMM介绍,viterbi算法,F/B算法以及隐变量模型

1、时序模型非时序类数据:图片一个人的特征时序类数据:沿着时间的维度变化的,长度是不确定的股票价格语音文本温度的变化2、一些时序模型HMM/CRF:传统模型RNN/LSTM3、HMM的介绍 Hidden Markov Model状态序列 latent variable观测序列 observed...

2021-02-16 20:54:51 274

原创 NLP 2.5信息抽取 Information extraction

信息抽取介绍 Information Extraction1、信息抽取概要 (IE)Extraction information from unstructured text(非结构化数据)图片文本video音频抽取实体(entities):人,地名,时间医疗领域:蛋白质,疾病,药物抽取关系(relations)位于 located in工作在 work at部分 is part of先做实体抽取,再做关系抽取2、信息抽取应用场景2.1 一个例子1、NER

2021-02-15 16:26:08 1185 1

原创 NLP 2.4: Kernel trick 和svm

1、Linear SVM的缺点无法将非线性的数据分开解决:1、把数据映射到高维空间2、使用神经网络2、数据映射到高维空间缺点:复杂度的增加Kernel trick使用可以W维持时间复杂度3、拉格朗日等号处理条件Multiple equalities4、拉格朗日不等式条件处理5、KKT条件6、KKT Condition of SVM...

2021-02-15 11:14:17 206

原创 NLP 2.3:SVM和hinge loss

Linear Classifier2、Margin3、SVM的目标函数——hard constraint4、Soft constraint加入惩罚因子5、Hinge Loss6、Gradient Descent for Hinge Loss7、Primal-Dual 介绍

2021-02-13 17:40:00 82

原创 NLP2.2:梯度下降法的收敛性证明

1、复习凸函数凸函数有全局最优解神经网络是非凸函数,有大量的局部最优解,需要好的初始化(pre-training)2、如何解决一个非凸函数:Set cover problem2.1 Approach 1: Exhaustive Search——穷举法1、遍历每一个集合:看它们是否有等于U2、一次选择两个集合:共有16种不同的方法,看它们的并集是否满足U3、一次选择三个集合…考虑了所有的可能的组合,可以得到全局最优解2.2 Approach 2: Greedy search:贪

2021-02-13 16:50:55 769 1

原创 NLP 第二部分:(1): optimization, linear programming solver

1、变分推断2、OptimizationAI 问题=模型+优化

2021-02-13 11:20:10 134

原创 NLP(18): Lasso and coordinate descent

1、参数搜索策略grid search随机搜索:random search:随即在区间选择遗传算法: genetic algorithm:尽量往好的方向搜索。贝叶斯优化: Bayesian optimization深度学习得超参数是很复杂的2、正则的高级应用Time-Aware Recommendation矩阵分解对矩阵里空的区域做预测给定user-rating matrix分解成user matrix和item matrix在user和item见加入了一个k维的隐变量,其中每

2021-02-12 18:05:33 234

原创 NLP(17): 交叉验证,MAP vs MLE

1、NLP应用场景Affective computing图像文本语音2、情绪识别实战1、读取csv文件2、划分标签和特征3、训练数据和测试数据分割4、对x_train, y_train做tf-idf5、使用逻辑回归和网格搜索,超参数调参——使用GridSearchCV6、混淆矩阵——confusion_matrix3、Cross validation在训练集上,再划分验证集,使用验证集去对模型中的超参数进行调参,对于使用L2正则的logistics 回归,λ\lambdaλ

2021-02-12 09:50:32 307

原创 NLP(16): 过拟合和正则

1、L2-Norm正则的意义:不要让损失函数完全等于0,损失函数完全等于0时,在训练集上表现太好会导致过拟合现象产生,且对于逻辑回归,参数w的值会趋于正无穷。加入正则项,可以使参数的w变小,使其模型生成的拟合曲线变得平滑。λ\lambdaλ:超参数, weighting factor超参数大的时候,w会变小超参数很小的时候,w会变得很大L2-norm的值取参数二范式的平方对于超参数的选择,一般使用交叉验证L2-Norm下的梯度下降2、模型复杂度与过拟合模型过于简单,容易欠拟合,

2021-02-11 14:53:42 257

原创 NLP(15):朴素贝叶斯

第一节:朴素贝叶斯求最优解(closed-form)MLE 极大似然估计拉格朗日乘子项1、求最优解对于凸函数,直接对函数和参数求偏导,令其等于0梯度下降 (1st order)2nd order 牛顿法2、有限制条件的求最优解constrained optimization——使用拉格朗日乘法项equality constraintinequality constraint拉格朗日的核心思想:将constraint写入目标函数里。3、Maximum likelihoo

2021-02-11 10:07:38 85

原创 NLP(14):Logistic Regression

Logistic Regression1、使用情况,分类问题贷款违约广告点击商品推荐情感分析疾病诊断核心:找到特征到标签的映射关系2、使用sigmoid函数将线性回归的输出值映射到(0,1)区间逻辑回归是线性的:决策边界为线性的。在决策边界上的任意点,既可以属于左边的分类也可以属于右边的分类3、逻辑回归的目标函数加入log:避免overflow和underflowMinimizing the Function4、Gradient DescentGradien

2021-02-10 16:57:29 166

原创 NLP(13): Recall,precision,F1-score

系统的评估1、准确率:accuracy预测正确的/所有样本个数2、精确率:precision预测为正的里面有多少真实为正的样本3、召回率:recall真实为正的样本有多少预测为正对于一个1000个样本的training data,5个人为癌症,95个人为非癌症。准确率很高,但并不是有效的评估。acc:TP+TN/TP+TN+FN+FPprecision:TP/TP+FPrecall: TP/TP+FN4、同时使用recall和precision做模型评估F1-scores

2021-02-10 15:36:39 208

原创 NLP(12): Pandas_

第一节 初始Series为什么学习pandas:因为pandas含有使得数据分析工作变得更快和更简单的高级数据结构和操作工具因为pandas时基于numpy来进行构建的,让以numpy为中心的应用变得更加的简单。1、Series类型说明这个就是一直类似于一堆数组的对象,它是由一组数据以及一组与之相关的数据标签索引组成(索引)。仅由一组数据即可产生最简单的series。obj=Series([1,2,3,4,5)obj.valuesobj.index2、自定义索引obj=Series([

2021-02-10 09:38:06 219 1

原创 NLP(11): 词性标注实战

词性标注 Pos Tagging1、introduction每一行的单词对应它的词性学习如何把一个句子中的每个单词进行标记noisy channel model:argmaxP(z|s)=p(s|z)p(z)=p(w1w2w3…wn|z1z2z3…zn)p(z1z2…zn)前半部分:给定一个词性,出现该词的概率后半部分:biagram prob目的:找到最好的z,使得在给定s下,词性的概率最大加入log需求:求出三个部分的概率:step 1: compute A,B,

2021-02-09 15:59:49 269

原创 NLP(10):Numpy

第一节 装饰器, 闭包的应用#获取每一个函数运行的时间import timedef runtime(func) def get_time(): print(time.time()) func() return get_time@runtimedef student_fun(): print(“学生跑”)student_run()#如果函数有参数怎么解决#有函数的装饰器#获取每一个函数运行的时间import timedef runtime(func) def get_t

2021-02-09 12:35:02 210

原创 NLP(9): 机器学习介绍,朴素贝叶斯,python高阶函数应用

第一节:机器学习D={X,y}x:特征y:标签f:学习x到y的映射关系1、机器学习定义:自动从已有的数据里找出一些规律(与专家系统的区别),然后把学到的这些规律应用到对未来数据的预测值,或者在不确定环境下自动地做出一些决策。NameSupervised learningunsupervised learning生成模型朴素贝叶斯GAN/HMM/LDA/GMM判别模型逻辑回归/conditional random fieldNone2、Supervi

2021-02-09 10:21:38 244

原创 NLP(8): 专家系统和good turning smoothing

第一节:Good-Turning SmoothingNcN_cNc​:出现c次的单词的个数N3N_3N3​: 有多少个单词出现三次考虑新的物种,将下一次出现的概率的部分给其他新的物种,所以对于已经有的物种下一次出现的概率会小于mle得估计。缺点:在原数据上出现21次的下一个的概率需要出现22次得单词的个数。但有可能统计不出22次的内容。且不一定有单词出现22次。第二节:利用语言模型生成句子语言模型是一个生成模型通过模型可以生成一些新的数据:图片,音乐,文本1、unigram mode

2021-02-08 23:13:29 360

原创 NLP(6):一些简单得dp

第一节 Dynamic Programming1、定义1、问题目标2、状态的定义 opt[n]3、状态转移方程: opt[n]=best_of(opt[n-1],opt[n-2],…)2、问题1:最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。代码def maxSubArray(nums): if len(nums)==1: return nums[0] max_ret=nums[0]

2021-02-08 12:12:38 103

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除