Skip to content

自实现朴素贝叶斯分类器,文本分类一百万条新闻

Notifications You must be signed in to change notification settings

pteric/Text-Classify-in-NaiveBayes

Repository files navigation

新闻文本分类 -- 自实现朴素贝叶斯分类器

本项目利用100万的新闻文本,利用朴素贝叶斯来进行文本分类,新闻包括[car、culture、energy、entertainment、finance、health、house、IT、military、sport]十个类,每个类10w条新闻,并且其中,50万数据用以训练,50万数据用以测试

项目文件包括:

  • dataframe_test.py:一个pandas.dataframe的用法测试文件;
  • get_data_format.py:用以分析搜狗实验室新闻语料,将其中混合的新闻分出多个类(但是这个语料库的新闻质量不高且不均匀,我用八爪鱼自行爬取了100W)
  • segment_script.py:数据预处理,用来将原新闻预料分词,其中主要利用了jieba分词,分词的要求为:
    • 只取汉字
    • 去掉停用词
    • 只取名词
    • 去掉单个字
  • class_word_frequents.py:统计每个词在其类别下被包含的文档数,用以卡方检验计算;
  • chisquare_test.py:卡方检验,筛选出每个类下卡方值高的特征词,卡方检验的原理与理解推荐此文---特征选择算法之开方检验
  • file2bunch.py:分别将所有训练文件与测试文件的文件名、内容与对应类读入Bunch数据结构,并将其序列化存储到一个文件,方便后面程序的读写与计算;
  • construct_tfidfspace.py:创建训练数据的tfidf矩阵,并且利用训练数据的词袋创建测试数据的tfidf矩阵,将测试数据与训练数据放在同一词向量空间里;
  • MultinomialNB.py:利用sklearn中的多项式朴素贝叶斯分类器,以tfidf为参数进行预测;
  • bim_bayes.py:自编二项式朴素贝叶斯分类器,其中利用laplas平滑算法进行零概率处理,利用pandasnumpy加速50万数据的训练与测试,经过多次测试,平均训练时间为10min,平均测试时间为23min,平均总体正确率、召回率和F测度都为84%

About

自实现朴素贝叶斯分类器,文本分类一百万条新闻

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages