- 博客(233)
- 收藏
- 关注
原创 macbert4csc纠错
简介此篇文章是对macbert4csc模型的一次尝试与思考,废话不多说,看内容。模型结构这个模型分成两部分:使用BertForMaskedLM对预训练模型做mask训练。对预测的结果输入linear,判断预测的结果和真实的结果是否相同,即二分类。举例:比如错句为我和你在一其,正确的句子为我和你在一起,错句输入MLM,得到的结果假设为我和你在一器。然后输入...
2022-04-01 08:52:35
4631
6
原创 腾讯TexSmart备忘
备忘一下~之前在看腾讯开源的词向量时,Tencent AI Lab Embedding Corpus for Chinese Words and Phrases,在看到Simple Cases那里,瞬间感到震撼!!果然大公司就是大公司,有钱有地位。。。跟着公司做了一些技术研究和项目后,发现目前nlp之所以发展没到位,最主要原因就是:算法和数据分家。算法层面,目前...
2022-03-14 09:48:22
946
原创 pycorrector源码阅读和纠错一些思考
介绍这篇文章主要对pycorrector默认使用规则的代码进行debug和理解,不论怎样,应先读下作者的readme,有个充分的理解先。初始化工作初始化主要做了三件事:初始化一些词典,用于后面纠错用。加载kenlm模型。初始化jieba分词器。1. 初始化一些词典等加载常用的汉字列表、加载同音字列表、加载形似字12345678910check_c...
2022-02-23 20:49:19
757
原创 SIFRank_zh与关键词提取
介绍本文尝试从几个方面来介绍提取关键词所知的技术,以及关键词提取所遇到的问题,接着介绍SIFRank-zh算法,最后穿插下个人的理解与总结。关键词提取技术刚开始接触这个概念的时候,网上一大堆介绍TF-IDF和TextRank算法,这俩简直已经称为了关键词提取的baseline。关于TF-IDF,的确在许多文档中已经作为了baseline来和其他技术相对比,是一种简...
2022-01-12 10:36:27
1031
原创 信息提取中分块或表达式
介绍什么是表达式,用一组规则来进行信息表示与提取。这个名字起的有点绕,本质来讲他是做下面这个事情的。假设分词结果如下所示:12345678[ ('现在', 'time'), ('社区', 'n'), ('在', 'p'), ('进行', 'v'), ('网格化', 'n'), ('管理', 'n')]表达式演变1如果从这句...
2022-01-05 10:58:12
560
原创 torch使用tensorboard简明备忘录
tensorboard是让torch可以使用tensorflow的web可视化工具,之前叫tensorboardX。至于其他的介绍以及为什么需要,可自行百度。简单的完整代码1234567891011121314151617181920# -*- coding: utf8 -*-#import mathfrom torch.utils.tensorboard imp...
2021-12-30 10:43:21
1736
原创 预训练思考与基于预训练模型的应用例子
介绍本篇文章主要讲基于bert预训练模型的一些例子,希望可以从不同角度理解与应用基于bert的一些应用。nlp发展了这么多年,经历了规则,统计,模型等阶段,目前预训练模型基本算是一统天下了。大公司有更多资源,可以联合一些科研机构与组织搞一些事情,比如微软和nvidia利用更多的资源来探测模型的边界。这个就很有意思,思考一个问题,什么叫意识?什么情况下产生了意识?...
2021-12-29 16:23:35
220
原创 transformers-tokenizer备忘
对transformers库不常用记录,方便回溯。知识点1. fast的含义比如BertTokenizerFast,use_fast, 示例如下:1AutoTokenizer.from_pretrained('hfl/chinese-electra-180g-small-discriminator', use_fast=True)它的含义是使用rust加速速度。...
2021-12-29 14:37:05
417
原创 动态词向量之elmo
介绍elmo是用于解决静态词向量无法一词多义的模型。在介绍如何实现elmo模型的时候,此处穿插进来Conv1d layer(一维卷积层)。本文代码以plm-nlp-code chp6为准,可直接参考。Conv1d介绍卷积有Conv1d(序列),Conv2d(图像),Conv3d(立体数据),主要区别在于不同方向上进行卷积。因为文字是一维结构的,从而在nlp领域...
2021-12-28 22:43:05
432
原创 静态词向量之glove
介绍在之前讲解获取静态词向量的方法中,都是在context_size下用到了word和context的共现关系。要么word预测context words,要么context words预测word。本质上都是利用文本中词与词在局部上下文中的共现信息作为自监督学习信息。还有一种是通过矩阵分解的方式,比如LSA,然后使用SVD进行奇异值分解,对该矩阵进行降维,获得词...
2021-12-28 10:11:31
397
1
原创 静态词向量之rnn训练词向量
介绍前文介绍了许多方法来获取静态词向量,本文介绍使用lstm来训练词向量。模型12345678910111213141516171819class RNNLM(nn.Module): def __init__(self, vocab_size, embedding_dim, hidden_dim): super(RNNLM, self).__i...
2021-12-24 16:18:29
414
原创 静态词向量之word2vec-cbow
介绍如果你看懂了skipgram和cbow的区别,那么实现上面就很简单了。skipgram是中心词预测周围词,cbow是周围词预测中心词,即dataset那里更换下input和target即可。具体就不细讲了,大家看源码吧~。实现1234567891011121314151617181920212223242526272829303132333435363738...
2021-12-24 14:25:43
176
原创 静态词向量之FFNN训练词向量
介绍本文分享几个好玩的知识点:前馈神经网络bag of words(词袋)使用ffnn获取词向量前馈神经网络什么叫前馈神经网络呢,emmm,自个去看百度百科定义前馈神经网络。简单来说,就是两个linear加一个激活函数,简单结构如下:12345678class FFNN(nn.Module): def __init__(self): ...
2021-12-24 11:43:03
578
原创 静态词向量之word2vec-skipgram
介绍当当当,欢迎来学习word2vec skipgram,关于word2vec,网上介绍的例子一大堆,这里就简单说明下。最开始进行tokenizer的时候,是使用onehot编码,缺点就是矩阵太大,另外太稀疏,而且词和词之前是不具备语义信息的。你说什么叫语义?语义没有官方定义,可以简单理解成更符合人类认知的,我觉得就可以理解成语义。而word2vec带来了稠密向量...
2021-12-22 16:53:26
285
原创 transformer使用示例
关于transformer的一些基础知识,之前在看李宏毅视频的时候总结了一些,可以看here,到写此文章时,也基本忘的差不多了,故也不深究,讲两个关于transformer的基本应用,来方便理解与应用。序列标注参考文件transformer_postag.py.1. 加载数据12#加载数据train_data, test_data, vocab, pos_voc...
2021-12-22 10:25:25
1885
原创 coreference resolution
介绍共指解析,按照百度的定义如下:1众所周知,人们为了避免重复,习惯用代词、称谓和缩略语来指代前面提到的实体全称。例如,在文章开始处会写“哈尔滨工业大学”,后面可能会说“哈工大”、“工大”等,还会提到“这所大学”、“她”等。这种现象称为共指现象。简而言之,其目的在于自动识别表示同一实体的名词短语或代词等。举个例子:哈尔滨工业大学,一般学生或者大众喜欢简称为哈...
2021-12-17 14:32:21
680
2
原创 活到老学到老之index操作
快速想一想,你能想到torch有哪些常见的index操作??1. gather12345>>> a = torch.tensor([[1, 2, 3], [4, 5, 6]])>>> a.gather(dim=1, index=torch.tensor([[0,1], [1,2]]))tensor([[1, 2],...
2021-12-16 10:20:21
250
原创 语义依存分析
定义(ltp)语义依存分析 (Semantic Dependency Parsing, SDP),分析句子各个语言单位之间的语义关联,并将语义关联以依存结构呈现。使用语义依存刻画句子语义,好处在于不需要去抽象词汇本身,而是通过词汇所承受的语义框架来描述该词汇,而论元的数目相对词汇来说数量总是少了很多的。语义依存分析目标是跨越句子表层句法结构的束缚,直接获取深层的语义...
2021-11-15 23:41:54
1701
原创 bio-based语义角色标注
定义定义1:1Semantic Role Labeling (SRL) is defined as the task to recognize arguments for a given predicate and assign semantic role labels to them.定义2(ltp):1语义角色标注 (Semantic Role Labelin...
2021-11-12 16:22:30
707
原创 基于树形条件随机场的高阶句法分析
此篇文章貌似没有重点,日常笔记吧。基于树形条件随机场的高阶句法分析作者硕士毕业论文,关于句法分析的历史与实现基本讲了一遍,包括作者使用TreeCRF高阶建模等工作。代码,这个项目包含了句法分析任务的实现。包括dependency parser,semantic dependency parser,constituency parser等。对于句法分析工作,百度d...
2021-11-02 14:22:48
182
原创 属性抽取调研-工业界
属性抽取调研——工业界目录1. 任务1.1. 背景1.2. 任务定义1.3. 数据集1.4. 评测标准2. 方法总结2.1. 基于无监督的属性抽取方法2.1.1. 基于规则的槽填充算法2.1.2.基于聚类的属性抽取方法2.2. 基于依存关系的半监督的槽填充方法2.3. 基于深度学习的序列标注方法2.4.基于元模式的属性抽取方法...
2021-10-30 23:12:35
1402
原创 关系抽取-学术界
关系抽取调研——学术界目录1. 任务1.1. 任务定义1.2. 数据集1.3. 评测标准1.4. SOTA2. 方法总结2.1. 基于模式挖掘的方法2.1.1. 基于模板匹配的方法2.1.2. 基于依存句法的方法2.2. 监督学习2.2.1. 机器学习2.2.1.1. 基于特征向量的方法2.2.1.2. 基于核函数的方法...
2021-10-30 22:04:36
600
原创 关系抽取调研-工业界
关系抽取调研——工业界目录1. 任务1.1. 任务定义1.2. 数据集1.3. 评测标准2. 方法总结2.1. 基于模板的方法2.1.1. 基于触发词/字符串2.1.2. 基于依存句法2.2. 监督学习2.2.1. 机器学习2.2.2. 深度学习 Pipeline vs Joint Model2.3. 半监督/无监督方法2....
2021-10-30 20:04:36
793
原创 bert和xlnet
1. AR与AE语言模型AR: Autoregressive Language modelingAE: AutoEncoding Language modelingAR语言模型:指的是,依据前面(或后面)出现的tokens来预测当前时刻的token,代表有ELMO,GPT等。AE语言模型:通过上下文信息来预测被mask的token,代表有 BERT , Word...
2021-10-28 09:35:10
346
原创 biaffine分析
下面改动这个代码,方便理解和实验12345678910111213141516171819202122232425262728293031323334353637383940class Biaffine(torch.nn.Module): def __init__(self, n_in=768, n_out=2, bias_x=True, bias_y=...
2021-10-16 23:45:43
527
原创 成分句法分析
package写了一个成分分析树的标注包:https://github.com/geasyheart/constituency-tree-labeling-tool欢迎Star!!!本项目代码已privated,更多可直接参考yzhangcs/parser.定义成分句法分析(Constituency Parser)是将一个句子转换成由短语组成的树,为啥子要这...
2021-10-15 23:30:30
515
原创 依存句法分析
捂脸欢迎star ^_^定义HanLP的定义依存句法分析,是指识别语句中词与词之间的依存关系,并揭示其句法结构,包括主谓关系、动宾关系、核心关系等。用依存语言学来理解语义,精准掌握用户意图百度ddparser的定义依存句法分析是自然语言处理核心技术之一,旨在通过分析句子中词语之间的依存关系来确定句子的句法结构。依存句法分析作为底层技术,可直接用于提升其他NLP任...
2021-10-15 20:45:43
5060
原创 激活函数以及损失函数
sigmoid sigmoid函数和tanh函数是研究早期被广泛使用的2种激活函数。两者都为S型饱和函数。 当sigmoid 函数输入的值趋于正无穷或负无穷时,梯度会趋近零,从而发生梯度弥散现象。sigmoid函数的输出恒为正值,不是以零为中心的,这会导致权值更新时只能朝一个方向更新,从而影响收敛速度。tanh激活函数是sigmoid 函数的改进版,...
2021-10-05 20:58:29
286
原创 一些mask的操作理解
关于mask的使用,常见的用法在进行padding的时候,例如:1. 对矩阵获取句子长度123456from torch.nn.utils.rnn import pad_sequencea = [torch.tensor([1,2, 3]), torch.tensor([4,5])]b = pad_sequence(a, batch_first=True)mask...
2021-09-27 16:23:39
1006
原创 mlp反向传播推导
更新俺是发现了,还是得起一个比较牛逼的名字,不使用任何框架,只使用numpy来实现一个MLP,包括正向,反向,梯度更新等。????—————————-此处分割线—————————-最近在Youtube上看到一个非常不错以及简洁实现mlp模型的视频,目标为预测两个数相加和,用两个linear,每层的输入或输出为 2, 5, 1注意:所有代码可在github上找到,一...
2021-08-20 20:18:00
140
原创 expand和unsqueeze在一些情况使用的含义
情况一input:123456import torch# a 模拟的是: batch_size: 2, sequence_length:3, feature: 4a = torch.arange(24).reshape(2, 3, 4)# b 代表的是: feature: 4 * 4b = a.unsqueeze(2).expand(-1, -1, 4, -1...
2021-08-13 11:18:31
496
原创 ubuntu16.04多GPU风扇转速调整
最近闲置出来两块1080ti GPU,内心那叫一个激动哇,虽然有些老,另外训练时转速提不上去,此次就解决这个问题。方法一(个人只在单GPU上实验成功)1. 生成xorg.conf如果:cannot stat /etc/x11/xorg.conf no such file or directory123# 生成这个文件$ sudo nvidia-xconfi...
2021-07-22 12:22:57
1523
原创 lstm使用示例
注意,本文代码来自于plm-nlp-code。学习任何模型都需要一个简单可行的例子进行说明,我会基于plm-nlp-code的代码进行说明lstm在序列标注和句子极性二分类两个例子的应用。序列标注参考文件lstm_postag.py.1. 加载数据12#加载数据train_data, test_data, vocab, pos_vocab = load_tre...
2021-07-20 15:40:45
934
原创 python bdist_wheel
利用cython进行编译成库.1. setup.py12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576# coding: utf-...
2021-07-14 17:45:31
682
原创 pytorch学习率调整
keras在keras中,比如动态调整学习率,可以:123456789101112import tensorflow as tfdef step_decay(epoch): if epoch < 3: lr = 1e-5 else: lr = 1e-6 return lrt...
2021-07-02 15:03:41
456
原创 批次数据处理
在数据处理里,常使用DataSet和DataLoader,关于具体使用此处不介绍,对于每一个batch_size里的数据来讲,一般数据是shuffle=True,即表示打乱顺序,能够使数据更无规律和更为随机。但是如果对于数据样本不定长的情况或者说分布不均匀的情况下,要使其定长,做法就是pad到一个固定长度,如果长短分布差距大呢??比如:12example1: 我...
2021-06-28 09:54:08
184
原创 数据增强
图像常见数据增强有翻转,旋转,缩放比例等不同的transforms。对于文本,可以增加噪声干扰,也可以通过添加slide window(此处重点,嘿嘿。)举个简单例子描述下滑动窗口。12345678910111213141516a = [1,2,3,4,5][a[i: i + 1] for i in range(0, len(a), 1)]Out[36]: [[...
2021-06-28 09:40:08
83
原创 bert以首字表示词向量(2)
第二篇文章,通过一种新的方式来实现以首字表示词向量123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828...
2021-06-25 19:31:33
278
原创 bert以平均、首字、尾字表示词向量(1)
1. word preprocess.1234567891011121314151617181920212223242526272829303132333435import torchfrom transformers import AutoTokenizerdef encoder_texts(texts: List[List[str]], tokenizer): ...
2021-06-25 17:02:20
413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人