Source code for AuDoLab.subclasses.tf_idf

import warnings
from sklearn.feature_extraction.text import TfidfVectorizer

[docs]def warn(*args, **kwargs): pass
warnings.warn = warn
[docs]class Tf_idf: def __init__(self): 4 + 5
[docs] @staticmethod def tfidf( data, papers, data_column="lemma", papers_column="lemma", features=None, ngrams=2, ): """Creates tf-idf objects for one-class SVM classification. The tf-idf scores are calculated over a joint corpus, however the target data and the out-of-domain training data are stored in seperate, as the one-class SVM is only trained on the tf-idf scores of the out-of-domain training data. Args: data (DataFrame): preprocessed target documents papers (DataFrame): preprocessed out-of-domain training data data_colum (String): name of columnin target dataframe where lemmatized documents are stored. Defaults to 'lemma' papers_colum (String): name of column in out-of-domain training dataframe where lemmatized documents are stored. Defaults to 'lemma' ngrams (int, optional): whether ngram are formed. Defaults to 2. features (int, optional): number of max features. Defaults to 8000. Returns: data and papers: tfidf object data for target data and out-of-domain training data """ df_temp = data.copy(deep=True) papers_temp = papers.copy(deep=True) tfidf_vectorizer = TfidfVectorizer( ngram_range=(1, ngrams), max_features=features ) corpus = df_temp[data_column].tolist( ) + papers_temp[papers_column].tolist() tfidf_vectorizer.fit(corpus) data_corpus = df_temp[data_column].tolist() paper_corpus = papers_temp[papers_column].tolist() data = tfidf_vectorizer.transform(data_corpus) papers = tfidf_vectorizer.transform(paper_corpus) return data, papers