文本分类

语料的读取与处理

import pandas as pd
df_news=pd.read_table(r'C:\Users\CDAer\Desktop\data\car.txt',
                   names=['category','theme','url','content'])
import jieba
#提取新闻的内容,并将其转变成列表
content_list=df_news['content'].values.tolist()
#导入停留词
stopwords=pd.read_csv(r'C:\Users\CDAer\Desktop\data\stopwords.txt',sep='\t',
                     quoting=3,names=['stopword'])
stopwords_list=stopwords['stopword'].values.tolist()
#去除分词长度为1的词,去除空值
contents_clean=[]
for line in content_list:
    seg=jieba.lcut(line)
    line_clean=''
    for word in seg:
        if word =='\n' or len(word)<=1:
            continue
        elif word in stopwords_list:
            continue
        else:
            line_clean=line_clean+' '+word   
    contents_clean.append(line_clean)
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\CDAer\AppData\Local\Temp\jieba.cache
Loading model cost 1.112 seconds.
Prefix dict has been built succesfully.
df_data=pd.DataFrame({'contents_clean':contents_clean,'category':df_news['category']})
df_data.head()
contents_cleancategory
0经销商 电话 试驾 订车 杭州 滨江区 江陵 保常 自魄 白云 大道北 广州市 天河区 黄...汽车
1呼叫 热线 服务 邮箱汽车
2品牌 二月 公布 最新 概念车 效果图 日内瓦 车展 品牌 带来 全新 概念车 性能 车型...汽车
3清仓 甩卖 一汽 夏利 威志 低至 启新 中国 一汽 强势 推出 一汽 夏利 威志 清仓 ...汽车
4日内瓦 车展 见到 高尔夫 家族 成员 高尔夫 敞篷版 全新 敞篷车 众多 高尔夫 车迷 ...汽车

数据的整理

df_data.category.unique()
array(['汽车', '财经', '科技', '健康', '体育', '教育', '文化', '军事', '娱乐', '时尚'],
      dtype=object)
label_map={'汽车':1,'财经':2,'科技':3,'健康':4,'教育':5,'文化':6,'军事':7,'娱乐':8,'体育':9,'时尚':10}
df_data['category']=df_data['category'].map(label_map)
df_data.head()
contents_cleancategory
0经销商 电话 试驾 订车 杭州 滨江区 江陵 保常 自魄 白云 大道北 广州市 天河区 黄...1
1呼叫 热线 服务 邮箱1
2品牌 二月 公布 最新 概念车 效果图 日内瓦 车展 品牌 带来 全新 概念车 性能 车型...1
3清仓 甩卖 一汽 夏利 威志 低至 启新 中国 一汽 强势 推出 一汽 夏利 威志 清仓 ...1
4日内瓦 车展 见到 高尔夫 家族 成员 高尔夫 敞篷版 全新 敞篷车 众多 高尔夫 车迷 ...1

训练集与测试集的划分

vec=TfidfVectorizer(analyzer='word',max_features=2000,lowercase=False)
vec.fit(df_data['contents_clean'].values)
TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
        lowercase=False, max_df=1.0, max_features=2000, min_df=1,
        ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
        stop_words=None, strip_accents=None, sublinear_tf=False,
        token_pattern='(?u)\\b\\w\\w+\\b', tokenizer=None, use_idf=True,
        vocabulary=None)
new_data
<5000x2000 sparse matrix of type '<class 'numpy.float64'>'
	with 214219 stored elements in Compressed Sparse Row format>
X_train,X_test,y_train,y_test=train_test_split(df_data['contents_clean'].values,
                                df_data['category'],test_size=0.2,random_state=1)
type(X_train)
numpy.ndarray
len(X_train[1])
593

将训练集与测试集特征向量化

from sklearn.feature_extraction.text import TfidfVectorizer
TfidfVectorizer?
vec=TfidfVectorizer(analyzer='word',max_features=2000,lowercase=False)
vec.fit(X_train)
TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
        lowercase=False, max_df=1.0, max_features=2000, min_df=1,
        ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
        stop_words=None, strip_accents=None, sublinear_tf=False,
        token_pattern='(?u)\\b\\w\\w+\\b', tokenizer=None, use_idf=True,
        vocabulary=None)
TfidfVectorizer.fit?
x=vec.transform(X_train)
x_test=vec.transform(X_test)

贝叶斯分类器的训练与测试

from sklearn.naive_bayes import  MultinomialNB
cls=MultinomialNB()
cls.fit(x,y_train)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
cls.score(x_test,y_test)
0.806
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值