基于SVM的书目数据自动分类设计与应用研究

2022-01-21 00:25
黑龙江科学 2021年24期
关键词:词表分类器类别

柴 源

(西安航空学院 图书馆,西安 710077)

目前,书目数据分类标引系统的算法模型主要依赖于词表和知识库,分类标引准确率较低[1]。图书内容简介属于文本文档,难以通过一个线性分类器(直线、平面)来实现分类。书目数据自动分类是采用机器学习算法,将图书内容简介经过自然语言处理后与《中国图书馆分类法》进行自动匹配的过程,支持向量机(Support Vector Machine,SVM)可以将低维空间数据通过核函数映射到高维空间中,获得线性可分的特性,实现自动分类[2-3]。基于此,提出了一种基于SVM的书目数据分类算法模型并进行实验研究。

1 支持向量机

SVM (Support Vector Machine,支持向量机)通过某种事先选择的非线性映射,将输入向量映射到一个高维空间中,构造最优分类超平面,将不同类别的样本分开[4]。超平面是一个比原特征空间少一个维度的子空间,在二维情况下是一条直线,在三维情况下是一个平面[5]。研究表明,支持向量机在处理二分类任务时是非常成功的,解决实际问题时,它将多分类问题转化为多次二分类问题,并进行最大值或投票决策,从而实现多分类[6],基本原理表述如下:

2 自动分类模型的设计

自动分类模型的设计主要包括书目数据预处理、文本特征提取、构造分类模型、模型性能评估等阶段,具体流程如图1所示。

图1 系统设计Fig.1 System design

2.1 数据预处理

数据清洗。去除重复的文本,过滤掉没有研究意义的各种符号,通过小写化、词干提取和词形还原等规范化处理语料里的英文词汇。

中文分词。为了提高计算机对文本信息的识别和理解能力,实验整合中文停用词表(cn_stopwords.txt)、哈工大停用词表(hit_stopwords.txt)、百度停用词表(baidu_stopwords.txt)、四川大学机器智能实验室停用词库(scu_stopwords.txt)等,形成停用词表;数字化《中国分类主题词表》,形成用户词典,并在此基础上应用jieba工具进行分词。

数据编码。原始数据中的分类是列表标记,为了便于训练分类模型,将其转化为数值编码,即给每一个分类设定一个数值。

2.2 文本向量表示

获取词汇表。将数据预处理结果按照一定比例划分为训练集和测试集,训练集用于特征提取、模型构建和验证,测试集用于模型性能测试。例如:[农村,医疗保障,待遇,水平,标准,统筹,发挥,医疗保险,大病,保险……]。

计算每个词的TF-IDF值。TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频度)是一种用于信息检索与文本挖掘的常用加权技术[7],如果某个词在一篇文章中出现的频率TF高,且在其他文章中很少出现,则认为此词具有很好的类别区分能力,适合用来分类。文本中每个词的TF值是每个词的词频/总词频,例如:人工智能的词频是1,总词频是9,所以“人工智能”的TF值是1/9;“人工智能”这个词的IDF=log(2/(2+0.001))=-0.0005。

使用TF-IDF表示一个文本。将训练集中每一个文本中的每一个词对应词汇表的索引进行填值,词汇表中有的索引就用TF-IDF值填充,没有的就用0填充。

2.3 卡方检验

文本向量表示后,所含的特征维度非常高,需要进行特征降维,去除一些与分类关系不大的无关特征,获取更有价值的信息,降低算法的复杂度。

卡方检验(chi-square distribution,CHI)是一种统计学的工具,用来检验数据的拟合度和关联度,是特征降维有效的方法[8]。假设特征项t和类别ci之间符合一阶自由度的χ2分布,特征项t对于类别ci的χ2统计值越高,特征项t和类别ci的相关性越强,类别区分度越大,反之,类别区分度越小。计算公式如下:

式中,A为包含特征项t且属于类别ci的文本数目,B为包含特征项t且不属于类别ci的文本数目,C为不包含特征项t且属于类别ci的文本数目,D为不包含特征项t且不属于类别ci的文本数目。将每个特征项t的χ2统计值从大到小排序,选取前若干个作为特征项集合。

2.4 训练分类器

scikit-learn是一个功能强大的通用机器学习库,封装了大量常用的机器学习算法,包括各种分类算法。设计采用scikit-learn的支持向量机模型训练分类器,主要是将卡方检验后的特征向量输入,使用支持向量机模型训练分类器,并用训练集数据验证分类器的准确性。

2.5 分类器的性能评估

准确率(accuracy)、精确率(precision)、召回率(recall)、f1分数(f1-score)是分类器性能评估的重要指标。准确率是针对所有样本而言的,表示所有样本有多少被准确预测了,即:

精确率是针对预测结果而言的,表示预测为正的样本中有多少是真正的正样本,一种是把正类预测为正类(TP),另一种是把负类预测为正类(FP),即:

召回率是针对正样本而言的,它表示正例样本中有多少被预测正确了。一种是把原来的正类预测成正类(TP),另一种是把原来的正类预测为负类(FN),即:

f1分数(f1-score)是精确率和召回率的调和平均数,最大为1,最小为0,值越大意味着模型越好,即:

3 实验结果与分析

实验系统环境为Windows10,语言环境为Python,调用Python的第三方机器学习库Scikit-learn来实现SVM的分类方法。

3.1 实验数据

以西安航空学院2018-2020年的中文图书书目数据为语料,共计36 046条。由于研究是通过图书内容判别分类号的,所以删除题名、ISBN、责任者、主题词等字段,保留内容简介和分类号。预处理后的数据如图2所示。

图2 数据预处理结果(部分)Fig.2 Data pre-processing results(part)

图2中,category表示图书类别A,B,C,...,Z;category_id表示类别的数值化,0表示A,1表示B...;content表示图书内容简介;clean_content表示清洗后的文本;cut_content表示每个文本的分词结果。

3.2 TF-IDF特征提取

采用train_test_split()函数,设置size=0.25,将数据集划分为训练集和测试集。调用TfidfVectorizer类,ngram_range设置为(1,2),表示除了抽取每个词语外,再抽取每个词相邻的词并组成一个“词语对”,扩展特征集的数量,提高分类的准确度。实验结果可知,维度是(36 046,684 175),前者表示总共有36 046条数据,后者表示共有684 175个特征数量,特征数量包括所有词语和词语对。特征提取结果如图3所示。

图3 TF-IDF特征提取结果(部分)Fig.3 TF-IDF feature extraction results(part)

3.3 卡方检验降维

针对特征维度较高的情况,实验使用sklearn中的chi2卡方检验法进行降维,参数n=4表示找出每个分类中关联度最强的4个词语和4个词语对,加入到词表中,将词表中的词作为保留特征。以TH类为例,部分检验结果如图4所示。

图4 卡方检验结果(TH类)Fig.4 Chi-square test results(TH type)

3.4 模型构建与训练

实验调用LinearSVC构造分类模型,设置kernel=“rbf”,表示使用rbf核;gamma=0.05,表示rbf核相对应的参数为0.05;degree=3表示模型的幂次方等于3次。得到模型后,使用训练集对模型进行训练,编写函数myPredict,代码如下,验证训练集内容的分类情况,并抽取不准确的分类进行增量训练。

def myPredict(sec):

format_sec="".join([w for w in list(jieba.cut(remove_punctuation(sec))) if w not in stopwords])

pred_category_id=clf.predict(count_vect.transform([format_sec]))

print(id_to_category[pred_category_id[0]])

例如,当sec=“本书吸收了国内经济学教材的优点,按照微观经济学和宏观经济学的构架,对经济学的一些基本理论和专业知识、技术和研究方法进行讲解与分析。”时,执行函数,结果显示为F,验证结果准确。

3.5 模型评估

模型在测试集上的精确率、召回率、f1分数及准确率等性能指标,如表1所示。

表1 模型评估指标Tab.1 Indexes of model evaluation

由表1可见,模型的精确率平均达到0.83,召回率平均达到0.83,F1分数平均值为0.82,超过80%。TE、TK、TL、Z各项指标低于0.8,一方面是因为分类的训练数据少,模型学习不充分;另一方面是因为错误分类涉及多个主题,机器无法识别。总体上,模型准确率为0.85,达到预期目的。

3.6 比较试验

采用逻辑回归(Logistic Regression)、随机森林(Random Forest Classifier)、朴素贝叶斯(Multinomial NB)与SVM进行对比实验,不同模型对比实验结果如表2所示。

表2 不同模型试验结果Tab.2 Results of different model tests

Logistic Regression形式简单,难以拟合数据的真实分布;Random Forest Classifier限于训练集数据的验证,在对特定噪声的数据进行建模时会出现过拟合;Multinomial NB需要知道先验概率,由于假设的先验模型导致预测效果不佳。如表2所示,SVM的各项评估指标都高于其他模型。

4 结语

针对传统分类标引系统算法模型准确率低、难以有效解决线性不可分数据的分类问题,引进了SVM模型,设计了基于SVM的书目数据智能分类检测系统,以西安航空学院图书馆书目数据为样本,通过数据预处理、TF-IDF特征提取、chi2特征降维、LinearSVC建模等完成分类器的初次训练,在测试集上完成分类器的性能评估,并与逻辑回归、随机森林、朴素贝叶斯进行对比实验。实验结果表明,召回率为0.82,f1分数为0.82,精确率为0.83,准确率为0.85,高于其他机器学习模型,精度较高,泛化能力较强,具有良好的适用性。

猜你喜欢
词表分类器类别
面向分级阅读的分级词表研制*
论陶瓷刻划花艺术类别与特征
基于朴素Bayes组合的简易集成分类器①
A Chinese-English List of the Sports Programmes in Winter Olympics 冬奥会项目名称汉英对照词表
一起去图书馆吧
基于特征选择的SVM选择性集成学习方法
基于差异性测度的遥感自适应分类器选择
基于层次化分类器的遥感图像飞机目标检测
基于语料库的词表创建原则及方法研究
常用联绵词表