首页 > 解决方案 > 如何在使用 TF-IDF 时保留另一列

问题描述

我有一个带有两列数据的熊猫数据框。第一列有文本,第二列是浮点值

cleaned_text |  interaction_duration
us unveils world powerful supercomputer beat china us unveil world powerful supercomputer call summit beat previous record holder 1.0
second summit server reportedly take size two tennis court  2.3
philippinesa category fault total failurea priority p higha open time  23.0

我想将文本转换为 TF-IDF 向量或词向量。

问题是使用 Scikit-learn 的 TF-IDF API,它将其转换为一个 numpy 数组。

我还需要将最终数据集中的第二列作为另一个特征。

如何确保在将 pandas 数据框转换为 numpy 后可以保留最后一列

def tf_vectorizer(self):
        """ Extract Term frequency vector for each document
    
        """
        
        from sklearn.feature_extraction.text import TfidfVectorizer
        print("Extracting tfidf features from Text data...\n")
        
        self.tf_vec = TfidfVectorizer(max_df=0.95, min_df=2,max_features=5000,norm='l2').fit(self.data_df.cleaned_text)
    
    
        print("Tf-idf features extracted!!\n")

标签: pythonpandasscikit-learn

解决方案


为什么不将 tf_vec 分配给新列?

如果您想要每行的向量而不是整个数据集行:

def textvectorizer(text):
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(data_df.cleaned_text)
    print(vectorizer.get_feature_names())

data_df = data_df.assign(tf_vec = lambda x: x['cleaned_text'].apply(lambda s: textvectorizer(s))

推荐阅读