fastNLP.embeddings.char_embedding¶
该文件中主要包含的是character的Embedding,包括基于CNN与LSTM的character Embedding。与其它Embedding一样,这里的Embedding输入也是 词的index而不需要使用词语中的char的index来获取表达。
-
class
fastNLP.embeddings.char_embedding.
CNNCharEmbedding
(vocab: fastNLP.core.vocabulary.Vocabulary, embed_size: int = 50, char_emb_size: int = 50, word_dropout: float = 0, dropout: float = 0, filter_nums: List[int] = 40, 30, 20, kernel_sizes: List[int] = 5, 3, 1, pool_method: str = 'max', activation='relu', min_char_freq: int = 2, pre_train_char_embed: str = None, requires_grad: bool = True, include_word_start_end: bool = True)[源代码]¶ 基类
fastNLP.embeddings.TokenEmbedding
别名
fastNLP.embeddings.CNNCharEmbedding
fastNLP.embeddings.char_embedding.CNNCharEmbedding
使用CNN生成character embedding。CNN的结构为, embed(x) -> Dropout(x) -> CNN(x) -> activation(x) -> pool -> fc -> Dropout. 不同的kernel大小的fitler结果是concat起来然后通过一层fully connected layer, 然后输出word的表示。
Example:
>>> import torch >>> from fastNLP import Vocabulary >>> from fastNLP.embeddings import CNNCharEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) >>> embed = CNNCharEmbedding(vocab, embed_size=50) >>> words = torch.LongTensor([[vocab.to_index(word) for word in "The whether is good .".split()]]) >>> outputs = embed(words) >>> outputs.size() >>> # torch.Size([1, 5,50])
-
__init__
(vocab: fastNLP.core.vocabulary.Vocabulary, embed_size: int = 50, char_emb_size: int = 50, word_dropout: float = 0, dropout: float = 0, filter_nums: List[int] = 40, 30, 20, kernel_sizes: List[int] = 5, 3, 1, pool_method: str = 'max', activation='relu', min_char_freq: int = 2, pre_train_char_embed: str = None, requires_grad: bool = True, include_word_start_end: bool = True)[源代码]¶ - 参数
vocab -- 词表
embed_size -- 该CNNCharEmbedding的输出维度大小,默认值为50.
char_emb_size -- character的embed的维度。character是从vocab中生成的。默认值为50.
word_dropout (float) -- 以多大的概率将一个词替换为unk。这样既可以训练unk也是一定的regularize。
dropout (float) -- 以多大的概率drop分布式表示与char embedding的输出。
filter_nums -- filter的数量. 长度需要和kernels一致。默认值为[40, 30, 20].
kernel_sizes -- kernel的大小. 默认值为[5, 3, 1].
pool_method -- character的表示在合成一个表示时所使用的pool方法,支持'avg', 'max'.
activation -- CNN之后使用的激活方法,支持'relu', 'sigmoid', 'tanh' 或者自定义函数.
min_char_freq -- character的最少出现次数。默认值为2.
pre_train_char_embed -- 可以有两种方式调用预训练好的character embedding:第一种是传入embedding文件夹 (文件夹下应该只有一个以.txt作为后缀的文件)或文件路径;第二种是传入embedding的名称,第二种情况将自动查看缓存中是否存在该模型, 没有的话将自动下载。如果输入为None则使用embedding_dim的维度随机初始化一个embedding.
requires_grad -- 是否更新权重
include_word_start_end -- 是否在每个word开始的character前和结束的character增加特殊标示符号;
-
forward
(words)[源代码]¶ 输入words的index后,生成对应的words的表示。
- 参数
words -- [batch_size, max_len]
- 返回
[batch_size, max_len, embed_size]
-
training
: bool¶
-
-
class
fastNLP.embeddings.char_embedding.
LSTMCharEmbedding
(vocab: fastNLP.core.vocabulary.Vocabulary, embed_size: int = 50, char_emb_size: int = 50, word_dropout: float = 0, dropout: float = 0, hidden_size=50, pool_method: str = 'max', activation='relu', min_char_freq: int = 2, bidirectional=True, pre_train_char_embed: str = None, requires_grad: bool = True, include_word_start_end: bool = True)[源代码]¶ 基类
fastNLP.embeddings.TokenEmbedding
别名
fastNLP.embeddings.LSTMCharEmbedding
fastNLP.embeddings.char_embedding.LSTMCharEmbedding
使用LSTM的方式对character进行encode. embed(x) -> Dropout(x) -> LSTM(x) -> activation(x) -> pool -> Dropout
Example:
>>> import torch >>> from fastNLP import Vocabulary >>> from fastNLP.embeddings import LSTMCharEmbedding >>> vocab = Vocabulary().add_word_lst("The whether is good .".split()) >>> embed = LSTMCharEmbedding(vocab, embed_size=50) >>> words = torch.LongTensor([[vocab.to_index(word) for word in "The whether is good .".split()]]) >>> outputs = embed(words) >>> outputs.size() >>> # torch.Size([1, 5,50])
-
__init__
(vocab: fastNLP.core.vocabulary.Vocabulary, embed_size: int = 50, char_emb_size: int = 50, word_dropout: float = 0, dropout: float = 0, hidden_size=50, pool_method: str = 'max', activation='relu', min_char_freq: int = 2, bidirectional=True, pre_train_char_embed: str = None, requires_grad: bool = True, include_word_start_end: bool = True)[源代码]¶ - 参数
vocab -- 词表
embed_size -- LSTMCharEmbedding的输出维度。默认值为50.
char_emb_size -- character的embedding的维度。默认值为50.
word_dropout (float) -- 以多大的概率将一个词替换为unk。这样既可以训练unk也是一定的regularize。
dropout -- 以多大概率drop character embedding的输出以及最终的word的输出。
hidden_size -- LSTM的中间hidden的大小,如果为bidirectional的,hidden会除二,默认为50.
pool_method -- 支持'max', 'avg'。
activation -- 激活函数,支持'relu', 'sigmoid', 'tanh', 或者自定义函数.
min_char_freq -- character的最小出现次数。默认值为2.
bidirectional -- 是否使用双向的LSTM进行encode。默认值为True。
pre_train_char_embed -- 可以有两种方式调用预训练好的character embedding:第一种是传入embedding文件夹 (文件夹下应该只有一个以.txt作为后缀的文件)或文件路径;第二种是传入embedding的名称,第二种情况将自动查看缓存中是否存在该模型, 没有的话将自动下载。如果输入为None则使用embedding_dim的维度随机初始化一个embedding.
requires_grad -- 是否更新权重
include_word_start_end -- 是否在每个word开始的character前和结束的character增加特殊标示符号;
-
training
: bool¶
-