
NLP
文章平均质量分 72
ybdesire
Talk is cheap. Show me the code.
展开
-
FeatureHasher使用方法详解
FeatureHasher输入不同类型数据(dict,int,int list,string,string list,pair)的使用方法与代码示例。原创 2023-01-10 22:41:21 · 2273 阅读 · 0 评论 -
手动下载并安装nltk_data
1. 引入使用nltk的tokenizer、模型、语料之前,都要先运行如下代码进行下载:import nltknltk.download()但网络原因,笔者从未成功下载过。发现一种离线安装方式(参考1,2),折腾配置成功了,步骤如下。2. 具体步骤下载nltk_data下载链接: https://github.com/nltk/nltk_data/tree/gh-pages注意下载branch为gh-pages,下载后得到:nltk_data-gh-pages.zip上传到服原创 2021-04-15 23:10:58 · 2793 阅读 · 1 评论 -
Seq2Seq模型中的集束搜索(Beam Search)
1. 引入用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文。在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同。这里用下图来举例说明:一个法语句子,被Seq2Seq模型翻译为不同的4句英文,我们该选择哪个结果作为最终结果呢?上图中,给了一个公式,式中的x表示法语句子,y表示各个单词组成的最终的英文句子,不同的y的组合表示不同的翻译,即y1~yn表示单词序列。解决这个问题的关键,就在于找到合适的y值,使得图中的公式值最大化。但是具体怎么做呢?下面我们介绍一种方法原创 2021-01-23 23:13:43 · 555 阅读 · 0 评论 -
Seq2Seq模型中的贪心搜索(Greedy Search)
1. 引入用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文。在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同。这里用下图来举例说明:一个法语句子,被Seq2Seq模型翻译为不同的4句英文,我们该选择哪个结果作为最终结果呢?上图中,给了一个公式,式中的x表示法语句子,y表示各个单词组成的最终的英文句子,不同的y的组合表示不同的翻译,即y1~yn表示单词序列。解决这个问题的关键,就在于找到合适的y值,使得图中的公式值最大化。但是具体怎么做呢?下面我们介绍一种方法:原创 2020-12-06 23:13:29 · 1506 阅读 · 0 评论 -
理解词嵌入除偏
1. 引入机器学习已经被用到各行各业做辅助决策了,甚至是制定极其重要的决策。所以,我们应该尽可能的确保它不受非预期形式偏见的影响,比如性别歧视、种族歧视等等。下面介绍一种减少或消除这些偏见的影响,以消除“性别偏见”为例来说明算法的具体过程。2. NLP中性别偏见的例子在NLP中,由于语料的原始作者写作时,可能会自带自己的偏见,所以训练模型得到的词嵌入也会学到这种偏见。比如下图中的一些NLP任务,通过词嵌入,得到的结果(红框中)是具有明显的偏见的。训练集中的原始语料,是词嵌入带有性别歧视、种族歧视原创 2020-11-08 23:40:35 · 767 阅读 · 0 评论 -
词嵌入与情绪识别
1. 引入情绪识别是NLP中的比较重要的通用任务。对于情绪识别来说,通常标注的数据量都会比较小,一般语料中也就一万到十万个单词。这样小的语料,对于训练NLP模型来说,是一个难点。下面给出两种方法,借助于词嵌入,我们都能在比较小的语料中,得到不错的模型。2. 方法一:平均词向量具体步骤:获取各个单词的词向量直接用句子中,每个单词的one-hot编码,乘以词嵌入矩阵,得到每个单词的词向量将句子中各个单词词向量相加后取平均,得到一个新向量,用于表示该句子用这个新的词向量,送到sof原创 2020-10-09 22:08:07 · 379 阅读 · 0 评论 -
skip-gram与负采样
1. skip-gram模型skip-gram是word2vec中的主要模型之一(另一个模型是CBOW)。简单来说,CBOW是给定上下文,来预测input-word;而skip-gram是给定input-word,来预测上下文。下面我们来理解skip-gram模型。首先,给定句子如下The man who passes the sentence should swing the sword.-选择passes为中心词,window-size设置为3,则训练过程如下图通过该图可以大致理解skip-原创 2020-08-19 23:19:10 · 2162 阅读 · 0 评论 -
Word Embedding与analogy reasoning(词嵌入与类比推理的过程)
1. 引入Word Embedding是"词嵌入"的意思,这是语言表示的一种方式。它可以让算法理解一些类似的词。简单理解,就是词向量,代替one-hot编码做词向量。词嵌入比one-hot编码有更多优点:词嵌入可以用一个低维向量来表示词向量,而one-hot编码一般维度一般都比较高词嵌入可以表征词的相似性,语义上相似的词,其词向量也比较接近通用性强,在分类,回归,NER等应用中,都可以使用词嵌入表示的词向量,还有一个很常见的应用,是 analogy reasoning (类比推理原创 2020-08-06 23:43:14 · 1016 阅读 · 0 评论 -
理解词嵌入WordEmbedding
1. 引入词嵌入,英文为 Word Embedding,这是语言表示的一种方式。它可以让算法理解一些类似的词。2. 词表示:one-hot我们可以用one-hot向量来表示词,如下图所示。这种表示方式,我们需要首先获取一个字典,比如字典中有100000个词。对每一个词,都得到一个向量,其中该词对应位置上置一,其他位置置零。比如man这个词位于字典的第5391个位置,则我们为这个单词创建一个100000维度的向量,其中第5391个位置处值为1,其他位置值为0.这种方法的缺点,是它把每个词孤立了原创 2020-06-19 23:19:31 · 561 阅读 · 0 评论 -
深层循环神经网络
1. 引入我们学过的序列模型,RNN, GRU, LSTM,以及双向的RNN, GRU, LSTM,他们每一个模型都可以独当一面。如果我们想学习更复杂的函数,通常我们就会把多个RNN堆叠到一起,构建更深层次的网络。接下来我们就讲述如何构建深层次的循环神经网络。2. 深层RNN原理见下图图中左边是传统的多个全连接层组成的深层网络,把RNN按照这种模式一层一层组合在一起,得到右边的深层RNN网络。在做计算时,比如下图中a22隐层,需要其他时刻与其他层的输出作为输入,所以计算量是很大的。3.原创 2020-05-19 23:01:12 · 706 阅读 · 0 评论 -
双向RNN原理
1. 引入我们之前已经了解了RNN中的GRU[2]和LSTM[3]。怎么样才能进一步优化RNN这样的模型呢?就是使用双向RNN,它能使得我们在序列的某点处,不仅获取之前的信息,还能获取将来的信息。将来的信息是什么意思呢?为什么根据之前的信息还不足够网络做决策?我们看下面的一个例子:用传统RNN做NER,判定某个单词是否为人名。例子中给出的两句话,第一句话中的Teddy不是人名(是泰迪熊...原创 2020-05-05 22:44:01 · 7561 阅读 · 1 评论 -
理解LSTM
注意:请先看解释GRU的博客,否则不容易看懂本文1. 引入GRU(门控循环单元)允许我们在序列学习中,学习非常深的连接。其他类型的单元,也能做到这个效果,比如本文要讲的LSTM,它甚至比GRU的效果要好(更通用,更强大)。下面是对GRU做的一个总结,需要深入了解的,可以先看(补充GRU博客链接)。2. LSTMLSTM是长短记忆网络(Long Short Term Memory un...原创 2020-04-19 20:43:06 · 592 阅读 · 0 评论 -
RNN中的门控循环单元GRU
1. RNN隐层单元结构可视化下面是一个基本的RNN隐层单元结构:其中,a是上一个时刻的激活函数输出值,x是当前时刻的输入,y是当前时刻的输出。要理解这个单元结构,需要注意2点:a与x结合,通过激活函数的作用后,有两个分支,一个分支作为下一个时刻的输入a另一个分支通过softmax作用后,作为当前时刻的输出y2. GRU单元中的符号GRU(Gated Recurrent Uni...原创 2020-04-07 21:52:24 · 1937 阅读 · 0 评论 -
RNN中的梯度消失与梯度爆炸
1. 引入我们可以在[1]中,看到RNN的结构,如下图所示。假设我们输入两个句子如下:The cat, which already xxx yyy zzz …, was full.The cats, which alrady xxx yyy zzz …, were full.这两句话中,“xxx yyy zzz …”表示句子中间有很长的文本,此处略去。我们只看单数与复数,最后一个逗...原创 2020-03-17 20:50:35 · 1663 阅读 · 1 评论 -
详解语言模型
语言模型,能够告诉你,某个特定的句子,出现的概率是多少原创 2020-02-26 20:30:53 · 1235 阅读 · 0 评论 -
RNN的5种典型结构
引入我已经在文章[1]中介绍了一些序列模型的应用,比如“中文翻译为英文”,“NER命名实体识别”,“歌词生成”,“情绪识别”。也在文章[2]中介绍了RNN结构的基本原理。那问题来了,要实现“中译英”和“歌词生成”,我们选用的RNN结构是一样的吗?RNN有哪些典型的结构,分别对应哪些应用场景呢?RNN的5种典型结构首先,直接给出RNN的5中典型结构,如下图。然后我们依次讲解。1. O...原创 2020-01-27 21:49:03 · 4714 阅读 · 0 评论 -
序列模型用途介绍及数学符号
1. 序列模型用途之所以要用到序列模型,是因为,在现实生活中,我们的很多数据都具有连续的关系,比如语音识别:根据音频数据,识别为语言文本音乐生成:给定0个或某几个音节,自动生成歌曲情感分析:根据一段文本,来判断其情绪DNA序列分析:从给定的DNA序列中,标记出值得关注的某一段序列机器翻译:德语文本转英文视频行为识别:根据视频中一段连续的画面,判断画面中人的行...原创 2019-11-07 21:52:30 · 1705 阅读 · 0 评论 -
浅析Attention机制
引入Attention机制目前在深度学习领域应用的越来越多了,在CV和NLP领域都有大量应用。使用keras的Attention模块,可以说是能随意为深度学习模型插上Attention的翅膀了。那Attention机制的基本原理是什么?它有哪些优缺点呢?Attention机制的提出Attention机制是九几年在CV领域被提出的思想[1]。然后2014年Google DeepMind发表...原创 2019-10-08 22:29:26 · 512 阅读 · 1 评论 -
通过源码发现nltk.Text.similar相似度衡量标准
1. 如何用nltk来找到text中相似的word如果我们想搜索某一篇文章(text)中相似的词(word),可以使用nltk这个强大的NLP模块。下面以nltk自带的shakespeare数据集来做示例。第一次使用nltk,需要先运行下面的代码来下载shakespeare数据集。import nltknltk.download('shakespeare')然后,我们就可以加载shak...原创 2019-02-10 19:37:46 · 2743 阅读 · 0 评论