欢迎光临
我们一直在努力

文本向量化和朴素贝叶斯分类器

一、文本向量化

文本向量化是自然语言处理中的一个核心步骤,目的是把文本数据转换成计算机能够处理的数字向量。
计算机不能直接理解“机器学习”这样的人类语言需要转换成“[0.2, 0.5, 0, 1.3, …]”这样的数字形式,才能进行机器学习、分类、聚类等任务。
代码辅助演示
导入模块

from sklearn.feature_extraction.text import CountVectorizer

CountVectorizer:将文本中的词语转换成数字,并统计每个词出现的次数。

texts=["dog cat fish","dog cat cat","fish bird","bird"]

texts:准备文本数据,这条代码有4条数据"dog cat fish",“dog cat cat”,“fish bird"和"bird”
按列表顺序,编号分别是0,1,2,3

cv = CountVectorizer(ngram_range=(1,1))

创建词向量模型,其中ngram_range=(1,1)表示只提取单个词,比如:“dog cat fish”拆成“dog”,“cat”,“fish”
如果是ngram_range=(1,1),则拆成“dog cat“,“cat fish”

cv_fit=cv.fit_transform(texts)

训练并转换文本,这一步包涵两步
第一步:fit–所有文本中的词建立编号
第二步:transform–根据词库统计每句话中的词频

print(cv_fit)

输出类似:
(1,1) 2表示:
第1条文本,第1个词出现2次。(dog cat cat 里面 cat 出现2次)
在这里插入图片描述

二、 朴素贝叶斯分类器

朴素贝叶斯分类器是一种基于概率统计的机器学习分类算法,它利用贝叶斯定理计算一个样本属于某个类别的概率,然后选择概率最大的类别作为预测结果。
朴素贝叶斯的核心来自贝叶斯定理:
在这里插入图片描述
代码辅助演示

from sklearn.naive_bayes import MultinomialNB

导入朴素贝叶斯分类器
MultinomialNB最合适 文本分类、词频统计、TF-IDF文本向量 这种离散特征。

classifier = MultinomialNB(alpha=0.1)

创建一个朴素贝叶斯模型
alpha=0.1表示拉普拉斯平滑参数,他的作用是防止某些词没有出现导致概率为0
例如:
训练集中没有出现过的新词会导致朴素贝叶斯计算时出现 P(词|类别)=0,使整个分类概率变为0,因此需要通过拉普拉斯平滑给未出现词分配一个小概率,避免零概率问题。

classifier.fit(x_train_vec, y_train)
train_pr = classifier.predict(x_train_vec)

模型训练 → 训练集预测 → 训练效果评估
x_train_vec:训练文本经过向量化后的特征数据
y_train:训练文本对应的类别标签
train_pr:把训练集再次输入模型,让模型预测类别,保存模型预测结果到train_pr

from sklearn import metrics
print(metrics.classification_report(y_train, train_pr))

将真实标签 y_train和预测结果 train_pr进行比较,输出分类报告。
结果类似于:

precision recall f1score support

差 评 0 1.00 0.98 0.99 54068
优质评价1 0.02 0.64 0.03 25

accuracy 0.98 54093

在这里插入图片描述

赞(0)
未经允许不得转载:171主机测评 » 文本向量化和朴素贝叶斯分类器
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址