朴素贝叶斯实现中文文本分类项目-学习笔记-python

基于朴素贝叶斯模型的中文文本分类

这里只介绍主要实现过程,主要思想会在后面的博客中写出来,因为现在自己也是一知半解

数据集介绍

朴素贝叶斯模型是有监督分类模型,因此需要采用预处理好的训练数据集,我采用的是“复旦大学计算机信息与技术国际数据库中心自然语言处理小组”提供的小样本中文文本分类语料
https://download.csdn.net/download/qq_37077750/12692257
有能力的也可以自己写爬虫爬取文本数据。

中文分词

因为是中文文本分类,所以需要进行中文分词,本文采用python 的 jieba 分词。以下以简单的一段文本为例来说明 jieba 分词:

import jieba

content = "中文文本分类是文本处理中的一个基本问题。"

seg_list1 = jieba.cut(content,cut_all=False)
print("默认切分模式")
print(" ".join(seg_list1))

seg_list2 = jieba.cut(content,cut_all=True)
print("全切分模式")
print(" ".join(seg_list2))

seg_list3 = jieba.cut_for_search(content)
print("搜索引擎分词模式")
print(" ".join(seg_list3))

统计文本词频并计算TF-IDF

通过分词后的结果,对文本中的单词进行词频统计。
如果将文本看做一个对象,那么分词结果就是这个对象的特征,某个词的词频数量越大,说明这个特征越具有代表性(简单理解)。
但是你可能会问,像“的”,“是”,这样的常用词哪里具有代表性?
因此,我们需要降低这类普遍出现具有较低意义的词的特殊性,这类词的特性就是在大量的文本集合中都有出现,不论是这类文本具有什么样的主题。
TF-IDF值就是针对这一问题进行词频统计的。
TF是指某一给定词语该文档中的出现次数。
IDF是指含有某一指定词在文档集合中出现的次数的倒数再取对数,越多的文档包含该词,值越接近0。
TF-IDF值就是 TF*IDF。

示例:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
# 分类好的语料
corpus = ["中文 文本 分类 是 自然语言 处理 中 的 一个 基本 问题",
          "我 爱 自然语言 处理",
          "这 是 一个 问题 以前 我 从来 没有 遇到 过"]
# 词频统计
vectorizer = CountVectorizer()
# 计算TF-IDF
transformer = TfidfTransformer()

tfidf = transformer.fit_transform(vectorizer
  • 2
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值