fastNLP.io.embed_loader

class fastNLP.io.embed_loader.EmbedLoader[源代码]

别名 fastNLP.io.EmbedLoader fastNLP.io.embed_loader.EmbedLoader

用于读取预训练的embedding, 读取结果可直接载入为模型参数。

static load_with_vocab(embed_filepath, vocab, dtype=<class 'numpy.float32'>, padding='<pad>', unknown='<unk>', normalize=True, error='ignore', init_method=None)[源代码]

从embed_filepath这个预训练的词向量中抽取出vocab这个词表的词的embedding。EmbedLoader将自动判断embed_filepath是 word2vec(第一行只有两个元素)还是glove格式的数据。

参数:
  • embed_filepath (str) -- 预训练的embedding的路径。
  • vocab -- 词表 Vocabulary 类型,读取出现在vocab中的词的embedding。 没有出现在vocab中的词的embedding将通过找到的词的embedding的正态分布采样出来,以使得整个Embedding是同分布的。
  • dtype -- 读出的embedding的类型
  • padding (str) -- 词表中padding的token
  • unknown (str) -- 词表中unknown的token
  • normalize (bool) -- 是否将每个vector归一化到norm为1
  • error (str) -- ignore , strict ; 如果 ignore ,错误将自动跳过; 如果 strict , 错误将抛出。 这里主要可能出错的地方在于词表有空行或者词表出现了维度不一致。
  • init_method (callable) -- 传入numpy.ndarray, 返回numpy.ndarray, 用以初始化embedding
Return numpy.ndarray:
 

shape为 [len(vocab), dimension], dimension由pretrain的embedding决定。

static load_without_vocab(embed_filepath, dtype=<class 'numpy.float32'>, padding='<pad>', unknown='<unk>', normalize=True, error='ignore')[源代码]

从embed_filepath中读取预训练的word vector。根据预训练的词表读取embedding并生成一个对应的Vocabulary。

参数:
  • embed_filepath (str) -- 预训练的embedding的路径。
  • dtype -- 读出的embedding的类型
  • padding (str) -- 词表中的padding的token. 并以此用做vocab的padding。
  • unknown (str) -- 词表中的unknown的token. 并以此用做vocab的unknown。
  • normalize (bool) -- 是否将每个vector归一化到norm为1
  • error (str) -- ignore , strict ; 如果 ignore ,错误将自动跳过; 如果 strict , 错误将抛出。这里主要可能出错的地 方在于词表有空行或者词表出现了维度不一致。
Return (numpy.ndarray, Vocabulary):
 

Embedding的shape是[词表大小+x, 词表维度], "词表大小+x"是由于最终的大小还取决与 是否使用padding, 以及unknown有没有在词表中找到对应的词。 Vocabulary中的词的顺序与Embedding的顺序是一一对应的。