自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 浅谈抽取式文本摘要

文本摘要在NLP领域也是非常热门的一个领域,主要分成抽取式和生成式的,生成式的主要涉及到深度学习,个人觉得其实抽取式的文本摘要在效果上,只要算法得当,并不比生成式的差。这里我们一起来探讨一下抽取式的文本摘要,这里我们用朱自清的《背影》作为文本来提取10句这篇文章的摘要,我们来看看《背影》这篇文章:...

2020-05-16 11:32:32 225 0

原创 SVM做文本分类代码实现详解

之前的一篇博文 SVM做文本分类详细操作流程 由于是很早之前写的,大部分都是调用脚本,代码也不是很全,这里我再对之前的博文进行一个详细的补充。代码详见 GitHub 。 首先需要导入必要的包: import jieba import numpy as np import pandas as pd ...

2020-05-13 16:16:41 113 0

原创 Negative Sampling 负采样详解

在word2vec中,为了简化训练的过程,经常会用到Negative Sampling负采样这个技巧,这个负采样到底是怎么样的呢?之前在我的博文 word2vec算法理解和数学推导 中对于word2vec有了很详细的数学推导,这里主要讲解一下负采样是如何降低word2vec的复杂度的。 首先我们直...

2020-04-23 10:01:26 193 0

原创 超详细分析如何用python处理ECG&PPG数据

这篇博文主要和大家分享一下如何使用python处理ECG和PPG的数据,从而使用PPG和ECG的数据进行血压的推测。 首先普及一下ECG和PPG,首先ECG 心电图(electrocardiogram)心脏在每个心动周期中,由起搏点、心房、心室相继兴奋,伴随着生物电的变化,通过心电描记器从体表引出...

2020-03-20 15:23:24 624 2

原创 搭建一个简易的医疗导诊系统

这里我们来介绍一个简易的医疗导诊系统,基于我们产品有五大测量的功能:心电,血氧,血压,血糖和体脂。这个医疗导诊系统主要是通过用户描述的一些症状来判断用户可能的指标异常,然后引导用户进行相关指标的测量,如果测量得到相关指标有异常的话,那么就指导用户去医院相关科室就诊。整个流程如图所示: 所以说首先...

2020-02-20 14:54:26 288 0

原创 如何训练一个词向量

现在在NLP领域,词向量是一切自然语言处理的基础,有了词向量我们就可以进行数据分析,文本聚类分类的一系列操作了。接下来我们就开始学习如何训练词向量,之前我们有介绍关于 word2vec 的博文 word2vec算法理解和数学推导,这篇博文我们就一起来学习如何实现词向量的训练。 首先我们运用的语料是...

2019-09-26 16:44:26 415 0

原创 中文命名实体识别NER详解

中文命名实体识别是在自然语言处理领域有着具足轻重的地位,因为在很多应用中,我们一定要提取出我们话术中的实体,所以说命名实体识别是非常重要的。一般来说,现在网上有很多NER的开源库,我们通过调用API就可以进行人名、地名、时间、机构名等实体的识别,效果也非常不错。但是这仅仅是限于某一些领域的命名实体...

2019-09-21 16:40:17 755 6

原创 中文情感分析

情感分析在NLP领域中是应用很广泛的技术,一般用深度学习来解决这一类的问题。其实我的理解就是情感分析就是一个分类问题。这里我爬取了京东小米9的用户评论,正面和负面的评价各1000条,爬虫和整体的代码我放在了 GitHub 。然后我把预训练的词向量文件放在了 百度网盘,提取码:rxci。 我们一起来...

2019-09-19 16:01:28 1701 5

原创 中文词性标注详解

所谓的词性标注在NLP领域是一个应用非常广泛的技术,总的来说,词性标注所解决的问题就是说,给定一句话 sss,我们将sss进行分词操作,可以将 sss 分成 nnn 个词,那么 sss 可以表示成:s=w1w2...wns = {w_1}{w_2}...{w_n}s=w1​w2​...wn​,我们...

2019-09-18 15:39:14 676 0

原创 LeetCode 72. 编辑距离

编辑距离在自然语言处理中的应用是非常广泛的,比如在文本纠错中,编辑距离是必不可少的算法,下面这个题目就是计算两个单词的编辑距离计算: 这道题目基本上用普通的办法很难去解决,只能考虑用动态规划来进行递推解答。首先我们可以确定只定义一维的DP[i]DP[i]DP[i]不能够有效地简化问题的处理,那么...

2019-09-02 14:47:07 56 0

原创 LeetCode 3. 无重复字符的最长子串

这道题目是很经典的一道字符串题目,是要我们找出字符串中不含重复字符的子字符串长度,题目如下所示: 刚拿到这道题目的时候,似乎唯一的办法就是穷举法,双重遍历整个字符串,找到不含重复的字符的字符串并记录长度,然后取最长的一个,所以我们需要 O(N2)O(N^2)O(N2) 的时间复杂度。我们秉承着“...

2019-08-28 11:16:07 35 0

原创 LeetCode 53. 最大子序和

这是一道痕常见的题目,这里我们一起来学习如何使用动态规划的思想来查找一个序列中最大子序列和,题目如下: 一般来说,我们首先会想到暴力求解的方法,双重循环遍历所有的子序列,然后求和取最大值,这样的方法显然比较低效。我们可以通过动态规划的思想来更新这个序列,如果加上这一位的数比之前一位的数要大,那么...

2019-08-27 22:33:04 41 0

原创 LeetCode 135. 分发糖果

这道题目是一道很有意思的题目,是老师给下朋友分糖的策略,题目如下: 这道题目的难点就在于,相邻的孩子中,评分高的孩子必须获得更多的糖果。我们必须把所有的小朋友左右都进行遍历一遍,然后根据评分来分配糖果,我们可以用如下策略: 首先我们给每个小朋友先发一颗糖,然后正向遍历一遍小朋友的评分,如果相邻的...

2019-08-27 15:41:46 41 0

原创 LeetCode 650. 只有两个键的键盘

这是一道很有趣的题目,我们要在只能进行全部复制和粘贴操作的情况下做最少的操作次数,题目如下所示: 这道题目从表面上看,这道题目似乎没有思路,我们应该在什么时候复制什么时候进行粘贴,这些细节都是很难处理的。所以我们可以不考虑这些细节,直接用动态规划的思想来分析这道题目,那么这道题目的核心就是求解出...

2019-08-26 10:13:46 43 0

原创 LeetCode 46. 全排列

这道题目是数学中的一个排列组合的问题,我们要用代码来罗列出所有可能的组合,题目如下: 在数学中,这是一道非常简单的排列组合,很容易就解决了。但是我们代码中需要用到回溯的思想,什么是回溯的思想呢,我们可以把这个数字序列可能的组合进行树形分解,如下图所示: 我们把这个树形结构分成3层。第一层是红色...

2019-08-23 14:59:16 31 0

原创 LeetCode 435. 无重叠区间

这道题目是在给定的集合中找到需要去掉的区间最小数量,使得剩余区间互相不重叠,题目如下: 这道题目似乎无从下手,因为找重叠的区域确实是比较麻烦的。我们可以尝试用贪心算法来解答这个问题,我们假设有集合:intervals=[[1,2],[3,5],[2,3],[3,6],[7,8],[6,7]]in...

2019-08-14 17:32:04 67 0

原创 LeetCode 455. 分发饼干

这是一道很有意思的题目,给小朋友分饼干,要让尽可能多的小朋友满意,问如何分配饼干,题目如下所示: 这里每个小朋友的胃口值都是不一样的,有的小朋友容易满足,有的小朋友比较难满足,甚至还可能满足不了。我们如何让尽可能多的小朋友满意呢,这里我们可以尝试用贪心算法来解决分配的问题,所谓贪心算法就是我们尽...

2019-08-14 15:24:04 29 0

原创 LeetCode 377. 组合总和 Ⅳ

这道题目是在数组中找到和为给定目标正整数的组合的个数,题目如下所示: 这道题目就难在不限数组中元素使用的个数,我们如果用穷举的方法很难得到正确的答案。于是我们可以想到用动态规划的思想来解决这个问题。 首先我们求的是和,我们就可以把和进行拆分,如题目中的例子为例,nums=[1,2,3]nums ...

2019-08-12 14:52:39 42 0

原创 LeetCode 309. 最佳买卖股票时机含冷冻期

这是股票买卖系列的一道题目,这道题目的难点主要是加上了一个卖出股票的一个冷冻期,题目如下所示: 这里因为有了一个冷冻期,我们整体的解题难度就比较大了,也不好从正常的思路去解答。我们可以从动态规划的思想来解决问题。首先我们定义三个列表 sell、buy、cool,其中 sell[i]sell[i]...

2019-08-10 19:06:52 39 0

原创 LeetCode 62. 不同路径

这是一道经典的二维动态规划题目,题目如下: 这道题目用穷举的方法肯定是没有办法求解的,使用动态规划算法是最优秀的,我们可以想到每走到一格的路径数等于这个格子上面一格和左边一格的路径数之和,那么我们就可以定义动态规划的递推方程了: dp[i][j]=dp[i−1][j]+dp[i][j−1]dp[...

2019-08-10 12:29:08 81 0

原创 LeetCode 279. 完全平方数

这道题目是要用若干个完全平方数组成一个整数 n,目的是要组成和的完全平方数的个数最少,题目如下: 这道题目看似无从下手,因为没有办法通过暴力去求解,因为把一个数分解成数的和的形式,我们不知道可以分解成多少个数。所以我们可以考虑使用动态规划明首先我们定义一个长度为 n+1 的列表,然后我们可以定义...

2019-08-10 11:10:13 44 0

原创 LeetCode 108. 将有序数组转换为二叉搜索树

这道题目目的是将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。所谓的平衡二叉树,是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。如图所示: 拿到题目似乎无从下手,要建立一个平衡二叉搜索树,我们可以联想到快速排序的算法思想。因为数组是有序的,首先我们可以找到一个中位数,...

2019-08-09 14:39:38 37 0

原创 LeetCode 112.路径总和

这同样是一道递归和二叉树的题目,就是给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。返回一个布尔类型,题目描述如下: 这道题目看似没有头绪,拿到题目很多朋友就会想是不是要深度优先遍历一遍二叉树,然后分别求和,找出结果。其实,我们可以运用一...

2019-08-08 17:00:21 42 0

原创 LeetCode 226.翻转二叉树

这道题目是一道很经典的关于二叉树的算法题,题目如下: 题目的描述非常简单,就是翻转一棵给定的二叉树,然而有趣的是这个备注,这个故事是 mac 系统的包管理工具 Homebrew 的开发者 Max Howell 去谷歌面试的时候没有做出这道面试题而遭淘汰了,所以这道题目也是引发血案的一道二叉树题目...

2019-08-08 14:44:58 39 0

原创 城市类知识图谱的搭建(elasticsearch+Django)(下)

上一篇博文说了整个工程的数据整理,我们这里再来说一下如何进行语义的理解,如何理解用户所要问的问题。这里我们运用的是类似一个正则匹配的规则匹配来解析我们输入的 query,这里我拍脑袋列出了城市类的知识图谱的一些常见的提问方式,如下图所示: 这里我列出了8大类城市类的提问方法,比如第一类的问题表示...

2019-08-05 12:13:35 748 2

原创 城市类知识图谱的搭建(elasticsearch+Django)(上)

这里写一篇博文来整理一下如何构建城市类的知识图谱,废话不多说,一般来说在知识图谱中比较重要的技术点就是实体识别和关系抽取。就比如在城市的类别中,一个城市有它的一些特性,比如说北京,如下图所示: 中间表示是城市北京,蓝色圆框中间表示一些内容,而连接线表示北京与这些内容的一些关系,我们在做知识图谱的...

2019-08-03 16:28:06 603 8

原创 搭建一个简单的FAQ系统

现在的智能问答系统的应用是非常普遍的,比如说客服,前台机器人,讲解机器人等很多场景都可能会用到FAQ问答系统,所谓的FAQ就是 frequently asked questions,也就是说在某个场景下,比较常见的一些问题。 首先我们来看看整体的FAQ流程,我们需要对输入的问题进行预处理,比如去停...

2019-08-01 12:07:45 993 0

原创 Transformer详解

Transformer是Google团队在17年提出的,在目前NLP的领域应用非常的广泛,是由Ashish Vaswani等人在论文《Attention is all your need》中提出的。Transformer 在机器翻译任务上的表现超过了 RNN,CNN,只用 encoder-deco...

2019-07-30 10:26:02 1373 12

原创 LeetCode 69.x 的平方根

这道题目其实就是求一个数 x 的平方根,不能使用调库实现,并且是取整数部分,题目如下: 这道题目其实很简单,主要的思想其实就是二分查找,如何进行二分查找呢,首先我们来看看二分查找的代码模板: left, right = 0, len(array) - 1 while left <= rig...

2019-06-26 10:38:31 46 0

原创 LeetCode 98.验证二叉搜索树

这道题目是二叉搜索树种很经典的一道,题目说明很简单,就是验证一棵二叉树是否是二叉搜索树,题目如下: 解决这样的题目就需要从二叉搜索树的特性入手,那么二叉搜索树最重要的一个特性就是:二叉树中所有节点的左子树中的节点的值都小于该节点的值,所有节点的右子树中的节点的值都大于该节点的值。 根据这个特性,...

2019-06-25 14:16:59 40 0

原创 LDA主题模型

LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,这个模型包含了词、主题和文档三层结构。所谓的生成模型,就是说我们人为一篇文章的每个词都是通过 “以一定概率选择了某个主题,并从这个主题中以一定的概率选择某个词语” 的这样的一个过程得到的。其中,词、主题和文档的...

2019-06-04 11:29:45 1980 0

原创 随机梯度下降SGD算法理解

随机梯度下降算法(Stochastic gradient descent,SGD)在神经网络模型训练中,是一种很常见的优化算法。这种算法是基于梯度下降算法产生的,所以要理解随机梯度下降算法,必须要对梯度下降算法有一个全面的理解。 梯度下降: 这个算法我在之前的博文Logistic Regressi...

2019-05-29 10:13:21 3243 0

原创 LSTM架构详解

LSTM 是深度学习中很常见也很有用的一种算法,特别是在自然语言处理中更是经常用到,那么 LSTM 架构中的内部结构又是什么样子的呢?首先我们来看 LSTM 的整体框架: 在这幅图中,中间是一个 LSTM 模块,有三个输入分别是:ct−1{c^{t - 1}}ct−1、ht−1{h^{t - 1...

2019-05-25 16:53:49 6117 9

原创 attention机制详解

attentionattentionattention机制一般来说会用在深度学习中,在图像处理和自然语言处理方面都有所应用,在自然语言处理中一般会用在机器翻译中,如下图所示,假设我们要翻译“机器学习”四个字: 这是一个简易的RNNRNNRNN模型,h1−h4h1-h4h1−h4 是 t1−t4t...

2019-05-23 10:47:37 189 0

原创 LeetCode 322.零钱兑换

这道零钱兑换的题目很有意思,给定总金额和不同面额的硬币,需要找到硬币凑成金额的最少硬币数,题目如下所示: 如何来解决这个问题呢?首先拿到这个题目,很多人会想到的是贪心算法,首先选取面值最大的硬币,然后依次选取面值较小的硬币,这种解法看似可行,其实还是有不可行的地方,我们举个例子:coins=[1...

2019-04-29 14:26:02 70 0

原创 LeetCode 300.最长上升子序列

这道题目就是在一个数组中找到最长的上升子序列,且元素之间不必相邻,题目如下所示: 除了暴力解法,我们最优的解法还是用动态规划DP的方法来解答这个问题,那么解答的流程是怎么样的呢?我们来看下面这个流程图: 首先有一组 [10,9,2,5,3,7,101,18,21][10,9,2,5,3,7,1...

2019-04-29 11:37:31 106 0

原创 LeetCode 152.乘积最大子序列

这道题目是给定一个整数数组,返回乘积最大的连续子序列,题目如下所示: 拿到题目我们肯定会想到的是暴力解法,通过两层循环遍历数组中所有的元素,记录每一次循环之后的全局乘积最小值,直到循环结束,我们就可以得到乘积最大的连续子序列,显然这样的解法时间复杂度达到了 O(n2)O(n^2)O(n2)。 除...

2019-04-27 10:59:43 85 0

原创 LeetCode 120.三角形最小路径和

这道题目是给定一个三角形的数组,找到自顶向下的的一条路径,使得路径上的元素之和最小,首先我们来看一下这道题的题目: 首先我们拿到这个题目,我们会想到递归的方法,因为我们每次向下只能选择相邻的元素,那么我们递归的方程可以写成: triangle(i,j){ triangle(i, j + 1);...

2019-04-26 17:24:39 61 0

原创 LeetCode 70.爬楼梯

这是一道比较简单而且很典型的动态规划算法的题目,首先我们来看看题目: 拿到这个题目我们就可以想到动态规划的思想,首先我们来倒着推导,我们要达到第 nnn 阶台阶,必须是从第 n−1n-1n−1 或者 n−2n-2n−2 阶台阶上来的,那么我们假设第 nnn 阶台阶的走法有 f(n)f(n)f(n...

2019-04-26 15:55:31 44 0

原创 Batch Normalization的理解

首先在神经网络中,每一层网络结构都会有一个激活函数,以我们比较常见的sigmoid函数为例,我们可以看看sigmoid激活函数的图像如图所示: 我们试想一下,如果这个时候某个神经元的输入为4,那么经过sigmoid函数之后,这个神经元的输出是y=0.982y=0.982y=0.982,如果神经元...

2019-04-25 15:09:35 84 0

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