fastNLP.models.sequence_labeling module

本模块实现了几种序列标注模型

class fastNLP.models.sequence_labeling.SeqLabeling(embed, hidden_size, num_classes)[源代码]

基类:fastNLP.models.base_model.BaseModel

基类 fastNLP.models.BaseModel

别名 fastNLP.models.SeqLabeling fastNLP.models.sequence_labeling.SeqLabeling

一个基础的Sequence labeling的模型。 用于做sequence labeling的基础类。结构包含一层Embedding,一层LSTM(单向,一层),一层FC,以及一层CRF。

__init__(embed, hidden_size, num_classes)[源代码]
参数
  • embed (tuple(int,int),torch.FloatTensor,nn.Embedding,numpy.ndarray) – Embedding的大小(传入tuple(int, int), 第一个int为vocab_zie, 第二个int为embed_dim); 如果为Tensor, embedding, ndarray等则直接使用该值初始化Embedding

  • hidden_size (int) – LSTM隐藏层的大小

  • num_classes (int) – 一共有多少类

forward(words, seq_len, target)[源代码]
参数
  • words (torch.LongTensor) – [batch_size, max_len],序列的index

  • seq_len (torch.LongTensor) – [batch_size,], 这个序列的长度

  • target (torch.LongTensor) – [batch_size, max_len], 序列的目标值

Return y

If truth is None, return list of [decode path(list)]. Used in testing and predicting. If truth is not None, return loss, a scalar. Used in training.

predict(words, seq_len)[源代码]

用于在预测时使用

参数
  • words (torch.LongTensor) – [batch_size, max_len]

  • seq_len (torch.LongTensor) – [batch_size,]

返回

{‘pred’: xx}, [batch_size, max_len]

training: bool
class fastNLP.models.sequence_labeling.AdvSeqLabel(embed, hidden_size, num_classes, dropout=0.3, id2words=None, encoding_type='bmes')[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.models.AdvSeqLabel fastNLP.models.sequence_labeling.AdvSeqLabel

更复杂的Sequence Labelling模型。结构为Embedding, LayerNorm, 双向LSTM(两层),FC,LayerNorm,DropOut,FC,CRF。

__init__(embed, hidden_size, num_classes, dropout=0.3, id2words=None, encoding_type='bmes')[源代码]
参数
  • embed (tuple(int,int),torch.FloatTensor,nn.Embedding,numpy.ndarray) – Embedding的大小(传入tuple(int, int), 第一个int为vocab_zie, 第二个int为embed_dim); 如果为Tensor, Embedding, ndarray等则直接使用该值初始化Embedding

  • hidden_size (int) – LSTM的隐层大小

  • num_classes (int) – 有多少个类

  • dropout (float) – LSTM中以及DropOut层的drop概率

  • id2words (dict) – tag id转为其tag word的表。用于在CRF解码时防止解出非法的顺序,比如’BMES’这个标签规范中,’S’ 不能出现在’B’之后。这里也支持类似与’B-NN’,即’-‘前为标签类型的指示,后面为具体的tag的情况。这里不但会保证 ‘B-NN’后面不为’S-NN’还会保证’B-NN’后面不会出现’M-xx’(任何非’M-NN’和’E-NN’的情况。)

  • encoding_type (str) – 支持”BIO”, “BMES”, “BEMSO”, 只有在id2words不为None的情况有用。

forward(words, seq_len, target)[源代码]
参数
  • words (torch.LongTensor) – [batch_size, mex_len]

  • seq_len (torch.LongTensor) – [batch_size, ]

  • target (torch.LongTensor) – [batch_size, max_len], 目标

Return torch.Tensor

a scalar loss

training: bool
predict(words, seq_len)[源代码]
参数
  • words (torch.LongTensor) – [batch_size, mex_len]

  • seq_len (torch.LongTensor) – [batch_size, ]

Return torch.LongTensor

[batch_size, max_len]

class fastNLP.models.sequence_labeling.BiLSTMCRF(embed, num_classes, num_layers=1, hidden_size=100, dropout=0.5, target_vocab=None)[源代码]

基类:fastNLP.models.base_model.BaseModel

基类 fastNLP.models.BaseModel

别名 fastNLP.models.BiLSTMCRF fastNLP.models.sequence_labeling.BiLSTMCRF

结构为embedding + BiLSTM + FC + Dropout + CRF.

__init__(embed, num_classes, num_layers=1, hidden_size=100, dropout=0.5, target_vocab=None)[源代码]
参数
  • embed – 支持(1)fastNLP的各种Embedding, (2) tuple, 指明num_embedding, dimension, 如(1000, 100)

  • num_classes – 一共多少个类

  • num_layers – BiLSTM的层数

  • hidden_size – BiLSTM的hidden_size,实际hidden size为该值的两倍(前向、后向)

  • dropout – dropout的概率,0为不dropout

  • target_vocab – Vocabulary对象,target与index的对应关系。如果传入该值,将自动避免非法的解码序列。

training: bool