本期推荐的是一个轻量级的自然语言处理(NLP)工具包——fastNLP。
fastNLP是一款轻量级的自然语言处理(NLP)工具包,目标是快速实现NLP任务以及构建复杂模型。fastNLP 由 core 、 io 、embeddings 、 modules、 models 等子模块组成:
- core 是fastNLP 的核心模块,包括 DataSet、 Trainer、 Tester 等组件
- io 是实现输入输出的模块,包括了数据集的读取,模型的存取等功能
- embeddings 提供用于构建复杂网络模型所需的各种embedding
- modules 包含了用于搭建神经网络模型的诸多组件,可以帮助用户快速搭建自己所需的网络
- models 包含了一些使用 fastNLP 实现的完整网络模型,包括 CNNText 、 SeqLabeling 等常见模型
fastNLP的特性:
项目结构:
安装:
fastNLP 依赖如下包:
numpy>=1.14.2torch>=1.0.0tqdm>=4.28.1nltk>=3.4.1requestsspacyprettytable>=0.7.2
简单示例:
使用DataSet预处理文本
- fastNLP中的DataSet
DataSet 是fastNLP用于承载数据的类,一般训练集、验证集和测试集会被加载为三个单独的 DataSet 对象。
DataSet 中的数据组织形式类似一个表格,比如下面 DataSet 一共有3列,列在fastNLP中被称为field。
每一行是一个instance (在fastNLP中被称为 Instance ), 每一列是一个field (在fastNLP中称为 FieldArray )。
- DataSet的构建
初始化一个DataSet
from fastNLP import DataSetdata = {'raw_words':["This is the first instance .", "Second instance .", "Third instance ."],'words': [['this', 'is', 'the', 'first', 'instance', '.'], ['Second', 'instance', '.'], ['Third', 'instance', '.']],'seq_len': [6, 3, 3]}dataset = DataSet(data)# 传入的dict的每个key的value应该为具有相同长度的listprint(dataset)
输出为:
+------------------------------+------------------------------------------------+---------+ | raw_words | words | seq_len |+------------------------------+------------------------------------------------+---------+ | This is the first instance . | ['this', 'is', 'the', 'first', 'instance', ... | 6 | | Second instance . | ['Second', 'instance', '.'] | 3 | | Third instance . | ['Third', 'instance', '.'] | 3 |+------------------------------+------------------------------------------------+---------+
更多内容请大家自行前往阅读fastNLP 中文文档 — fastNLP 0.6.0 文档。