python - 如何在使用 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")
解决方案
为什么不将 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))
推荐阅读
- python - 如何计算 3D 数组中项目的平均值?
- python - 如何使用 Pandas 对具有重复名称的列求和?
- java - 使用struts2登录后重定向
- ionic-framework - Ionic 5 有滑动事件吗?
- c - 如何取消引用 C 中的多层双重嵌套指针以实现动态堆栈?
- loops - 在 Clojure doseq 函数中间暂停?
- javascript - 来自 Express 服务器的客户端中的 console.log()
- javascript - 使用生成器调用 API,next() 函数返回 Promise,正在消耗响应
- github-api - 我应该将哪个范围用于个人访问令牌,仅用于将 ssh 密钥添加到我的 GitHub 帐户?
- typescript - 类型可分配给类型“类型”的约束,但“类型”可以用约束“类型”的不同子类型来实例化