师兄提供了一组英文文本分类任务,正好拿来练手。
第一个问题就是文本的导入问题。数据格式为:每个类别一个文件夹,存放无后缀的文本文件,单词以空格切分。
自然的想法就是扫描文件夹下的所有文本,并将所有单词读入字典。
依据 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