零基础入门NLP- 新闻文本分类 TASK3基于机器学习的文本分类

基于机器学习的文本分类

在本章我们将开始使用机器学习模型来解决文本分类。机器学习发展比较广,且包括多个分支,本章侧重使用传统机器学习,从下一章开始是基于深度学习的文本分类。

3.1.1 学习目标

1.学会TF-IDF的原理和使用
2.使用sklearn的机器学习模型完成文本分类

3.1.2 机器学习模型

机器学习是对能通过经验自动改进的计算机算法的研究,机器学习通过历史数据训练出模型对应于人类经验进行归纳的过程,机器学习利用模型对新数据进行预测对应于人类利用总结的规律对新问题进行预测的过程。

3.1.3 文本表示方法

在自然语言处理领域,文本是不定长的。文本表示成计算机能够运算的数字或向量的方法一般称为词嵌入方法。词嵌入将不定长的文本转换到定长的空间内,是文本分类的第一步。常见的文本表示方法有以下几种

One-hot

零基础入门NLP- 新闻文本分类 TASK3基于机器学习的文本分类_第1张图片

Bag of Words

零基础入门NLP- 新闻文本分类 TASK3基于机器学习的文本分类_第2张图片
在sklearn中可以直接使用CountVectorizer来实现词向量编码

from sklearn.feature_extraction.text 
import CountVectorizer 
corpus = [
'This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?',
]
vectorizer = CountVectorizer() 
vectorizer.fit_transform(corpus).toarray()

N-gram

零基础入门NLP- 新闻文本分类 TASK3基于机器学习的文本分类_第3张图片

TF-IDF

TF-IDF由两部分组成:第一部分是词语频率,第二部分是逆文档频率
在这里插入图片描述

3.1.4 基于机器学习的文本分类

接下来我们将对比不同的文本表示算法的精度,通过本地构建验证集计算F1得分。

Count Vectors + RidgeClassifier(岭回归)

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import RidgeClassifier
from sklearn.metrics import f1_score

vectorizer = CountVectorizer(max_features=3000)
train_test = vectorizer.fit_transform(train_pd['text'])
clf = RidgeClassifier()
clf.fit(train_test[:10000],train_pd['label'][:10000].values)

val_pred = clf.predict(train_test[10000:])
f1_score(train_pd['label'][10000:].values,val_pred,average='macro')

预测准确率:
在这里插入图片描述

TF-IDF + RidgeClassifier

from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.linear_model import RidgeClassifier 
from sklearn.metrics import f1_score
train_df = pd.read_csv('train_set.csv', sep='\t', nrows=15000)
tfidf = TfidfVectorizer(ngram_range=(1,3), max_features=3000) 
train_test = tfidf.fit_transform(train_df['text'])
clf = RidgeClassifier() 
clf.fit(train_test[:10000], train_df['label'].values[:10000]) 
val_pred = clf.predict(train_test[10000:])
print(f1_score(train_df['label'].values[10000:], val_pred, average='macro'))

你可能感兴趣的:(零基础入门NLP- 新闻文本分类 TASK3基于机器学习的文本分类)