AllenNLP入门笔记(一)

本文介绍了AllenNLP,一个基于PyTorch的自然语言处理工具,用于简化NLP项目的数据处理、模型构建、训练和测试。通过官方样例代码,展示了如何导入库、读取数据集、构建和训练模型。文章强调了数据读取和自定义模型的重要性,并提供了进一步学习的资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NLP的项目流程比较繁琐,正好现在又AllenNLP这个基于PyTorch的工具可以用于规范数据处理,模型构建、训练和测试,感觉不错。之前看了一篇论文,作者用TensorFlow 1.13版本写的一个NLP项目,感觉实在是复杂。

AllenNLP概要

先看一下AllenNLP(https://allennlp.org/)在GitHub页面中的概要,关键就是下面这个表格:

allennlp an open-source NLP research library, built on PyTorch
allennlp.commands functionality for a CLI and web service
allennlp.data a data processing module for loading datasets and encoding strings as integers for representation in matrices
allennlp.models a collection of state-of-the-art models
allennlp.modules a collection of PyTorch modules for use with text
allennlp.nn tensor utility functions, such as initializers and activation functions
allennlp.training functionality for training models

AllenNLP主要分为六个模块:

  • commands:处理命令行和网络服务的一些函数;
  • data:数据处理,数据集加载,将字符串表示为整数;
  • models:一些state-of-the-art模型;
  • modules:一些用于处理文本的PyTorch模块;
  • nn:张量操作的一些函数,包括初始化、激活函数等等;
  • training:用于训练模型的一些函数;

AllenNLP官方样例代码

先看看官方给出的样例代码,简化版的tutorial。这份代码是写在一个Python文件中的,实际项目中会分成各个文件和文件夹。

导入库

from typing import Iterator, List, Dict
import torch
import torch.optim as optim
import numpy as np
from allennlp.data import Instance
from allennlp.data.fields import TextField, SequenceLabelField
from allennlp.data.dataset_readers import DatasetReader
from allennlp.common.file_utils import cached_path
from allennlp.data.token_indexers import TokenIndexer, SingleIdTokenIndexer
from allennlp.data.tokenizers import Token
from allennlp.data.vocabulary import Vocabulary
from allennlp.models import Model
from allennlp.modules.text_field_embedders import TextFieldEmbedder, BasicTextFieldEmbedder
from allennlp.modules.token_embedders import Embedding
from allennlp.modules.seq2seq_encoders import Seq2SeqEncoder, PytorchSeq2SeqWrapper
from allennlp.nn.util import get_text_field_mask, sequence_cross_entropy_with_logits
from allennlp.training.metrics import CategoricalAccuracy
from allennlp.data.iterators import BucketIterator
from allennlp.training.trainer import Trainer
from allennlp.predictors import SentenceTaggerPredictor

torch.manual_seed(1)
  • typing库是Python标准库中用于提供类型注释的,torch库就是PyTorch。
  • allennlp.data用来组织模型处理的数据,其中每个训练样本被组织成Instance,每个Instance中有不同的字段Fields,这里用的是TxetFieldSequenceLabelField
  • allennlp.data.dataset_readers.DatasetReader是用于读取数据的类,大多数AllenNLP代码必须实现的两个类之一,另一个是allennlp.models.Model
  • allennlp.common.file_utils.cached_path是用于下载文件的,也可以指定本地的文件;
  • allennlp.data中的几个token相关的类是用来将文本的token映射为indices(就当是一个token映射到一个整数,token->id),allennlp.data.vocabularly用来将这些映射组合起来构成单词表;
  • allennlp.modulesallennlp.nn.util中的几个Embedding相关的类,是用来给模型添加词嵌入层的;
  • allennlp.training.metrics中的类是用来评测模型的;
  • allennlp.data.iterator中的DataIterator类是数据读取的迭代
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值