文本分类学习笔记(2)- 特征提取

本文记录了在进行英文文本分类任务时遇到的问题和解决方案,包括文本导入、特征提取、分类器实现和错误修正。通过扫描文件夹、统计单词、使用sklearn和自定义K均值算法,发现并解决了字典更新、词频计算、分词及特殊字符处理等问题。后续优化方向包括提高分词效率和利用nltk进行更精确的预处理。
摘要由CSDN通过智能技术生成

师兄提供了一组英文文本分类任务,正好拿来练手。
第一个问题就是文本的导入问题。数据格式为:每个类别一个文件夹,存放无后缀的文本文件,单词以空格切分。
自然的想法就是扫描文件夹下的所有文本,并将所有单词读入字典。
依据 http://www.jb51.net/article/52218.htm 中提供的方法,稍作修改得到如下方法:

#coding=utf-8
import os
import nltk
from numpy import *
from operator import itemgetter
from collections import OrderedDict,Counter
from math import exp
from scipy import sparse,io
from sklearn.linear_model import LogisticRegression
import warnings
warnings.filterwarnings("ignore")

def load_files(directory,prefix=None,postfix=None):
    #获取所有文件
    files_list=[]
    classlen=[0 for i in range(11)]
    i = 0
    for root, sub_dirs, files in os.walk(directory):
        classlen[i] = len(files)
        i += 1
        for special_file in files:
            if postfix:
                if special_file.endswith(postfix):
                    files_list.append(os.path.join(root,special_file))
            elif prefix:
                if special_file.startswith(prefix):
                    files_list.append(os.path.join(root,special_file))
            else:
                    files_list.append(os.path.join(root,special_file))
    #扫描建立词典
    articallist = [dict() for i in range(len(files_list))]
    filelen = [0 for l in range(len(files_list))]
    i = 0
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值