NLP
文章平均质量分 88
深圳湾刘能
耐得住寂寞,持续耕耘。
展开
-
keras实现seq2seq做Chatbot
今天在《自然语言处理实战》一书中看到一个seq2seq实现的Chatbot的例子,感觉可以很好地体现出seq2seq的架构,这里我们一起来实现如何用seq2seq实现Chatbot。首先,seq2seq架构大家都比较熟悉,我们一起来看看本文的seq2seq的架构是怎样的:首先是encoder,这里我们使用LSTM,当encoder编码完成序列之后,会生成一个中间向量,然后中间向量连接着decoder,decoder用的也是LSTM,在decoder的部分,以作为解码的开始,作为解码的结束。整个Chat原创 2020-10-28 16:16:01 · 776 阅读 · 0 评论 -
使用pytorch做文本多分类的原理与代码保姆级详解
在B站看到刘洪普老师的视频,用RNN对18个国家的人名进行多分类的训练,然后对人名所属的国家进行预测的实战。这里,我将视频中的代码和思路进行了消化和总结,在这里和大家一起分享一下。首先就是看一下数据集,我们可以读取一下数据进行观察:import gzipimport csvimport randomres =[]is_train_set = Truefile_name = 'D:/BaiduNetdiskDownload/PyTorch深度学习实践/names_train.csv.gz' if原创 2020-08-15 19:28:30 · 4152 阅读 · 14 评论 -
浅谈抽取式文本摘要
文本摘要在NLP领域也是非常热门的一个领域,主要分成抽取式和生成式的,生成式的主要涉及到深度学习,个人觉得其实抽取式的文本摘要在效果上,只要算法得当,并不比生成式的差。这里我们一起来探讨一下抽取式的文本摘要,这里我们用朱自清的《背影》作为文本来提取10句这篇文章的摘要,我们来看看《背影》这篇文章:document = '我与父亲不相见已二年余了,我最不能忘记的是他的背影。\那年冬天,祖母死了,父亲的差使也交卸了,正是祸不单行的日子,我从北京到徐州,\打算跟着父亲奔丧回家。到徐州见着父亲,看见满院狼藉的原创 2020-05-16 11:32:32 · 2727 阅读 · 2 评论 -
SVM做文本分类代码实现详解
之前的一篇博文 SVM做文本分类详细操作流程 由于是很早之前写的,大部分都是调用脚本,代码也不是很全,这里我再对之前的博文进行一个详细的补充。代码详见 GitHub 。首先需要导入必要的包:import jiebaimport numpy as npimport pandas as pd然后我们把天气相关的语料称为正语料,其他类别的语料称为负语料,接着我们读取这两个类别的语料:pos = pd.read_csv('../Desktop/weather_pos.txt', encoding='U原创 2020-05-13 16:16:41 · 5816 阅读 · 2 评论 -
Negative Sampling 负采样详解
在word2vec中,为了简化训练的过程,经常会用到Negative Sampling负采样这个技巧,这个负采样到底是怎么样的呢?之前在我的博文 word2vec算法理解和数学推导 中对于word2vec有了很详细的数学推导,这里主要讲解一下负采样是如何降低word2vec的复杂度的。首先我们直接写出word2vec的目标函数,假设有一句话:query=w1,w2,w3,..,wnquery =...原创 2020-04-23 10:01:26 · 8260 阅读 · 8 评论 -
搭建一个简易的医疗导诊系统
这里我们来介绍一个简易的医疗导诊系统,基于我们产品有五大测量的功能:心电,血氧,血压,血糖和体脂。这个医疗导诊系统主要是通过用户描述的一些症状来判断用户可能的指标异常,然后引导用户进行相关指标的测量,如果测量得到相关指标有异常的话,那么就指导用户去医院相关科室就诊。整个流程如图所示:所以说首先我们要了解症状如何来对应指标的异常呢,首先我们得统计出五大测量的功能对应哪些病症,这些病症又对应哪些症...原创 2020-02-20 14:54:26 · 2040 阅读 · 0 评论 -
搭建一个简单的FAQ系统
现在的智能问答系统的应用是非常普遍的,比如说客服,前台机器人,讲解机器人等很多场景都可能会用到FAQ问答系统,所谓的FAQ就是 frequently asked questions,也就是说在某个场景下,比较常见的一些问题。首先我们来看看整体的FAQ流程,我们需要对输入的问题进行预处理,比如去停,分词等;然后需要对预处理之后的语料进行向量化,这里向量化的方法很多,也不拘泥于一种,常见的向量化方法...原创 2019-08-01 12:07:45 · 5070 阅读 · 7 评论 -
中文词性标注详解
所谓的词性标注在NLP领域是一个应用非常广泛的技术,总的来说,词性标注所解决的问题就是说,给定一句话 sss,我们将sss进行分词操作,可以将 sss 分成 nnn 个词,那么 sss 可以表示成:s=w1w2...wns = {w_1}{w_2}...{w_n}s=w1w2...wn,我们将这 nnn 个词每一个词标注一个词性那么这句话词性可以表示成 t=z1z2...znt = {z_1...原创 2019-09-18 15:39:14 · 2975 阅读 · 0 评论 -
中文情感分析
情感分析在NLP领域中是应用很广泛的技术,一般用深度学习来解决这一类的问题。其实我的理解就是情感分析就是一个分类问题。这里我爬取了京东小米9的用户评论,正面和负面的评价各1000条,爬虫和整体的代码我放在了 GitHub 。然后我把预训练的词向量文件放在了 百度网盘,提取码:rxci。我们一起来看看数据长得啥样,首先是小米9正面的评价:然后是小米9负面的评价:从这些数据印证了一句话,幸福...原创 2019-09-19 16:01:28 · 5991 阅读 · 6 评论 -
中文命名实体识别NER详解
中文命名实体识别是在自然语言处理领域有着具足轻重的地位,因为在很多应用中,我们一定要提取出我们话术中的实体,所以说命名实体识别是非常重要的。一般来说,现在网上有很多NER的开源库,我们通过调用API就可以进行人名、地名、时间、机构名等实体的识别,效果也非常不错。但是这仅仅是限于某一些领域的命名实体识别,所以我们如果要进行特定领域的命名实体识别,就要另行进行开发。这里我们来一起学习用双向LSTM和C...原创 2019-09-21 16:40:17 · 3729 阅读 · 9 评论 -
如何训练一个词向量
现在在NLP领域,词向量是一切自然语言处理的基础,有了词向量我们就可以进行数据分析,文本聚类分类的一系列操作了。接下来我们就开始学习如何训练词向量,之前我们有介绍关于 word2vec 的博文 word2vec算法理解和数学推导,这篇博文我们就一起来学习如何实现词向量的训练。首先我们运用的语料是我之前爬取的京东小米9的好评,训练一个关于手机类的词向量。数据如下所示:首先我们需要给数据进行分词...原创 2019-09-26 16:44:26 · 3263 阅读 · 2 评论 -
城市类知识图谱的搭建(elasticsearch+Django)(下)
上一篇博文说了整个工程的数据整理,我们这里再来说一下如何进行语义的理解,如何理解用户所要问的问题。这里我们运用的是类似一个正则匹配的规则匹配来解析我们输入的 query,这里我拍脑袋列出了城市类的知识图谱的一些常见的提问方式,如下图所示:这里我列出了8大类城市类的提问方法,比如第一类的问题表示什么城市有哪些景点,一般都是两种的提问方式:城市 有什么 景点,有什么 景点在 城市。我们可以用一些常...原创 2019-08-05 12:13:35 · 1998 阅读 · 2 评论 -
城市类知识图谱的搭建(elasticsearch+Django)(上)
这里写一篇博文来整理一下如何构建城市类的知识图谱,废话不多说,一般来说在知识图谱中比较重要的技术点就是实体识别和关系抽取。就比如在城市的类别中,一个城市有它的一些特性,比如说北京,如下图所示:中间表示是城市北京,蓝色圆框中间表示一些内容,而连接线表示北京与这些内容的一些关系,我们在做知识图谱的时候就要建立这些实体之间的关系。首先第一步是数据的整理,我们需要从网上爬取城市的数据,这里比较好的数...原创 2019-08-03 16:28:06 · 3013 阅读 · 11 评论 -
对语言模型N-gram的理解
今天我们一起来学习一下语言模型N-gram,首先我们来用数学的方法来描述一下语言的规律,这个数学模型就是我们在自然语言处理中的统计语言模型(Statistical Language Model)。在自然语言处理中,所谓的一个句子是否合理通顺,就看这个句子的可能性,这里的可能性就要用概率来衡量。同一种意思的句子,不同种的表达形式,哪种形式出现的概率最大,那么就表示这个句子是最合理的。 在每一个句子...原创 2018-07-24 16:27:37 · 1084 阅读 · 0 评论 -
对TF-IDF的理解与数学推导
TF-IDF的相关计算百度百科中,TF-IDF(term frequency–inverse document frequency)的解释是一种用于信息检索与数据挖掘的常用加权技术。所以总的来说,TF-IDF是一种统计方法,并且字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。这句话,我们后续来解释它的道理。这篇博文主要参考了吴军博士的经典之作《数学...原创 2018-07-03 15:05:26 · 2019 阅读 · 0 评论 -
语义解析Parser用户手册
parser解析器原创 2017-09-26 17:37:36 · 1973 阅读 · 0 评论 -
SVM做文本分类详细操作流程
以天气分类为例,我们的目的是运用支持向量机SVM(libsvm)来训练出一个天气分类的模型,这个模型可以将新来的语料分成天气类和非天气类两个大类,即正类与负类,具体的流程如下:1.爬取语料数据 首先,第一步要做的就是网上爬取天气相关的语料,可以运用Python爬虫爬取百度相关搜索的词条,进行多轮爬取,我们将跟天气相关的语料称为正语料,与天气无关的语料称为负语料,正语料和负语料分开爬取,一般来说,训原创 2019-02-27 08:55:35 · 22913 阅读 · 12 评论 -
文本相似度bm25算法的原理以及Python实现(jupyter notebook)
今天我们一起来学习一下自然语言处理中的bm25算法,bm25算法是常见的用来计算query和文章相关度的相似度的。其实这个算法的原理很简单,就是将需要计算的query分词成w1,w2,…,wn,然后求出每一个词和文章的相关度,最后将这些相关度进行累加,最终就可以的得到文本相似度计算结果。 首先我们来看一下bm25算法的计算公式: Score(Q,d)=∑inWi⋅R(qi,d)Score(Q,...原创 2018-07-31 10:34:54 · 9446 阅读 · 6 评论 -
TextRank的算法的理解
在此之前,我有写过一篇文章博文对PageRank算法的理解,这是一个网页排名的算法,其实TextRank算法和网页排名算法有着很相似的地方,并且文本排名算法也来源于网页排名算法。文本排名算法和其他算法有着一个很明显的区别就是其他的算法的关键词的提取都要基于现成的文本库,而文本排名算法可以脱离语料库的背景,仅仅对于单篇文章进行分析就可以提取该文档的关键词。在此之前我分析过网页排名算法的基本思想主要有...原创 2018-08-27 22:14:16 · 3500 阅读 · 0 评论 -
LSTM架构详解
LSTM 是深度学习中很常见也很有用的一种算法,特别是在自然语言处理中更是经常用到,那么 LSTM 架构中的内部结构又是什么样子的呢?首先我们来看 LSTM 的整体框架:在这幅图中,中间是一个 LSTM 模块,有三个输入分别是:ct−1{c^{t - 1}}ct−1、ht−1{h^{t - 1}}ht−1 和 xtx^txt,然后经过 LSTM 之后,输出分别是 ct{c^t}ct、ht{h^...原创 2019-05-25 16:53:49 · 12892 阅读 · 9 评论 -
attention机制详解
attentionattentionattention机制一般来说会用在深度学习中,在图像处理和自然语言处理方面都有所应用,在自然语言处理中一般会用在机器翻译中,如下图所示,假设我们要翻译“机器学习”四个字:这是一个简易的RNNRNNRNN模型,h1−h4h1-h4h1−h4 是 t1−t4t1-t4t1−t4 输出的向量,这四个时刻的输入分别是“机”、“器”、“学”、“习” 四个字,这个时候...原创 2019-05-23 10:47:37 · 639 阅读 · 0 评论 -
LDA主题模型
LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,这个模型包含了词、主题和文档三层结构。所谓的生成模型,就是说我们人为一篇文章的每个词都是通过 “以一定概率选择了某个主题,并从这个主题中以一定的概率选择某个词语” 的这样的一个过程得到的。其中,词、主题和文档的关系就是文档到主题服从多项式分布,主题到词也服从多项式分布。首先,我们直观地看一下 LDA 模型,比...原创 2019-06-04 11:29:45 · 4551 阅读 · 0 评论 -
Transformer详解
Transformer是Google团队在17年提出的,在目前NLP的领域应用非常的广泛,是由Ashish Vaswani等人在论文《Attention is all your need》中提出的。Transformer 在机器翻译任务上的表现超过了 RNN,CNN,只用 encoder-decoder 和 attention 机制就能达到很好的效果,最大的优点是可以高效地并行化。那么为什么Tra...原创 2019-07-30 10:26:02 · 8545 阅读 · 15 评论 -
word2vec算法理解和数学推导
从字面意思就可以理解word2vec是把文本转换成向量,那么文本如何转换成向量呢,最简单的方法大家都会想到独热编码,但是独热编码的缺点也很明显,首先独热编码向量是正交的,任何两个独热编码相乘都等于0,所以无法通过任何的计算来得到两个词的相似度;还有一个原因就是维度过大,比如100000个词汇用独热编码表示成向量,就会有100000个维度,简直就是维度灾难。所以一般来说,在词语向量化的时候都不使用独...原创 2019-03-01 10:27:05 · 2239 阅读 · 1 评论