- 博客(6)
- 收藏
- 关注
原创 利用albert模型提取文本标签
在上文中提到,从文本中提取标签一个多标签多分类的问题。用传统的机器学习分类器,需要通过OneVsRestClassifier进行分类器的转换。bert模型一统NLP问题江湖后,很多研究者也尝试用他解决文本标签问题。由于bert模型擅长处理句子对的关系,于是可以尝试把标签提取的问题转化为句子对判断的关系。参考以下这篇文章,利用bert模型进行aspect based的情感分析:Utilizing BERT for Aspect-Based Sentiment Analysis via Construct
2020-11-20 16:59:23 1229
原创 利用xgboost提取文本标签
在文本中提取标签一向是NLP中的难点问题,因为文本可能存在多个标签,这是一个多标签多分类的问题。sklearn.multiclass中有一个OneVsRestClassifier分类器,可以将二分类器转成多标签多分类器(通过one VS rest的方案),所以我们可以将xgboost转化成提取文本标签的模型。具体做法是:1、将所有可能的标签进行序列化,并针对每段文本标注标签进行向量化,即构造一个所有标签长度的向量,对每个标签进行标注:有则在对应位置标1,否则标0,从而构成label。 feature
2020-11-04 15:29:46 529 2
原创 用bert_keras精调中文albert模型的一些小技巧
在使用keras_bert精调中文albert模型的过程中,发现采用开源的Tokenizer代码,会出现训练过程中张量形状不匹配的问题。进一步探索,会发现Tokenizer会默认在句子的前后加上’CLS’和’SEP’标识,导致出来的id数目会比设置的maxlen多2个(bert模型自带的机制),因此导致后续定义模型时针对输入张量定义形状时,会出现问题:class OurTokenizer(Tokenizer): def _tokenize(self, text): R = [
2020-10-21 15:14:27 451
原创 在GPU资源受限的情况下精调BERT模型
在使用Google开源的中文BERT模型过程中,由于GPU资源受限(只有一块GPU),整个模型精调会导致溢出。为解决以上困难,设计了如下的逐层精调模式,针对BERT的表达层,逐层放开是否参与训练,和下游目标模块一起针对性训练,并进行多轮迭代:bert_model = load_trained_model_from_checkpoint(config_path, checkpoint_path, seq_len=None)for l in bert_model.layers: if "Enc
2020-10-16 14:52:54 514
原创 Transformer实践中K.batch_dot报错问题及解决方案
Transformer实践中K.batch_dot报错问题及解决方案在采用Transformer机制进行中文文本分类时,采用了github大神基于tensorflow2.0和内置keras的代码代码地址但在实际应用中,attention的call函数使用内置keras.backend的batch_dot函数会出现维度溢出的现象,两个四阶张量计算结果为五阶张量,导致后续程序报错。 def call(self, x): #如果只传入Q_seq,K_seq,V_seq,那么就不做Ma
2020-09-29 09:37:59 441 1
原创 深度学习词嵌入和传统机器学习结合
深度学习词嵌入和传统机器学习结合在使用小批文本数据进行深度学习时,由于数据量的限制,最终的网络往往过拟合,在验证集上达不到目标结果。传统机器学习算法,例如xgboost,对于小数据量不容易达到过拟合,但是需要对文本进行特征提取。下面的想法是将深度学习的词嵌入层结果和xgboost结合从而改善模型在验证集上的表现,防止过拟合出现。先构建一个简单的CNN模型def constructModel(embedding_dim): model = Sequential() model.add
2020-09-16 10:41:05 593
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人