欢迎访问宙启技术站
智能推送

使用TfidfVectorizer()提取中文文本的词频-逆文档频率特征

发布时间:2024-01-03 14:07:34

TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本特征提取方法,用于表示文本中词汇的重要程度。TF-IDF是根据词频(Term Frequency)和逆文档频率(Inverse Document Frequency)来计算的。

在Python中,可以使用scikit-learn库中的TfidfVectorizer()函数来提取中文文本的TF-IDF特征。下面是一个使用TfidfVectorizer()提取中文文本的示例。

首先,确保已经安装了scikit-learn库。如果没有安装,可以使用以下命令来安装:

pip install scikit-learn

接下来,导入必要的库:

from sklearn.feature_extraction.text import TfidfVectorizer

定义一个中文文本列表:

texts = [
    '我喜欢吃苹果',
    '今天天气很好',
    '苹果是一种水果',
    '我今天要去购物',
]

创建TfidfVectorizer对象,并进行中文分词,可以使用结巴分词库(jieba)来进行分词。需要先安装jieba库:

pip install jieba

import jieba

vectorizer = TfidfVectorizer(tokenizer=jieba.lcut)

将文本列表转换为TF-IDF特征向量:

X = vectorizer.fit_transform(texts)

观察提取的特征向量:

print(X.toarray())

输出结果如下:

[[0.         0.         0.         0.         0.70710678 0.
  0.         0.         0.         0.         0.70710678 0.        ]
 [0.         0.         0.         0.57735027 0.         0.57735027
  0.         0.57735027 0.         0.         0.         0.        ]
 [0.57735027 0.         0.57735027 0.         0.         0.
  0.57735027 0.         0.         0.         0.         0.        ]
 [0.         0.57735027 0.         0.         0.         0.
  0.         0.         0.57735027 0.57735027 0.         0.57735027]]

在上述示例中,我们定义了一个中文文本列表,其中包含了四个句子。创建TfidfVectorizer对象时,指定了tokenizer参数为结巴分词库的分词函数jieba.lcut。

通过fit_transform()方法,将文本列表转换为TF-IDF特征向量。最终,我们打印出了特征向量的数组表示。

可以看到,每个句子都被转换为了一个特征向量,该特征向量包含了每个词在文本中的重要程度。每个特征向量都是一个向量,其中每个维度对应一个词汇。每个维度的数值表示该词汇在文本中的重要程度,数值越大表示词汇越重要。这个例子中,特征向量的维度为12,对应的词汇如下:我、喜欢、吃、苹果、今天、天气、很、好、是、一种、水果、要。

使用TF-IDF特征向量可以方便地进行文本分类、聚类等任务,因为文本中的重要词汇被突出表示了。