forked from km1994/NLP-Interview-Notes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
152 additions
and
2 deletions.
There are no files selected for viewing
98 changes: 98 additions & 0 deletions
98
NLPinterview/textclassifier/Retrieval2Classifier/readme.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# 【关于 用检索的方式做文本分类 】 那些你不知道的事 | ||
|
||
> 作者:杨夕 | ||
> | ||
> 论文: | ||
> | ||
> 论文地址: | ||
> | ||
> github: | ||
> | ||
> 论文出处: | ||
> | ||
> 项目地址:https://github.com/km1994/nlp_paper_study | ||
> | ||
> NLP 面经地址:https://github.com/km1994/NLP-Interview-Notes | ||
> | ||
> 推荐系统 百面百搭:https://github.com/km1994/RES-Interview-Notes | ||
> | ||
> 个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。 | ||
- [【关于 用检索的方式做文本分类 】 那些你不知道的事](#关于-用检索的方式做文本分类--那些你不知道的事) | ||
- [一、动机](#一动机) | ||
- [二、基于检索的方法做文本分类思路](#二基于检索的方法做文本分类思路) | ||
- [2.0 基于检索的方法做文本分类 整体思路](#20-基于检索的方法做文本分类-整体思路) | ||
- [2.1 检索的方法的召回库如何构建](#21-检索的方法的召回库如何构建) | ||
- [2.2 检索的方法 的 训练阶段 如何做?](#22-检索的方法-的-训练阶段-如何做) | ||
- [2.3 检索的方法 的 预测阶段 如何做?](#23-检索的方法-的-预测阶段-如何做) | ||
- [2.3.1 **把标签集作为召回库** 的预测思路](#231-把标签集作为召回库-的预测思路) | ||
- [2.3.2 **把训练数据作为召回** 的预测思路](#232-把训练数据作为召回-的预测思路) | ||
- [三、用检索的方式做文本分类 方法 适用场景](#三用检索的方式做文本分类-方法-适用场景) | ||
- [参考](#参考) | ||
|
||
## 一、动机 | ||
|
||
1. 标签类别较多:常规的分类模型只是预测10几个 label,但是真实工业界有时需要预测的 label 可能上百个,这种情况 一方面标注数据会存在严重不均衡现象,另一方面模型的预测结果也存在偏差性严重问题; | ||
2. 标签类别不固定:面对业务需求需要不断添加新标签时,容易导致每次新增标签都面临重新训练分类器模型问题; | ||
3. 语义信息丢失:以前的分类任务中,标签信息作为无实际意义,独立存在的one-hot编码形式存在,这种做法会潜在的丢失标签的语义信息; | ||
|
||
那有什么方法可以解决该问题么? | ||
|
||
答案:**基于检索的方法做文本分类** | ||
|
||
## 二、基于检索的方法做文本分类思路 | ||
|
||
### 2.0 基于检索的方法做文本分类 整体思路 | ||
|
||
把文本分类任务中的标签信息转换成含有语义信息的语义向量,将文本分类任务转换成向量检索和匹配的任务。 | ||
|
||
### 2.1 检索的方法的召回库如何构建 | ||
|
||
因为采用 检索的方法 去做 文本分类,首先就是需要考虑如果 构建 召回库 问题,构建方法: | ||
|
||
1. 把标签集作为召回库; | ||
2. 把训练数据作为召回库; | ||
|
||
### 2.2 检索的方法 的 训练阶段 如何做? | ||
|
||
无论是 **把标签集作为召回库** 还是 **把训练数据作为召回库**,其训练阶段的方法都是相同的,都可以采用 **双塔模型**; | ||
|
||
1. 塔构建思路: | ||
|
||
- 一个塔(模型):用于对 输入句子 进行 encoding; | ||
- 一个塔(模型):用于对 输入标签 进行 encoding; | ||
|
||
2. 目标:通过训练拉近句子和标签的[CLS]输出特征表示之间距离; | ||
|
||
### 2.3 检索的方法 的 预测阶段 如何做? | ||
|
||
**把标签集作为召回库** 和 **把训练数据作为召回库** 思路存在不同。 | ||
|
||
### 2.3.1 **把标签集作为召回库** 的预测思路 | ||
|
||
1. 把标签作为召回集,每个标签的向量表示(也即[CLS]输出特征表示)是固定的; | ||
2. 然后构建一个标签向量库; | ||
3. 用待预测的句子的向量在标签向量库进行检索,找到特征相似度最大的标签,也即为待预测句子的标签。 | ||
|
||
### 2.3.2 **把训练数据作为召回** 的预测思路 | ||
|
||
1. 把训练数据作为召回集,构建一个训练集文本的向量库; | ||
2. 用待预测的句子的向量表示(也即[CLS]输出特征表示)在文本向量库进行检索,找到特征相似度最大的训练集文本,待预测句子的标签也即召回文本的标签。 | ||
|
||
## 三、用检索的方式做文本分类 方法 适用场景 | ||
|
||
1. 对于一些类别标签不是很固定的场景,或者需要经常有一些新增类别的需求的情况非常合适; | ||
2. 对于一些新的相关的分类任务,这种方法也不需要模型重新学习或者设计一种新的模型结构来适应新的任务。 | ||
|
||
总的来说,这种基于检索的文本分类方法能够有很好的拓展性,能够利用标签里面包含的语义信息,不需要重新进行学习。这种方法可以应用到相似标签推荐,文本标签标注,金融风险事件分类,政务信访分类等领域。 | ||
|
||
## 参考 | ||
|
||
1. [【NLP从零入门】预训练时代下,深度学习模型的文本分类算法(超多干货,小白友好,内附实践代码和文本分类常见中文数据集)](https://zhuanlan.zhihu.com/p/562448431) | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# 【关于BERT在输入层引入额外特征】 那些你不知道的事 | ||
|
||
> 作者:杨夕 | ||
> | ||
> 介绍:研读顶会论文,复现论文相关代码 | ||
> | ||
> NLP 百面百搭 地址:https://github.com/km1994/NLP-Interview-Notes | ||
> | ||
> 推荐系统 百面百搭 地址:https://github.com/km1994/RES-Interview-Notes | ||
> | ||
> 搜索引擎 百面百搭 地址:https://github.com/km1994/search-engine-Interview-Notes 【编写ing】 | ||
> | ||
> NLP论文学习笔记:https://github.com/km1994/nlp_paper_study | ||
> | ||
> 推荐系统论文学习笔记:https://github.com/km1994/RS_paper_study | ||
> | ||
> GCN 论文学习笔记:https://github.com/km1994/GCN_study | ||
> | ||
> **推广搜 军火库**:https://github.com/km1994/recommendation_advertisement_search | ||
![](other_study/resource/pic/微信截图_20210301212242.png) | ||
|
||
> 手机版笔记,可以关注公众号 **【关于NLP那些你不知道的事】** 获取,并加入 【NLP && 推荐学习群】一起学习!!! | ||
> 注:github 网页版 看起来不舒服,可以看 **[手机版NLP论文学习笔记](https://mp.weixin.qq.com/s?__biz=MzAxMTU5Njg4NQ==&mid=100005719&idx=1&sn=14d34d70a7e7cbf9700f804cca5be2d0&chksm=1bbff26d2cc87b7b9d2ed12c8d280cd737e270cd82c8850f7ca2ee44ec8883873ff5e9904e7e&scene=18#wechat_redirect)** | ||
## 一、动机 | ||
|
||
|
||
|
||
## 二、方法 | ||
|
||
|
||
1. 邱锡鹏老师的flat : 他简单来说呢,是把词典拼在原文的输入的后面,然后和前面的词典的位置共享一个position的embedding。相当于呢是词典对原文进行了一种提示,引入了外部的知识。 | ||
2. 在底层增加一个embedding层,就像bert原生的一样,从input-id-embedding、token-type-embedding和mask-embedding变成input-id-embedding、token-type-embedding、mask-embedding和keyword-embedding。输入,lookup之后,输出进行加和即可。这样的话,只需要随机初始化keyword-embedding就行,其他参数都可以加载原始参数; | ||
3. 在关键词前后加上特殊的标识符,让模型强行去学习,关键词的信息。 | ||
|
||
|
||
## 参考 | ||
|
||
1. [BERT在输入层如何引入额外特征?](https://www.zhihu.com/question/470540809/answer/2691234148) |