使用TfidfVectorizer()对中文问答文本进行特征提取
发布时间:2024-01-03 14:11:41
TfidfVectorizer()是一个用于将文本转换为TF-IDF特征表示的工具。TF-IDF (Term Frequency-Inverse Document Frequency) 是一种常用的用于评估一个词语在文本中的重要程度的统计方法。它将一个文档中特定词语的频率与它在整个文集中出现的频率进行比较,得出一个权重值,用于衡量该词语的重要性。
下面是一个例子,展示如何使用TfidfVectorizer()对中文问答文本进行特征提取:
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
# 定义一组中文问答
questions = [
"如何制作巧克力蛋糕?",
"什么是机器学习?",
"如何学习编程?",
"怎样减肥最有效?"
]
answers = [
"制作巧克力蛋糕的步骤有很多,首先准备材料...",
"机器学习是一种人工智能的应用领域...",
"学习编程可以通过选择合适的编程语言,学习基本语法...",
"减肥最有效的方法是控制饮食..."
]
# 分词
questions_seg = [jieba.lcut(q) for q in questions]
answers_seg = [jieba.lcut(a) for a in answers]
# 构建TF-IDF特征提取器
tfidf_vectorizer = TfidfVectorizer()
# 将问题文本转换为TF-IDF特征表示
questions_tfidf = tfidf_vectorizer.fit_transform([' '.join(q) for q in questions_seg])
# 输出提取的特征表示
print(questions_tfidf.toarray())
# 将答案文本转换为TF-IDF特征表示
answers_tfidf = tfidf_vectorizer.transform([' '.join(a) for a in answers_seg])
# 输出提取的特征表示
print(answers_tfidf.toarray())
在上述例子中,我们首先使用jieba对中文问答文本进行分词处理,并将分词结果存储在questions_seg和answers_seg中。然后,我们使用TfidfVectorizer()构建一个TF-IDF特征提取器。接着,我们使用fit_transform()方法将问题文本转换为TF-IDF特征表示,并使用toarray()方法将稀疏矩阵转换为数组形式进行输出。最后,我们使用transform()方法将答案文本转换为TF-IDF特征表示,并进行输出。
通过这样的方式,我们可以将中文问答文本转换为一组数值型的TF-IDF特征表示,用于后续的机器学习或自然语言处理任务。
