一.概述

LEAM(Joint Embedding of Words and Labels for Text Classification),是Guoyin Wang等提出的一种文本分类新方法,看论文标题就可以发现,该方法主要是构建 "类别标签 (label) 与词向量 (word-embedding)的联合嵌入",使用注意力机制 (Attention) 作为 laebl 与 word-embedding 沟通的桥梁。通常其他算法如TextCNN,FastText,TextRCNN,HAN等,只把类别标签 (label)作用于网络的最后一层,即计算loss等的时候使用,LEAM等大约可以看成是引入 类别标签(label) 信息吧。

类别标签 (label) 嵌入信息是有效的,在图像领域,图像与文本的多任务领域,图像中识别文本等。特别是少样本 (zero-shot) 问题,嵌入空间中捕获的标签相关性, 可以在某些类不可见时增强预测效果。在NLP领域,类别标签 (label) 与 词 (word)的关系,之前一般认为没什么大用,如 2015年论文 Pte: Predictive text embedding through large-scale heterogeneous text networks 构建的词-词、词-文档、词-类别标签异构网络,试图构建各种关系获取更多的信息;

又如2017年等的论文MTLE: Multi-Task Label Embedding for Text Classification,使用文本分类中的多任务学习利用隐式相关任务之间的相关性以提取共同特征并产生绩效收益,其提出的一种多任务标签嵌入的方法,将文本分类中的标签转化为语义标签向量,从而将原始任务转换为向量匹配任务。其实现了多任务标签嵌入的无监督、有监督和半监督模型,所有这些模型都利用了任务之间的语义相关性,以便于在涉及更多任务时进行缩放和转移。

LEAM网络与其上的方法不同,在BERT兴起后,Tranformer成为迄今为止最好的NLP特征抽取工具,LEAM也果断使用注意力机制Attention构建label与word-embedding的关系。注意力机制(Attention)的表示方法有三种:点乘相似度、权重和余弦相似度,如Transformer使用的是KVQ的权重法,又如使用的是,这种一步到位、端到端的构建方法,使得LEAM达到了较好的效果。此外,LEAM的副产品还可以突出医学文本的关键词信息。

github地址: https://github.com/yongzhuo/Keras-TextClassification

二.LEAM原理图

2.1 LEAM网络核心架构

l

2.2 基本计算

2.2.1 C * V / G

C是一个需要训练的weight (tendorflow用tf.add_weight),C的转置维度为词向量维度(embed_size) * 类别数(label) ,

V是普通的word-embedding,维度为 批尺寸(batch-size) * 文本长度(len_max) * 词向量维度 (embed_size),

G是需要训练的矩阵,维度为 批尺寸(batch-size) * 文本长度(len_max) * 类别数(label)

2.2.2 其他操作

三.LEAM代码实现

3.1  github地址: https://github.com/yongzhuo/Keras-TextClassification

LEAM代码比较麻烦,用到了tensorflow,构建了一个专门的Layer


from keras.regularizers import L1L2, Regularizer
# from keras.engine.topology import Layer
from keras.layers import Layer
from keras import backend as K
import tensorflow as tfclass CVG_Layer(Layer):def __init__(self, embed_size, filter, label, **kwargs):self.embed_size = embed_sizeself.filter = filterself.label = labelsuper().__init__(** kwargs)def build(self, input_shape):self._filter = self.add_weight(name=f'filter_{self.filter}',shape=(self.filter, self.label, 1, 1),regularizer=L1L2(0.00032),initializer='uniform',trainable=True)self.class_w = self.add_weight(name='class_w',shape=(self.label, self.embed_size),regularizer=L1L2(0.0000032),initializer='uniform',trainable=True)self.b = self.add_weight(name='bias',shape=(1,),regularizer=L1L2(0.00032),initializer='uniform',trainable=True)super().build(input_shape)def call(self, input):# C * V / G# l2_normalize of x, yinput_norm = tf.nn.l2_normalize(input)  # b * s * eclass_w_relu = tf.nn.relu(self.class_w) # c * elabel_embedding_reshape = tf.transpose(class_w_relu, [1, 0])  # e * clabel_embedding_reshape_norm = tf.nn.l2_normalize(label_embedding_reshape)  # e * c# C * VG = tf.contrib.keras.backend.dot(input_norm, label_embedding_reshape_norm)  # b * s * cG_transpose = tf.transpose(G, [0, 2, 1])  # b * c * sG_expand = tf.expand_dims(G_transpose, axis=-1)  # b * c * s * 1# text_cnnconv = tf.nn.conv2d(name='conv', input=G_expand, filter=self._filter,strides=[1, 1, 1, 1], padding='SAME')pool = tf.nn.relu(name='relu', features=tf.nn.bias_add(conv, self.b))  # b * c * s * 1# pool = tf.nn.max_pool(name='pool', value=h, ksize=[1, int((self.filters[0]-1)/2), 1, 1],#                       strides=[1, 1, 1, 1], padding='SAME')# max_poolpool_squeeze = tf.squeeze(pool, axis=-1)  # b * c * spool_squeeze_transpose = tf.transpose(pool_squeeze, [0, 2, 1])  # b * s * cG_max_squeeze = tf.reduce_max(input_tensor=pool_squeeze_transpose, axis=-1, keepdims=True)  # b * s * 1# divide of softmaxexp_logits = tf.exp(G_max_squeeze)exp_logits_sum = tf.reduce_sum(exp_logits, axis=1, keepdims=True)att_v_max = tf.div(exp_logits, exp_logits_sum)# β * Vx_att = tf.multiply(input, att_v_max)x_att_sum = tf.reduce_sum(x_att, axis=1)return x_att_sumdef compute_output_shape(self, input_shape):return None, K.int_shape(self.class_w)[1]

希望对你有所帮助!

中文短文本分类实例十四-LEAM(Joint Embedding of Words and Labels for Text Classification)相关推荐

  1. 中文短文本分类实例十二-HAN(Hierarchical Attention Networks for Document Classification)

    一.概述 HAN(Hierarchical Attention Networks for Document Classification),层次化注意力机制等,是Zichao Yang等2016年提出 ...

  2. 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处

    新闻上的文本分类:机器学习大乱斗 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处理过程与结果差 ...

  3. C语言库函数大全及应用实例十四

    原文:C语言库函数大全及应用实例十四                                       [编程资料]C语言库函数大全及应用实例十四 函数名: strset 功 能: 将一个串 ...

  4. 第06课:动手实战基于 ML 的中文短文本分类

    文本分类,属于有监督学习中的一部分,在很多场景下都有应用,下面通过小数据的实例,一步步完成中文短文本的分类实现,整个过程尽量做到少理论重实战. 开发环境,我们选择: Windows 系统 Python ...

  5. html标签 对word2vec,基于Word2Vec的中文短文本分类问题研究

    1 引言 移动终端的智能化和互联网技术的高速发展促使人们在移动互联网上交流的越来越频繁, 由此产生了大量的信息数据[, 这些数据多以短文本的形式作为信息传递的载体, 例如微博和即时推送新闻等, 其内容 ...

  6. 使用Bert/ERNIE进行中文短文本分类(附数据集)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 中文文本分类,Bert,ERNIE,基于pytorch,开箱即用. 中文数据集 我从THUCN ...

  7. 【NLP】用ML实现中文短文本分类(二分类)

    1.用ML实现外卖评论的分类 步骤 语料加载. 分词. 去停用词. 抽取词向量特征. 分别进行算法建模和模型训练. 评估.计算AUC值. 模型对比 1.进行语料加载. 在此之前,引入python依赖的 ...

  8. SpringBoot+Mybaits搭建通用管理系统实例十四:找回密码功能实现

    一.本章内容   本章实现已注册用户通过短信验证码或邮箱验证码找回登录密码相关接口. 完整课程地址 源码下载地址 二.开发视频 SpringBoot+Mybaits搭建通用管理系统实例六:找回密码接口 ...

  9. 基于飞浆ERNIE3.0百亿级大模型实现中文短文本分类任务

    前言 大家好,我是阿光. 本专栏整理了<PyTorch深度学习项目实战100例>,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新 ...

最新文章

  1. 详解分布式系统与消息投递
  2. 用小括号表达一个长字符串
  3. 26、ES中使用mget批量查询api(学习笔记,来自课程资料 + 自己整理)
  4. 不同串口通信速率超时时间_串口知识详解 串口功能及电路介绍
  5. 一种父线程阻塞等待子线程的有效方法
  6. 【网络流24题】【LOJ6224】深海机器人问题(最大费用最大流)
  7. 2个网卡配置相同ip 华为交换机_【跟着做】华为网络设备配置
  8. bower 和 npm 的区别
  9. 增量式pid调节方式有何优点_PID控制在变频器驱动系统中的应用
  10. 360服务器安全加固系统,360政企安全
  11. 利用EViews做截面数据的线性回归分析
  12. linux硬盘修复软件,DiskGenius下载-硬盘修复软件(DiskGenius)官方版下载[电脑版]-PC下载网...
  13. linux 硬盘品牌,CentOS如何查看硬盘品牌型号等具体信息
  14. 精华来了(含PPT) | 淘系技术嘉年华-杭州站
  15. 教师公开课卡通动态通用PPT模板
  16. YOLOv5剪枝 | 模型剪枝理论篇
  17. 年薪超1400万美元,库克即将卸任,谁接掌苹果CEO?
  18. 手机基站伪装潜伏引强烈关注
  19. 视频丨中兴通讯齐聚全球合作伙伴的力量 拥抱最好的时代
  20. Linux下默认字体是什么,linux默认字体是什么

热门文章

  1. 【思维导图】她提出了“计算思维”,并解释我们为什么要学会跟机器对话 | 造访·周以真【整理自公众号:造就】
  2. Java编译报错:无法将类XX中的构造器XX应用到给定类型
  3. 合成孔径雷达影像变化检测研究进展
  4. 成都开发者看过来!百度资深研发工程师将出席超级账本成都见面会
  5. mac怎么打开rar文件
  6. php实现短信找回密码,thinkphp5怎么调用云片接口实现发送短信验证码找回密码功能...
  7. 桂林理工大学 程序设计实践课程 实习报告
  8. 备战双十一!自动刷喵币靠这一个脚本就够了!
  9. 详解AD(Altium Designer)中的机械层 - 2
  10. xp系统查找局域网计算机名,WinXP系统内网IP查询的方法