组队学习笔记Task4:论文种类分类

任务4:论文种类分类

@DateWhale
“Stay hungry Stay young”

任务说明

  • 学习主题:论文分类(数据建模任务),利用已有数据建模,对新论文进行类别分类;
  • 学习内容:使用论文标题完成类别分类;
  • 学习成果:学会文本分类的基本方法、TF-IDF等;

在原始论文中,论文的类别是由作者填写的,在本次任务中,可以借助论文的标题和摘要生成标题,
教程中主要提供了两种思路,采用TF-IDF+机器学习分类器或者采用FastText深度学习工具快速构建分类器,这里我选择使用机器学习的方法来完成文本分类。

预处理

首先,将标题和摘要拼接在一起完成分类;

对原始论文的类别进行分类

data['categories']=data['categories'].apply(lamuda x:x.split(''))
data['categories_big']=data['categories'].apply(lamuda x:[xx.split('.')[0]]for xx in x)

接着对类别进行编码:
这里导入了MulitLabelBinarizer这个分类器

训练

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
data_label = mlb.fit_transform(data['categories_big'].iloc[:])

接下来采用思路一来实现,采用TF-IDF提取特征,TF-IDF是sklearn包的一个文本特征提取器,它的原理是:字词的重要性与其在文本中出现的频率成正比(TF),与其在语料库中出现的频率成反比(IDF)。

首先导入TF-IDF分类器,限制最多4000个单词

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(max_features=4000)
data_tfidf = vectorizer.fit_transform(data['text'].iloc[:])

现在已经得到了关于文本的一个稀疏矩阵由于这里是多标签分类,所以采用sklearn的多标签分类进行封装,根据机器学习的思想,将训练集和数据集进行划分,2成用于测试:

# 划分训练集和验证集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data_tfidf, data_label,
                                                 test_size = 0.2,random_state = 1)

# 构建多标签分类模型
from sklearn.multioutput import MultiOutputClassifier
#算法选择先验高斯分布的分类器
from sklearn.naive_bayes import MultinomialNB
clf = MultiOutputClassifier(MultinomialNB()).fit(x_train, y_train)

验证结果

最后,验证模型的精度并输出:

from sklearn.metrics import classification_report
print(classification_report(y_test, clf.predict(x_test)))

输出为:
在这里插入图片描述
本期主要学习了sklearn的一些用法,有很多是自己以前用过的,最近想要再复习一下python的基础语法,今年学完概率论还想从头推一下机器学习西瓜书的原理

猜你喜欢

转载自blog.csdn.net/weixin_45717055/article/details/112987938