
NLP
风吹草地现牛羊的马
这个作者很懒,什么都没留下…
展开
-
pytorch 实现Transformer encoder
【代码】pytorch 实现Transformer encoder。原创 2023-02-01 17:19:47 · 2368 阅读 · 0 评论 -
预训练语言模型mask函数DataCollatorForLanguageModeling和DataCollatorForWholeWordMask解析
预训练语言模型中的非常重要的任务是MLM任务,MLM任务需要对原始文本进行mask。transformers库已经集成了预训练语言模型中的mask机制,这里分析其中的两个函数DataCollatorForLanguageModeling和DataCollatorForWholeWordMask。1.1DataCollatorForLanguageModeling这个类实现了Bert模型中的MLM任务中提出的mask机制。下面我对照transformers库中的原始代码讲解。class DataCol原创 2022-02-27 22:29:54 · 6921 阅读 · 0 评论 -
wordnet的使用
wordnet教程原创 2021-04-25 16:18:01 · 345 阅读 · 0 评论 -
将文档表示成图的方法
针对句子级别的任务构建图很容易,一般都是根据句子的依存句法树来构建,但是像文档级别的任务,比如文档分类任务,想要使用很火的GNN网络,应该怎么构建图呢?今天看了4篇论文,都是针对文档级别任务构建图的方法。corpus级别构建图Graph Convolutional Networks for Text Classification, AAAI,2019这篇论文针对文档分类任务,构建了一个corpus level的图,图中的节点总数N=Ndoc+NwordN = N_{doc}+N_{word}N=N原创 2020-10-15 20:56:54 · 795 阅读 · 1 评论 -
牛顿法与Hessian矩阵
牛顿法可以用于求解方程的根和无约束最优化问题。其背后的数学原理分别对应的是一阶泰勒展开和二阶泰勒展开。回顾泰勒公式展开:f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2+O((x−x0)3)f(x)= f(x_0)+f'(x_0)(x-x_0)+{1 \over 2}f''(x_0)(x-x0)^2+O((x-x_0)^3)f(x)=f(x0)+f′(x0)(x−x0)+21f′′(x0)(x−x0)2+O((x−x0)3)牛顿法求解方程的根假设我们要原创 2020-10-09 15:32:20 · 3372 阅读 · 1 评论 -
单维高斯分布及多维高斯分布的性质
协方差矩阵是实对称矩阵,也是半正定矩阵。所以协方差矩阵满足实对称矩阵和半正定矩阵的性质。记Σ\SigmaΣ为协方差矩阵。Σ\SigmaΣ是满秩的,也就是∣Σ∣|\Sigma|∣Σ∣(行列式)不为0。Σ\SigmaΣ是半正定的,所以∣Σ∣|\Sigma|∣Σ∣是大于0。Σ\SigmaΣ所有的特征值是大于0的。Σ\SigmaΣ的逆矩阵存在。Σ\SigmaΣ可相似对角化。Σ\SigmaΣ主对角线元素均非负,其他位置元素可以有负数。多维高斯分布的概率密度函数:f(x)=1(2π)D/21∣Σ∣原创 2020-09-22 16:25:49 · 4011 阅读 · 0 评论 -
pytorch单机多GPU训练方式(微调bert)
本来是用Dataparallel来微调,但是发现gpu0上负载太大了,后来上面一看,pytorch官网推荐使用DistributedDataParallel,这个方法可以用于多机多卡或者单机多卡,速度和各方面都比Dataparallel要好很多。我主要看了下面两个博客:【分布式训练】单机多卡的正确打开方式(三):PyTorchpytorch(分布式)数据并行个人实践总结——DataParallel/DistributedDataParallel这里说一下Dataparallel和Distribute原创 2020-08-26 14:43:32 · 4230 阅读 · 2 评论 -
统计机器翻译工具kenlm使用
python | 高效统计语言模型kenlm:新词发现、分词、智能纠错原创 2020-08-20 13:52:21 · 282 阅读 · 0 评论 -
pytorch 构建one-hot向量
pytorch使用scatter构建onehot向量,scatter不仅可以用来构建one-hot向量,也可以用来对矩阵进行修改。原创 2020-08-12 14:58:59 · 1491 阅读 · 1 评论 -
BERT等语言模型的BertForMaskedLM避的坑
在用transformers中的BertForMaskedLM来预测被mask掉的单词时一定要加特殊字符[CLS]和[SEP][CLS]和[SEP][CLS]和[SEP]。不然效果很差很差!!!from transformers import AlbertTokenizer, AlbertForMaskedLMimport torchtokenizer = AlbertTokenizer.from_pretrained('albert-base-v2', cache_dir='E:/Projects原创 2020-08-11 18:36:03 · 9823 阅读 · 6 评论 -
论文 Non-Parametric Adaptation for Neural Machine Translation阅读笔记
这篇论文参考了Encoding Gated Translation Memory into Neural MachineTranslation。建议先阅读这篇论文之后再阅读本论文。传统的NMT(Neural machine translation)模型的泛化能力很强,但是对于专业领域的翻译或者罕见词汇的翻译就不那么准确了。如何解决这个问题?本文作者是这样做的,在decoder阶段加入一些具有专业领域或者罕见词的知识,这些知识可以用来影响NMT的句子的生成,从而提高专业领域的翻译的准确性。这样的模型本.原创 2020-08-10 17:17:52 · 398 阅读 · 0 评论 -
GMVAE(GAUSSIAN MIXTURE VARIATIONAL AUTOENCODERS)高斯混合变分自编码器公式推导
GMM高斯混合模型:p(x)=∑zp(z)p(x∣z)=∑k=0K−1πkN(x∣μk,σk)\begin{aligned}p(x) = &\sum_{z}p(z)p(x|z) \\= &\sum_{k=0}^{K-1} \pi_{k}N(x|\mu_{k}, \sigma_{k})\end{aligned}p(x)==z∑p(z)p(x∣z)k=0∑K−1πkN(x∣μk,σk)其中∑kπk=1,z是一个K维的one−hot向量,p(zk=1)=πk\sum_原创 2020-06-12 00:16:51 · 5260 阅读 · 4 评论 -
finetuning Bert时的权重衰减
权重衰减L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化。Bert中的权重衰减并不是所有的权重参数都需要衰减,比如bias,和LayerNorm.weight就不需要衰减。from transformers import BertConfig, BertForSequenceClassification, AdamWimport...原创 2020-05-08 13:36:00 · 2741 阅读 · 4 评论 -
Transformers库简单使用
Transformers库也叫(pytorch-transformers and pytorch-pretrained-bert),提供了很多SOTA的预训练模型,比如BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet, CTRL…这个库比上一篇博客中讲的 pytorch-pretrained-bert库更完整,bert的使用方法略有不同,不需要自己手动去下...原创 2020-04-17 18:02:40 · 5493 阅读 · 0 评论 -
XLNet与Bert
XLNet原理解读XLNet:运行机制及和Bert的异同比较原创 2020-04-16 21:26:41 · 795 阅读 · 0 评论 -
Transformer与Transformer-XL
回顾Transformer在NLP领域,对语言建模最常用的模型就是RNNS(包括LSTM),但是RNNS存在一些问题,比如学习长期依赖的能力很弱(LSTM语言模型平均只能建模200个上下文词语),而且学习速度也很慢。在2017年,谷歌的一位学者提出了Transformer架构,其示意图如下图所示:Transformer不懂的可以看博客图解Transformer虽然Transformer相比...原创 2020-04-16 01:28:53 · 1097 阅读 · 0 评论 -
自回归语言模型(AR)和自编码语言模型(AE)
自回归语言模型(Autoregressive LM)在ELMO/BERT出来之前,大家通常讲的语言模型其实是根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务,或者反过来也行,就是根据下文预测前面的单词,这种类型的LM被称为自回归语言模型。GPT 就是典型的自回归语言模型。ELMO尽管看上去利用了上文,也利用了下文,但是本质上仍然是自回归LM,这个跟模型具体怎么实现有关系。E...转载 2020-04-15 17:58:29 · 4893 阅读 · 3 评论 -
条件变分自编码器(CVAE)及相关论文ELBO推导
推导用到的概率公式:P(A,B∣C)=P(A∣B,C)P(B∣C)P(A,B|C) = P(A|B,C)P(B|C)P(A,B∣C)=P(A∣B,C)P(B∣C)证明:由于 P(A∣B)=P(A,B)P(B)P(A|B) = {P(A,B) \over P(B)}P(A∣B)=P(B)P(A,B),所以P(A,B∣C)=P(A,B,C)P(C)P(A,B|C)={P(A,B,C) \ove...原创 2020-03-31 19:55:25 · 13602 阅读 · 0 评论 -
两种交叉熵损失函数的异同(转)
两种交叉熵损失函数的异同原创 2020-01-12 19:06:05 · 240 阅读 · 0 评论 -
Batch Normalization原理与实战(转)
Batch Normalization原理与实战原创 2020-01-12 11:13:17 · 224 阅读 · 0 评论 -
使用gensim训练word2vec词向量
使用维基百科英文语料训练word2vec.model原创 2020-01-08 10:15:27 · 532 阅读 · 0 评论 -
pytorch的自动求导
PyTorch简明笔记[2]-Tensor的自动求导(AoutoGrad)原创 2019-12-10 14:19:30 · 139 阅读 · 0 评论 -
Spacy使用教程
spaCy 第三篇:依存分析原创 2019-12-07 13:31:03 · 2518 阅读 · 0 评论 -
TF中的负采样损失函数(word2vec中的负采样)
在训练word2vec的时候,为了预测目标词是哪个词,我们要使用softmax函数进行预测,也就是一个softmax多分类的问题(每个单词就是一类)。类似下面的式子p(oj∣wi)=ef(oj,wi)∑j=1∣V∣ef(oj,wi)(1)\tag{1} p(o_{j}|w_{i}) = {e^{f(o_{j}, w_{i})} \over \sum_{j = 1}^{|V|} e^{f(o_{j...原创 2019-12-05 15:16:46 · 2843 阅读 · 0 评论 -
使用gensim实现LDA资源合集
GENSIM 使用笔记1 — 语料和向量空间GENSIM 使用笔记2 — 主题模型和相似性查询LDA计算 perplexity(困惑度)确定主题个数(代码)python下进行lda主题挖掘(二)——利用gensim训练LDA模型python下进行lda主题挖掘(三)——计算困惑度perplexity...原创 2019-12-03 18:19:01 · 516 阅读 · 0 评论 -
使用nltk删除英文停用词
from nltk.corpus import stopwordsstop_words = stopwords.words('english')print(stop_words)结束如下:['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yo...原创 2019-12-02 15:39:00 · 5362 阅读 · 0 评论 -
thunlp的OpenNRE的使用
发表OpenNRE的论文,论文详细说明了OpenNRE的各个组件。OpenNRE的github的地址。清华整理的做关系抽取必读的文章的地址。OpenNRE实现了基于sentence-level,bag-level和few-shot的relation extraction(关系抽取)。bag-level的关系抽取也就是基于远程监督的关系抽取。OpenNRE的结构OpenNRE主要包括Tok...原创 2019-11-28 20:55:20 · 4441 阅读 · 0 评论 -
大文本怎么查看数据
在 nlp任务中都需要用到大容量的语料,在处理语料之前需要查看语料的格式,但是直接在打开文件会爆内存,所以可以尝试只输出语料的前几行。head -n 10 en_wiki.txt // 输出前10行到终端head -n 10 en_wiki.txt >> test.txt // 输出前10行到test文件...原创 2019-11-20 14:00:04 · 244 阅读 · 0 评论 -
TensorFlow官网上word2vec产生batch的函数讲解。
完整的代码:Githubnum_skips与skip_window之间的关系很多人都不理解num_skips与skip_window之间的关系,skip_window这个参数限制了采样的范围,skip_window=1就是在输入单词的左右各一个单词范围内采样,skip_dow=2就是在输入单词的左右各2个单词的范围内采样,num_skips参数是在skip_window规定的范围内采样多少个,...原创 2019-11-19 11:57:19 · 594 阅读 · 0 评论 -
理解 Word2Vec 之 Skip-Gram 模型
理解 Word2Vec 之 Skip-Gram 模型import timeimport numpy as npimport tensorflow as tfimport randomfrom collections import Counterwith open('text8') as f: text = f.read()# 定义函数来完成数据的预处理def prep...原创 2019-11-18 20:00:21 · 179 阅读 · 0 评论 -
Python中使用Stanford CoreNLP
Python中使用Stanford CoreNLP原创 2019-11-15 16:56:20 · 604 阅读 · 0 评论 -
Transformer和bert讲解
图解Transformer彻底搞懂BERT原创 2019-11-15 15:54:26 · 714 阅读 · 0 评论 -
变分自编码器(VAE)
本文是在阅读苏剑林大佬和网上其他一些讲解之后做的总结,所以有一点对VAE的了解看本文会比较容易。苏大佬的三部曲:变分自编码器(一):原来是这么一回事 变分自编码器(二):从贝叶斯观点出发变分自编码器(三):这样做为什么能成?自编码器与变分自编码器在我理解看来,自编码器是一种学习数据特征的网络结构,由编码器、隐层表示和解码器三部分组成。假设有一组数据X=(x1,x2,,,,xn)X=(x...原创 2019-11-04 16:01:12 · 3193 阅读 · 0 评论 -
采样计算与期望
连续型随机变量的期望p(x)p(x)p(x)为随机变量X随机变量X随机变量X的概率密度函数。E[X]=∫xp(x)dx(1)\tag{1} E[X] = \int xp(x)dxE[X]=∫xp(x)dx(1)离散型随机变量的期望X的分布律为p(X=xi)=piX的分布律为p(X = x_{i}) = p_{i}X的分布律为p(X=xi)=piE[X]=∑ixipi(2)\tag{2...原创 2019-11-02 16:58:17 · 2120 阅读 · 6 评论 -
连续型和离散型随机变量(基于Gumbel Softmax)的重参数化
本文是阅读苏剑林大佬的博客漫谈重参数:从正态分布到Gumbel Softmax之后的记录,算是自己的阅读笔记吧。在苏大佬的那篇博客中,分别针对连续型和离散型随机变量讲解了如何进行重参数化,但是自己不是特别理解离散型随机变量的重参数化,便记录在此。什么是连续型和离散型随机变量?这里没有各种形式化的定义,只是根据自己的理解通俗的来讲解二者的区别。可以先告诉大家,我们目前经常用到的连续型随机变量...原创 2019-11-01 16:38:05 · 3875 阅读 · 1 评论 -
变分推断二(基于随机梯度求解分布Q)
高方差的问题根据上一节变分推断一(根据平均场理论求解Q)我们得到了需要求解的分布QQQ的函数。L(Q)=∫ZQ(Z)logP(X,Z)Q(Z)dZQ=EQ(Z)[logP(X,Z)−logQ(Z)](1)\begin{aligned}\tag{1} L(Q) = & \int_{Z} Q(Z)log{P(X,Z) \over Q(Z)} dZ \\Q= & E_{Q(Z)...原创 2019-10-31 20:26:32 · 1511 阅读 · 2 评论 -
图解Transformer(转)
图解Transformer原创 2019-10-23 19:23:43 · 240 阅读 · 0 评论 -
详解自下而上构建知识图谱全过程(转载)
导读:知识图谱的构建技术主要有自顶向下和自底向上两种。其中自顶向下构建是指借助百科类网站等结构化数据源,从高质量数据中提取本体和模式信息,加入到知识库里。而自底向上构建,则是借助一定的技术手段,从公开采集的数据中提取出资源模式,选择其中置信度较高的信息,加入到知识库中。在本文中,笔者主要想分享一下自底向上构建知识图谱的全过程,抛砖引玉,欢迎大家交流。“The world is not ma...转载 2019-09-02 18:55:28 · 2319 阅读 · 0 评论 -
SVD(奇异值分解)与LSA(潜在语义分析)
特征值与特征向量在讲解SVD(奇异值分解)之前,首先回顾一下线性代数中的特征值分解,对于一个n∗nn*nn∗n的矩阵AAA,存在实数λ和n维向量x\lambda和n维向量xλ和n维向量x,使得下式成立:(1)Aλ=λx \tag{1} A\lambda = \lambda x Aλ=λx(1)那么称λ为A\lambda为Aλ为A的一个特征值,称x为Ax为Ax为A的一个特征向量。相似对角化...原创 2019-09-08 18:34:55 · 2055 阅读 · 1 评论 -
LDA(主题模型)
https://www.cnblogs.com/pinard/p/6831308.htmlhttps://www.jianshu.com/p/aed4014b069dhttps://www.cnblogs.com/yifdu25/p/8099826.htmlhttps://www.jianshu.com/p/fa97454c9ffdhttps://blog.youkuaiyun.com/huagong...原创 2019-09-29 16:01:47 · 569 阅读 · 0 评论