python自然语言处理之文本分类

本文所用文件的链接

链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ
提取码:p57s

文本分类(主题识别)

读取20news文件夹, 每个文件夹的文件夹名作为类别标签, 文件夹中的没有文件作为样本, 构建tfidf矩阵, 交给朴素贝叶斯模型训练.

自定义测试样本, 测试每句话的主题属于哪一类别.

"""
主题识别
读取20news文件夹, 每个文件夹的文件夹名
作为类别标签, 文件夹中的没有文件作为样本, 
构建tfidf矩阵, 交给朴素贝叶斯模型训练.   

自定义测试样本, 测试每句话的主题属于哪一类别.
"""
import sklearn.datasets as sd
import sklearn.feature_extraction.text as ft
import sklearn.naive_bayes as nb
import numpy as np

train = sd.load_files('../ml_data/20news', 
	encoding='latin1', shuffle=True, 
	random_state=7)

# train.data: 返回每个文件的字符串内容
# train.target: 返回每个文件的父目录名(类别名)
print(np.array(train.data).shape)
print(np.array(train.target).shape)

# 整理输入集 输出集
train_data = train.data
train_y = train.target
categories = train.target_names # 类别名
cv = ft.CountVectorizer()
bow = cv.fit_transform(train_data)
tf = ft.TfidfTransformer()
train_x = tf.fit_transform(bow)
# 选择使用朴素贝叶斯 进行模型训练
model = nb.MultinomialNB()
model.fit(train_x, train_y)

# 测试集  测试模型是否可用
test_data = [
	'The curveballs of right handed pitchers \
	tend to curve to the left.', 
	'Caesar cipher is an ancient form of \
	encryption.',
	'This two-wheeler is really good on slippery \
	roads.']

bow = cv.transform(test_data)
tfidf = tf.transform(bow)
pred_y = model.predict(tfidf)

for sent, index in zip(test_data, pred_y):
	print(sent, '->', categories[index])
nltk内置分类器

nltk提供了朴素贝叶斯分类器方便的处理NLP相关的分类问题. 并且可以自动处理词袋, 完成TFIDF矩阵的整理, 完成模型训练, 最终实现类别预测. 使用方法:

import nltk.classify as cf
import nltk.classify.util as su
'''
train_data与test_data的格式
不再是一行一样本, 一列一特征   格式如下:
[
({'age':10, 'score1':95, 'score2':80},'g'),
({'age':10, 'score1':35, 'score2':40},'b'),
({'age':10, 'score1':95, 'score2':80},'g')
]
'''
model =
  cf.NaiveBayesClassifier.train(train_data)
ac = cu.accuracy(model, test_data)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值