def gensen_preprocess(train_tok, dev_tok, test_tok, data_path):
    """
    Method to preprocess the train, validation and test datasets according to Gensen
    models requirements.

    Args:
        train_tok(pd.Dataframe): Tokenized training dataframe.
        dev_tok(pd.Dataframe): Tokenized validation dataframe.
        test_tok(pd.Dataframe): Tokenized test dataframe.
        data_path(str): Path to the data folder.

    Returns:
        str: Path to the processed dataset for GenSen.

    """

    split_map = {}

    if train_tok is not None:
        split_map["train"] = train_tok
    if dev_tok is not None:
        split_map["dev"] = dev_tok
    if test_tok is not None:
        split_map["test"] = test_tok

    column_names = ["s1.tok", "s2.tok", "score"]

    if not os.path.exists(os.path.join(data_path, SNLI_CLEAN_PATH)):
        os.makedirs(os.path.join(data_path, SNLI_CLEAN_PATH), exist_ok=True)

    _preprocess(split_map, data_path, column_names)
    _split_and_cleanup(split_map, data_path)

    return os.path.join(data_path, SNLI_CLEAN_PATH)

    Method to preprocess the train, validation and test datasets according to Gensen
    models requirements.

    Args:
        train_tok(pd.Dataframe): Tokenized training dataframe.
        dev_tok(pd.Dataframe): Tokenized validation dataframe.
        test_tok(pd.Dataframe): Tokenized test dataframe.
        data_path(str): Path to the data folder.

    Returns:
        str: Path to the processed dataset for GenSen.

    
utils_nlp/models/gensen/preprocess_utils.py