Fairseq Random Sentence Generator

  • Share this:

Code introduction


This function generates a random sentence using the Fairseq library. It accepts source language code, target language code, model path, and dataset name as inputs, and returns a randomly generated sentence in the target language.


Technology Stack : Fairseq, GPT2Tokenizer, LanguagePairDataset, FairseqLanguageModel

Code Type : The type of code

Code Difficulty : Intermediate


                
                    
import random

def random_sentence_generator(source_lang, target_lang, model_path, dataset_name):
    """
    Generates a random sentence using a Fairseq model.

    Args:
        source_lang (str): Source language code.
        target_lang (str): Target language code.
        model_path (str): Path to the Fairseq model.
        dataset_name (str): Name of the dataset to use for sampling.
    Returns:
        str: A randomly generated sentence in the target language.
    """
    import fairseq
    from fairseq.data import LanguagePairDataset
    from fairseq.models import FairseqLanguageModel

    # Load the model
    model = FairseqLanguageModel.load(model_path)

    # Load the dataset
    dataset = LanguagePairDataset(
        src_lang=source_lang,
        tgt_lang=target_lang,
        data=dataset_name,
        bpe='gpt2',
        tokenizer=fairseq.tokenizers.GPT2Tokenizer()
    )

    # Generate a random sentence
    with model.generate(dataset) as generator:
        for i, sentence in enumerate(generator):
            if i == 0:  # Only get the first sentence from the generator
                return sentence[0]

    return "Error: No sentence generated."