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