向AI转型的程序员都关注了这个号????????????

人工智能大数据与深度学习  公众号:datayx

fastNLP是一款轻量级的自然语言处理(NLP)工具包,目标是快速实现NLP任务以及构建复杂模型。

fastNLP具有如下的特性:

  • 统一的Tabular式数据容器,简化数据预处理过程;

  • 内置多种数据集的Loader和Pipe,省去预处理代码;

  • 各种方便的NLP工具,例如Embedding加载(包括ELMo和BERT)、中间数据cache等;

  • 部分数据集与预训练模型的自动下载;

  • 提供多种神经网络组件以及复现模型(涵盖中文分词、命名实体识别、句法分析、文本分类、文本匹配、指代消解、摘要等任务);

  • Trainer提供多种内置Callback函数,方便实验记录、异常捕获等。

安装指南

fastNLP 依赖以下包:

  • numpy>=1.14.2

  • torch>=1.0.0

  • tqdm>=4.28.1

  • nltk>=3.4.1

  • requests

  • spacy

  • prettytable>=0.7.2

其中torch的安装可能与操作系统及 CUDA 的版本相关,请参见 PyTorch 官网 。在依赖包安装完成后,您可以在命令行执行如下指令完成安装

pip install fastNLP
python -m spacy download en

fastNLP教程

中文文档、教程

快速入门

  • 0. 快速入门

详细使用教程

  • 1. 使用DataSet预处理文本

  • 2. 使用Vocabulary转换文本与index

  • 3. 使用Embedding模块将文本转成向量

  • 4. 使用Loader和Pipe加载并处理数据集

  • 5. 动手实现一个文本分类器I-使用Trainer和Tester快速训练和测试

  • 6. 动手实现一个文本分类器II-使用DataSetIter实现自定义训练过程

  • 7. 使用Metric快速评测你的模型

  • 8. 使用Modules和Models快速搭建自定义模型

  • 9. 快速实现序列标注模型

  • 10. 使用Callback自定义你的训练过程

扩展教程

  • Extend-1. BertEmbedding的各种用法

  • Extend-2. 分布式训练简介

  • Extend-3. 使用fitlog 辅助 fastNLP 进行科研

内置组件

大部分用于的 NLP 任务神经网络都可以看做由词嵌入(embeddings)和两种模块:编码器(encoder)、解码器(decoder)组成。

以文本分类任务为例,下图展示了一个BiLSTM+Attention实现文本分类器的模型流程图:

fastNLP 在 embeddings 模块中内置了几种不同的embedding:静态embedding(GloVe、word2vec)、上下文相关embedding (ELMo、BERT)、字符embedding(基于CNN或者LSTM的CharEmbedding)

与此同时,fastNLP 在 modules 模块中内置了两种模块的诸多组件,可以帮助用户快速搭建自己所需的网络。两种模块的功能和常见组件如下:

fastNLP的大致工作流程如上图所示,而项目结构如下:


  • 代码 获取方式:

    分享本文到朋友圈

    关注微信公众号 datayx  然后回复 NLP  即可获取。

    AI项目体验地址 https://loveai.tech

    单肩包/双肩包/斜挎包/手提包/胸包/旅行包/上课书包 /个性布袋等各式包饰挑选

    https://shop585613237.taobao.com/


序列标注

这一部分的内容主要展示如何使用fastNLP实现序列标注(Sequence labeling)任务。您可以使用fastNLP的各个组件快捷,方便地完成序列标注任务,达到出色的效果。在阅读这篇教程前,希望您已经熟悉了fastNLP的基础使用,尤其是数据的载入以及模型的构建。通过这个小任务,能让您进一步熟悉fastNLP的使用。

命名实体识别(name entity recognition, NER)

命名实体识别任务是从文本中抽取出具有特殊意义或者指代性非常强的实体,通常包括人名、地名、机构名和时间等。如下面的例子中

我来自复旦大学。

其中“复旦大学”就是一个机构名,命名实体识别就是要从中识别出“复旦大学”这四个字是一个整体,且属于机构名这个类别。这个问题在实际做的时候会被 转换为序列标注问题

针对"我来自复旦大学"这句话,我们的预测目标将是[O, O, O, B-ORG, I-ORG, I-ORG, I-ORG],其中O表示out,即不是一个实体,B-ORG是ORG( organization的缩写)这个类别的开头(Begin),I-ORG是ORG类别的中间(Inside)。

在本tutorial中我们将通过fastNLP尝试写出一个能够执行以上任务的模型。

载入数据

fastNLP的数据载入主要是由Loader与Pipe两个基类衔接完成的,您可以通过 使用Loader和Pipe处理数据 了解如何使用fastNLP提供的数据加载函数。下面我们以微博命名实体任务来演示一下在fastNLP进行序列标注任务。

模型构建

首先选择需要使用的Embedding类型。关于Embedding的相关说明可以参见 使用Embedding模块将文本转成向量 。在这里我们使用通过word2vec预训练的中文汉字embedding。

进行训练

下面我们选择用来评估模型的metric,以及优化用到的优化函数。

进行测试

训练结束之后过,可以通过 Tester 测试其在测试集上的性能

使用更强的Bert做序列标注

在fastNLP使用Bert进行任务,您只需要把 fastNLP.embeddings.StaticEmbedding 切换为 fastNLP.embeddings.BertEmbedding (可修改 device 选择显卡)。

输出为:

可以看出通过使用Bert,效果有明显的提升,从48.2提升到了64.1。


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

fastNLP工具包, 快速实现序列标注模型相关推荐

  1. 使用PaddleFluid和TensorFlow训练序列标注模型

    专栏介绍:Paddle Fluid 是用来让用户像 PyTorch 和 Tensorflow Eager Execution 一样执行程序.在这些系统中,不再有模型这个概念,应用也不再包含一个用于描述 ...

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

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

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

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

  4. 文本分类和序列标注“深度”实践

    ©PaperWeekly 原创 · 作者|周晓江 研究方向|文本分类.文本聚类 本文的主要目的是推广 UNF 代码库,该代码库由笔者在实际工作中做文本分类和序列标注的相关经验抽象而来,欢迎 fork ...

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

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

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

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

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

    原标题:COLING 2018 最佳论文解读:序列标注经典模型复现 在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点 ...

  8. HanLP《自然语言处理入门》笔记--5.感知机模型与序列标注

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 5. 感知机分类与序列标注 第4章我们利用隐马尔可夫模型实现了第一个基于序列标注的 ...

  9. 基于序列标注的信息抽取模型(已申请专利)

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 实体-关系抽取模型 基于标注模型,百度SAOKE语料库实现的关系抽取模型. 代码 获取方式: ...

最新文章

  1. mongodb 连接和备份
  2. write_cfgmem 产生存储器配置文件?
  3. Python中Queue.get()方法阻塞
  4. Linux系统设置定时任务 1
  5. Java程序员从笨鸟到菜鸟之(九十)跟我学jquery(六)jquery中事件详解
  6. linux安全服务管理,Linux系统安全管理服务配置方法与技巧
  7. Heroku和Java –从新手到初学者,第2部分
  8. 解决win2003安装exchangeServer后关机慢的方法
  9. 前端学习(3195):虚拟dom的创建方式1的js
  10. loadrunner controller:实时查看VUser的运行情况
  11. 为什么 ++[[]][+[]]+[+[]] = 10 ?
  12. oa工作流 源码_oa管理系统工作流是什么?类型、优势、功能有哪些?
  13. 程序员如何开启机器学习之路
  14. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
  15. android 6.0权限机制的简单封装(支持批量申请权限)
  16. YALMIP介绍及怎么在Matlab中加YALMIP、SDPT3
  17. python属于系统软件吗_2020年,编程语言将不再只属于程序员,尤其是这门语言...
  18. # 图书管理系统案例练习
  19. 特斯拉开火,状告5名前员工、小鹏汽车、Zoox身陷漩涡...
  20. 再见,2017,你好,2018

热门文章

  1. HTML5视频播放器
  2. DDL触发器与DML触发器比较
  3. P3819 松江1843路
  4. linux自学笔记--DNS服务器
  5. 拥抱.NET Core,如何开发一个跨平台类库 (1)
  6. 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
  7. RAID组中的“Foreign”状态磁盘
  8. 一起谈.NET技术,用NuGet掌管你的Visual Studio扩展
  9. OpenCV-数组加权和cv::addWeighted
  10. OpenCV-双边滤波cv::bilateralFilter