fastNLP.models.sequence_labeling

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

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

基类 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]

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

别名 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

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.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的对应关系。如果传入该值,将自动避免非法的解码序列。