文本向量处理的方法jieba,对文本的特征工程之TfidfVectorizer

对于一列文本我们需要对其进行操作的话首先要进行分词处理
例如如下列表
文本向量处理的方法jieba,对文本的特征工程之TfidfVectorizer_第1张图片
我们进行jieba分词处理

import jieba
dfco = df.copy()
dfco['分词描述'] = df['款式'].apply(jieba.lcut)
def tf_re(k):
    k = '{}'.format(k)
    k = k.replace('[','').replace(']','')
    return k
dfco['分词描述'] = dfco['分词描述'].apply(tf_re)
dfco

这是分词后的结果
文本向量处理的方法jieba,对文本的特征工程之TfidfVectorizer_第2张图片
接着我们把他转换成多列数字

 
from sklearn.feature_extraction.text import TfidfVectorizer
#取出X和y
X = dfco['分词描述']
#创建一个TfidfVectorizer的实例
vectorizer = TfidfVectorizer()
#使用Tfidf将文本转化为向量
X = vectorizer.fit_transform(X)
#看看特征形状
X.shape

这个X本质是可以直接拿来训练的,例如直接聚类

from sklearn.cluster import KMeans

# assuming X is a sparse matrix obtained from TfidfVectorizer
num_clusters = 4

# apply KMeans clustering algorithm to the data
kmeans = KMeans(n_clusters=num_clusters, random_state=42)
clusters = kmeans.fit_predict(X)

# add the cluster labels to the original DataFrame
dfco['cluster'] = clusters
dfco

为了方便观察和学习我们转换了一下,这就是对应的特征值

# 将稀疏矩阵转化为DataFrame
pd.DataFrame(X.toarray(), columns=vectorizer.get_feature_names())

文本向量处理的方法jieba,对文本的特征工程之TfidfVectorizer_第3张图片
在做预测方面,我们只需要将所需预测文本进行如下处理便可以获得一行多列数据,这个多少列和上面训练的结果是一样

# Generate a feature vector for a new text input
new_text = "这是一段新的文本"
new_vector = vectorizer.transform([new_text])

# Convert the sparse vector to a dense array and create a DataFrame row
new_row = pd.DataFrame(new_vector.toarray(), columns=vectorizer.get_feature_names())
new_row

对于词性特征可以通过如下方式查看

#词性特征值
data1 = {'word': vectorizer.get_feature_names_out(),
        'tfidf': X.toarray().sum(axis=0).tolist()}
df1 = pd.DataFrame(data1).sort_values(by="tfidf" ,ascending=False,ignore_index=True) 
df1

你可能感兴趣的:(数据预处理,数据挖掘,python,机器学习,开发语言)