点击上方,选择星标置顶,每天给你送干货!


来自:CS的陋室

0 小系列初衷

自己接触的项目大都是初创,没开始多久的项目,从0到1的不少,2020年快结束,感觉这个具有一定个人特色的技术经验可以在和大家分享一下。

计划篇章:

  • (已完成)文本分类篇。针对NLP文本分类任务。

  • 序列标注(NER)篇。针对命名实体识别、序列标注任务。

  • 文本匹配篇。针对语义相似度计算、向量匹配等问题。

  • 人工特征学习篇。针对多特征的机器、深度学习方案。

1 序列标注的场景

文本分类是对整个句子的把握,而NER就是深入到句子内部,对句子的局部进行深入分析,这个粒度的分析往往更为精准详尽,当然难度也会更高,下面列举几个比较常见的场景:

  • 搜索、对话的实体、关系抽取。

  • 搜索的关键词抽取,词权重问题。

  • 纠错的错误检测。

总而言之,只要是抽取局部信息,那其实就可以抽象为序列标注了。

严谨起见,来个专业点的定义吧:

给定一个序列(含特征),预测一组和序列一一对应的结果,这种预测就是序列标注。

2 方案选型——通用方法

之所以把序列标注放一起,是因为问题类似,既然问题类似,那其实就可以找到通式通法来解决,所以先给大家说一些比较通用的方法。大家也把序列标注问题带入来分析计算,其实很多的解法很类似。

2.1 非模型操作

常见的两个非模型操作,直接通过规则或者词典的模式:

  • 通过配置句式,用正则表达式的方式来抽取。

  • 运用词典,用最大逆向匹配来完成。之前写过文章:NLP.TM[29] | ner自动化打标方法

当然了这种非模型操作的优缺点点也是很明显,之前也聊过不少了:

  • 优点:

    • 高准确。

    • 方便快捷。

  • 缺点:

    • 召回低,泛化能力弱。

2.2 模型操作

模型往往是泛化能力较强的,规则和模板无法满足召回的情况下,我们就需要模型来处理了。序列标注需要对序列依赖要求很高,所以比较推荐大家用抽取序列特征的模型来处理。

  • HMM、CRF。序列标注的经典操作,有关CRF,我之前还写过长文讨论过:NLP.TM[19] | 条件随机场知识整理(超长文!)。

  • BiLSTM-CRF,之前也提到过,能上深度的情况下,这个的基线效果还是比较强的。NLP.TM | 命名实体识别基线 BiLSTM+CRF(上),NLP.TM | 命名实体识别基线 BiLSTM+CRF(下)

  • Bert-CRF。超级大的模型,整体效果是还不错的。

和上次一样,也是介绍3个,只要数据质量足够好,准招七八十是没什么大问题的,如果效果不好,往往是因为数据之类的原因导致的,此时我们该做的就是精炼数据集,只有足够数量和质量的数据,模型的效果才会好。

而相比文本分类任务,NER的样本往往更加难得,但是小样本还是可以通过人工标注、挖掘等方式获取,然后通过数据增强的方式来拓展出更多有代表性的query。

当然了,序列标注是一个很广义的问题,有一些特异的任务需要有特异的方法。

2.3 关键词抽取

有关关键词抽取,其实我在原来的文章就讲过,文章在这里:NLP.TM[20] | 词权重问题,这里可以考虑这几个方案:

  • 预训练的IDF词典,例如jieba的。

  • 很多关键词抽取的任务都有场景特色,jieba那种通用的不适合,根据自己的数据自己训一个,可能是最简单的,自己手写也不太累的模型训练了。

  • 如果数据和特征够多,学美团的方案(前沿重器[2] | 美团搜索理解和召回)自己训一个机器学习模型或者用深度学习整一个关键词抽取的序列标注模型。

2.4 纠错的错误检测

在现在比较前沿的技术里,纠错其实已经是一整个完整的模块,被拆分为错误检测、候选召回、召回排序三步,其中的错误检测就是为了找到句子中可能出错的部分,这里其实就可以抽象为序列标注问题,当然用模型的方式来处理肯定是可以的,不过这同样需要大量的标注数据才能解决,相比之下,获取一批正常的语料还是很简单的,这些预料可以训练语言模型,通过语言模型来判断句子中是否存在通顺程度异常的位点,这块详情大家可以看看我之前的文章,尤其是第一篇。

  • NLP.TM[33] | 纠错:pycorrector的错误检测

  • NLP.TM[34] | 纠错:pycorrector的候选召回

  • NLP.TM[35] | 纠错:pycorrector的候选排序

  • NLP.TM[37] | 深入讨论纠错系统

3 效果调优

有关效果调优,上面其实多多少少聊了很多,这里简单总结一下吧。

  • 无监督方案还是要多用,毕竟有监督方法需要足量,无论是数量还是质量,的数据。

  • 如果实在需要有监督模型,但受限于数据,可以通过数据增强的方式挖掘到一批质量还行的数据。NLP.TM[32] | 浅谈文本增强技术

  • 从关键词抽取和纠错的错误检测中其实可以看到,解决序列标注的思路还是很丰富的,大家要注意多积累。

4 其他想说的

在这次总结里,一方面是仍然强烈感受到对方案和数据把控的重要性,尤其在序列标注这个问题下,足量的标注数据是模型使用的先决条件,因此对数据的管理和优化非常重要。另外,序列标注需要对句子中的每个字/词都要标注,这个标注数据是真的不好拿,因此需要我们对无监督、非模型的方法也有足够的了解,如果排期足够,这种无监督非模型的方案是可以作为有监督模型数据的标注的,没有时间,无监督非模型的方法也可以作为基线直接上线,这个也很好。最后一点事,我感觉我对前沿方案的把控还需要提升,这一轮输出完成后,我可能要开始对前沿方案重新调研升级,从而升级自己的武器库。

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!

任务方案思考:序列标注(NER)篇相关推荐

  1. 序列标注NER、POS、Chunking、SRL

    序列标注 序列标注概念 NER NER标签类型 NER序列标注的三种方法 POS POS标签类型 POS详解标注 Chunking Chunking标签类型 SRL SRL标签类型 序列标注概念 序列 ...

  2. 深度学习(三十八)初识DL在自然语言序列标注中的应用-未完待续

    初识DL在自然语言中的应用 原文地址: 作者: 一.自然语言序列标注 虽然之前自己对于HMM.CRF.Word2vec.Attention机制.Encode-Decode等,在自然语言领域的应用已经比 ...

  3. PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】

     相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨: ...

  4. ner 评估指标_序列标注算法评估模块 seqeval 的使用

    在NLP中,序列标注算法是常见的深度学习模型,但是,对于序列标注算法的评估,我们真的熟悉吗? 在本文中,笔者将会序列标注算法的模型效果评估方法和seqeval的使用. 序列标注算法的模型效果评估 在序 ...

  5. Python深度学习-NLP实战:命名实体识别(NER)之分词与序列标注、实体识别任务简介

    系列文章目录 Python深度学习-NLP实战:深度学习系列培训教程 Linux服务器软件的简单使用 Linux命令的简单使用 训练集.测试集.验证集的介绍及制作 字向量的训练与生成 文本分类之SVM ...

  6. 新手探索NLP(八)——序列标注

    转载自知乎https://zhuanlan.zhihu.com/p/50184092 NLP中的序列标注问题(隐马尔可夫HMM与条件随机场CRF) Introduction 序列标注问题(sequen ...

  7. COLING 2018 最佳论文解读:序列标注经典模型复现

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  8. 使用RNN解决NLP中序列标注问题的通用优化思路

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 (想更系统地学习深度学习知识?请参考:深度学习枕边书) 序列标注问题应该说是自然语言处理中最常见的问题 ...

  9. fastNLP工具包, 快速实现序列标注模型

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx fastNLP是一款轻量级的自然语言处理(NLP)工具包,目标是快速实现NLP任务以及构建复 ...

  10. 深度学习baseline模型_深度学习模型在序列标注任务中的应用

    作者 丨e成科技NLP部门自然语言理解小组 王奕磊 背景 序列标注任务是中文自然语言处理(NLP)领域在句子层面中的主要任务,在给定的文本序列上预测序列中需要作出标注的标签.常见的子任务有命名实体识别 ...

最新文章

  1. sqlserver的索引创建
  2. asp.net操作Excel总结
  3. 如何完全卸载 Sublime Text
  4. java 构造器(constructor)
  5. Open3d之KDTree
  6. 关于es6中新增的一些方法----数组篇
  7. 阿里这套Java性能调优实战宝典,堪称教科书
  8. 去除加粗的css,css如何取消加粗
  9. 410c 上安装中文版本的答题器游戏demo
  10. linux上启动eureka集群服务,SpringCloud@Docker系列: 运行Eureka Server集群
  11. linux 运行QQ /Tim(超简单)
  12. Excel如何批量为员工信息表添加照片
  13. Java中 关键字abstract(抽像)的定义
  14. openwrt劫持域名,openwrt使用DNS劫持实现访问域名访问web
  15. oracle中更改用户名,Oracle 更改用户名
  16. multisim怎么设置晶体管rbe_multisim中三极管参数
  17. 数据可视化大屏案例 总目录
  18. Crypto日记之picoCTF 2022中的RSA题目求解
  19. web开发 -4-ASP语言
  20. 解决Windows中d3dx9_31.dll丢失问题

热门文章

  1. iOS上传应用到AppStore出现Authenticating with the iTunes store
  2. 1249 Problem Q
  3. [Sciter] 资源引用
  4. HDU2206:IP的计算
  5. Studio for WPF:使用 C1TileView 创建图片库
  6. 将文件保存到数据库中
  7. 如何辨别真假柯达胶卷
  8. rpm 安装、卸载软件命令 ——以nginx为例
  9. 简单的抽奖function
  10. ros control