BI-LSTM-CRF在序列标注中的应用
1. 前言
在NLP中有几个经典的序列标注问题,词性标注(POS),chunking和命名实体识别(NER)。序列标注器的输出可用于另外的应用程序。例如,可以利用在用户搜索查询上训练的命名实体识别器来识别关键词,从而触发某些产品广告。另一个例子是搜索引擎可以使用这种标签信息来查找相关的网页。
2. BI-LSTM-CRF原理
在本文中,我们提出了各种基于长短期记忆(LSTM)的序列标注模型。这些模型包括LSTM网络,双向LSTM网络(BI-LSTM),带条件随机场的LSTM(LSTM-CRF)和具有CRF的双向LSTM(BI-LSTM-CRF)。
论文的工作是将BI-LSTM-CRF模型应用于NLP基准序列标注记数据集。实验表明,由于双向LSTM组件,BI-LSTM-CRF模型可以有效地使用过去和未来输入特征。
BI-LSTM-CRF模型可以在POS、chunking、NER数据集达到SOTA的水平。并且,与先前的结果相比,它更具有鲁棒性和对word embbding的依赖性较小。
3. BI-LSTM-CRF模型
BI-LSTM-CRF的结构是由word embedding、双向LSTM层、CRF层构成。
- word embedding:使用 unigram,bi-gram,tri-gram的特征,使用了50维的词向量。
- BI-LSTM层,是充分提取词过去和未来的特征,这种特征能够提升标签的准确度。
- CRF层是连接LSTM输出的线性表示,CRF层具有状态转移矩阵作为参数。
BI-LSTM-CRF的算法过程:
3.1 Feature Trick
我们可以将拼写和上下文特征都看作单词的特征。也就是说,神经网络的输入包括单词,拼写和上下文特征。论文指出,我们发现加入拼写能够加速训练,并且它们得到非常相似的标注准确性。
如下图所示:
4. 总结
序列标注是基础性的NLP研究课题,是许多NLP任务的基础。比如搜索引擎使用命名实体识别查询语句中的产品类实体,继而推荐广告。经典的序列标注有HMM、MEMMs和CRFs三种,其中CRFs的效果最好,可以解决HMM和MEMMs的标签偏置(label bias)问题。后来词向量的研究兴起,Collobert(Collobert et al.201) 的C&W词向量也在序列标注一展身手。Collobert 用的是卷积神经网络+CRF。LSTM在语音识别等领域已经有了成功的应用,引文若干。在之后的实验中对比了这些模型和自己模型(BI-LSTM-CRF, state of the art)的结果。
BI-LSTM-CRF在序列标注中的应用的更多相关文章
- LSTM+CRF进行序列标注
为什么使用LSTM+CRF进行序列标注 直接使用LSTM进行序列标注时只考虑了输入序列的信息,即单词信息,没有考虑输出信息,即标签信息,这样无法对标签信息进行建模,所以在LSTM的基础上引入一个标签转 ...
- TensorFlow教程——Bi-LSTM+CRF进行序列标注(代码浅析)
https://blog.csdn.net/guolindonggld/article/details/79044574 Bi-LSTM 使用TensorFlow构建Bi-LSTM时经常是下面的代码: ...
- Bi-LSTM+CRF在文本序列标注中的应用
传统 CRF 中的输入 X 向量一般是 word 的 one-hot 形式,前面提到这种形式的输入损失了很多词语的语义信息.有了词嵌入方法之后,词向量形式的词表征一般效果比 one-hot 表示的特征 ...
- ALBERT+BiLSTM+CRF实现序列标注
一.模型框架图 二.分层介绍 1)ALBERT层 albert是以单个汉字作为输入的(本次配置最大为128个,短句做padding),两边分别加上开始标识CLS和结束标识SEP,输出的是每个输入wor ...
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载
http://blog.csdn.net/scotfield_msn/article/details/60339415 在TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CR ...
- 序列标注(BiLSTM-CRF/Lattice LSTM)
前言 在三大特征提取器中,我们已经接触了LSTM/CNN/Transormer三种特征提取器,这一节我们将介绍如何使用BiLSTM实现序列标注中的命名实体识别任务,以及Lattice-LSTM的模型原 ...
- 基于CRF序列标注的中文依存句法分析器的Java实现
这是一个基于CRF的中文依存句法分析器,内部CRF模型的特征函数采用 双数组Trie树(DoubleArrayTrie)储存,解码采用特化的维特比后向算法.相较于<最大熵依存句法分析器的实现&g ...
- 用CRF++开源工具做文本序列标注教程
本文只介绍如何快速的使用CRF++做序列标注,对其中的原理和训练测试参数不做介绍. 官网地址:CRF++: Yet Another CRF toolkit 主要完成如下功能: 输入 -> &qu ...
- 【中文分词系列】 4. 基于双向LSTM的seq2seq字标注
http://spaces.ac.cn/archives/3924/ 关于字标注法 上一篇文章谈到了分词的字标注法.要注意字标注法是很有潜力的,要不然它也不会在公开测试中取得最优的成绩了.在我看来,字 ...
随机推荐
- mysql基本语句集合
一.概述 1.删除字段 alter table {table_name} drop column {column_name}; 2.添加字段 alter table {table_name} Add ...
- Snip for Mac(桌面截图工具)安装
1.软件简介 Snip 一款用于桌面截图的工具. 2.资源列表 链接 提取密码 系统要求 软件语言 Snip for Mac v2.0 (5771) fgab macOS 10.6.8 及以上 ...
- openkm安装过程
# java -jar /software/OKMInstaller.jar Running in Linux: 0.9.1-CE (build: 445bef5) Linux distro: rhe ...
- SharePoint下在Feature中动态Register/Remove HttpModule
在SharePoint开发时,你会遇到这样一个问题,Global.asax去哪儿?怎样添加一个Global.asax?怎样在Application_Start这个事件处理程序里设置初始化?似乎在Vis ...
- 一个简单的增强型PHP curl函数
啥都不说,先上代码 <?PHP /* * @author 小伍 */ echo "<pre>"; $proxy = array('url'=>'http:/ ...
- 查看mysql状态的常用命令
在mysql客户端输入"show status"之后将会看到如下输出: 如果想要查看某个具体的值,可以使用如下命令: show status LIKE "%具体变量%&q ...
- django 用户管理系列:1 user
:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdow ...
- MySQL中NULL与空字符串
一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串’ ’是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而”则表示值是存在的,只不过是个 ...
- 利用Regsvr32绕过Applocker的限制策略
Metasploit Metasploit框架有一个特定的有效载荷,可用于通过Regsvr32实用程序实现自动化绕过AppLocker exploit/windows/misc/regsvr32_ap ...
- 呃,如何使 .NET 程序,在 64位 系统 中,以 32位 模式运行。
其实最简单的方法就是在解决方案中,把平台设为 x86 就好了哈~ 但是今天遇到一个第三方的软件,它调用的一个 dll 是 32位 的,可能它没有测试过在 64位 系统下运行的情况,它在编译时是按默 ...