基于CHI/TFIDT/贝叶斯方法的网页分类器

该博客介绍了如何运用CHI特征选择、TFIDF权重计算和贝叶斯方法进行网页分类。首先,通过搜狗新闻数据集和结巴分词处理文本,接着基于CHI选择150维特征,构建1000维的VSM模型。然后,利用TFIDF计算特征权重,将新闻转化为适合KNN或SVM分类的向量。作者发现未使用TFIDF时分类准确率更高,推测可能的代码错误并计划修正。
摘要由CSDN通过智能技术生成

首先说一下思路,第一步是下载搜狗的新闻分类训练数据集,然后是使用结巴中文分词工具对文本进行处理,并去停用词得到所有文本中出现的词语。第三步是使用CHI作为特征选择的依据给每一类新闻选出150维的特征,并去重。这样我们就可以获得大概1000维的特征。有了特征之后就是为每个新闻构造VSM模型,即使用TFIDF方法计算各特征的权重得到表示该文本的特征向量。这样一来,我们就将原本的新闻文章转化成了(1000维特征向量, 新闻分类)这种可以方便使用KNN/SVM等方法分类的数据。接下来就是使用相应的分类器做分类,检查分类效果。主要参考了这片博客,并基于此进行修改加上了CHI/TFIDF的功能。
至于CHI/TFIDF/VSM/KNN/SVM这些名词,不了解的可以去搜一搜,都很简单。程序中主要用到了jieba分词库和nltk库,第一次做NLP对nltk还都不了解,所以像CHI和TFIDF都是自己写的,程序写的很糟糕,也没有去精简代码。各位看官请见谅。

# -*- coding: utf-8 -*-
import jieba
import nltk
import os
import time
from math import log
import json
floder_path = '/home/liuchong/桌面/搜狗数据集下载/Reduced'
#该文件夹下宗共有9个文件夹,分别存储9大类的新闻数据
floder_list = os.listdir(floder_path)
class_list = []
nClass = 0
N = 100
train_set = []
test_set = []
all_words = {}
#用于记录CHI公示中的A值
A = {}
#记录每个文件的处理事件
process_time = []
TFIDF = {}
#读取停词表
stop_words_file = open('stop_words_ch.txt', 'r')
stopwords_list = []
for line in stop_words_file.readlines():
    stopwords_list.append(line.decode('gbk')[:-2])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值