使用TfidfVectorizer()提取中文文本的词频-逆文档频率特征
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特征向量可以方便地进行文本分类、聚类等任务,因为文本中的重要词汇被突出表示了。
