import torch.nn as nn from flair.embeddings import ( TransformerWordEmbeddings, FlairEmbeddings, CharacterEmbeddings, StackedEmbeddings, OneHotEmbeddings ) from flair.data import Sentence class PretrainedEmbeddings(): """ This is the implmentation of the PretrainedEmbeddings we will use to embed our own corpus for the purpose of generating a Tensor(the pre_word_embeds) that we will pass to the model Plan: * Word-level Embeddings: We will utilize BERT Based transformer word embeddings in order to achieve more functionality * Context-level Embeddings: We will stick to Flair Embeddings first then go check if pooled flair is better than FlairEmbeddings """ def __init__(self, word_embedding: str, forward_embedding: str, backward_embedding: str ) -> None: self.word_embedding = word_embedding, self.forward_embedding = forward_embedding self.backward_embedding = backward_embedding def forward(self): # Firstly, we need to call out all pretrained embeddings accessible in # Flair for our requirement flair_forward_embedding = FlairEmbeddings(self.forward_embedding) flair_backward_embedding = FlairEmbeddings(self.backward_embedding) bert_embedding = TransformerWordEmbeddings(model=self.word_embedding, fine_tune=True, use_context=True,) # Next Concatenate all embeddings above stacked_embeddings = StackedEmbeddings( embeddings=[ flair_forward_embedding, flair_backward_embedding, bert_embedding, ]) return stacked_embeddings