面向农业领域的问答系统问句分类研究

2022-06-10 09:23周俊明李艳翠来纯晓李国厚
关键词:语料库资讯分类

周俊明,李艳翠,来纯晓,李国厚

(1.河南科技学院信息工程学院,河南 新乡 453003;2.河南师范大学计算机与信息工程学院,河南 新乡 453007;3.武汉理工大学计算机与人工智能学院,湖北 武汉 430070)

随着农业领域信息化进程的不断推进,出现了越来越多的信息化应用和服务.农业从事人员在生产中遇到问题时的解答方式也逐步从线下转移到了线上.问答系统可以为用户提供高效、便捷的服务.构建一个农业问答语料库,实现对语料的结构化存储和管理,可以提高数据的管理效率,方便后续问答系统相关研究的展开,对农业领域的信息化具有重要意义.

目前,机器学习广泛应用于各领域.近来年由于计算机系统算力的提升,深度学习技术在图像、语音、文字等领域不断取得了新的成就.问答系统作为自然语言处理领域的一个重要研究方向,越来越多的专家学者把深度学习的方法应用到了问答系统领域的研究中.在医疗领域,张兴等[1]在妈妈网中抓取儿童病护理的相关数据,构建了儿童病护理问答数据集ChildQA,并提出了一种基于多模型融合的TIBD-QA的问答方法.在法律领域,武钰智等[2]构建了有6 万条民事相关的数据集,并构建了基于Bert-Base-Chinese的民事相关问题分类模型.在工业领域,刘根等[3]通过互联网和企业积累的问答数据构建了汽车行业知识库,并基于知识图谱构建了专家系统模型.在农业领域,姜鑫等[4]构建了面向水产疾病领域的语料库,为后续研究打下基础;闫丽华等[5]收集了7828 个句子构建了葡萄病虫害知识图谱,设计并实现了葡萄病虫害自动问答系统.问答系统由问句分类、信息检索、答案抽取三部分组成,其中问句分类则是问答系统研究的第一步.针对农业领域中问答系统的研究,王郝日钦[6]等收集了12000 条提问数据,并进行人工标注,提出了一种用于水稻提问数据分类的模型,在CNN 的上下游卷积块之间建立了一条稠密的链接,并结合了Attention 机制,解决了水稻问句特征不足的问题.杨国峰等[7]构建了常见作物病害问句数据集,并构建了基于BERT 微调的问句分类模型,以提升问答系统的检索效率.

在对农业问句分类进行研究时,存在语料库较少、语料内容范围窄或需要手工标注等问题,构建一个数量充足、覆盖范围广和带标注的农业领域语料库是至关重要的.本文将针对这一问题将收集互联网中的带标签数据,构建一个可用于农业领域问答系统研究的语料库,对数据进行一定的分析,并选择一个合适的分类模型搭建一个可用于农业问句分类的基准模型, 后续将在此基础上进一步对农业问句分类效果的提升进行研究.

1 问句分类数据获取及处理

1.1 数据来源

在互联网技术和移动通讯技术极度发达的今天,网络中的数据呈现出了指数式的增长,农业领域的信息也变得更加丰富,网页上的文本、图片等是一种非结构化的信息,不便于数据的存储管理和充分使用.因此,本文将使用Python 爬虫程序从互联网中获取农业领域的问句和答案对,并使用MySQL 数据库对获取到的数据进行结构化的存储管理,以方便后续研究中的使用.

第一农经网(http://net.1nongjing.com/)是第一家垂直型资讯网站,内容范围主要包括养殖、水产、花草、种子、饮料、食品、旅游农业、农机、饲料、肥料以及科技等方面,为农业从事人员提供在线的信息服务,促进现代农业的发展.本文在第一农经网中获取了科技资讯、动物医学、养殖技术、种植技术和植物病虫害共5 类文本数据,包含问句和答案,并以成对的形式存储在MySQL 数据库中.如图1 所示,为网站中养殖技术类问答句对文本示例.

图1 养殖技术问答句对示例Fig.1 Examples of answers to questions on aquaculture technology

1.2 数据采集

对于第一农经网中大量的文本数据,使用人工进行收集和标注将消耗大量的时间和人力,选择Python 爬虫程序对文本数据进行自动化的获取,这将大大提高数据收集的效率.本文在进行爬虫程序的编写时,主要使用了Requests 和BeastifulSoup 库,其主要流程是:首先获取第一农经网某类文本网页的URL,向该URL 发送request 请求,接收站点返回的网页数据,然后使用BeautifulSoup 库中的方法对网页数据进行解析,向解析到的资讯文本URL 发送request 请求,再次对返回的网页数据进行解析,从中获取资讯的标题和内容,将其保存至本地,并重复上述操作.

本文从第一农经网中获取的数据共分为5 类,分别为动物医学、养殖技术、科技资讯、植物病虫害、种植技术,共获取28608 条数据,每条数据包含问句和答案,在获取数据时把不同类别的数据分开进行保存,方便后续给文本加注类别标签.爬取到的类别、问句样例和数量如表1 所示.

表1 农业问答数据统计Tab.1 Distribution of Wheat Germplasm information sources

1.3 数据预处理

从第一农经网获取到的数据中,除了构建语料库所用的文本信息,还有很多的噪声数据,如特殊字符和空格、回车等无意义字符,这些无意义字符会影响使用数据构建模型时的特征提取.文本中的逗号、句号、问号等常用符号对语义的理解具有帮助,因此对数据进行清洗时仅删除文本中掺杂的特殊字符、空格、换行和制表符等对语义表达无效的内容.数据在获取时使用了“[CLS]”和“[SEP]”对标题和内容进行标准,“[CLS]”和“[SEP]”间的文本为标题,“[SEP]”和“[SEP]”间的文本为详细内容.如图2、图3 所示,分别为进行数据清洗前和进行数据清洗后的数据示例.

图2 数据清洗前的数据示例Fig.2 Sample data before data cleaning

图3 数据清洗后的数据示例Fig.3 Example of data after data cleaning

为了将爬取的数据使用MySQL 进行结构化存储,需要对“标题”和“答案”数据进行提取,并添加上相对应的标签.在语料库中的存储形式为{(ID1,问题1,答案1,类别),(ID2,问题2,答案2,类别),…,(IDn,问题n,答案n,类别)},一个ID 对应一个问句、一个答案和标签,其存储内容如表2 所示.

表2 语料库数据存储内容示例Tab.2 Examples of corpus data store content

2 问句数据分析

2.1 问句长度统计分析

问答系统由问句分类、信息检索、答案抽取3 部分组成,其中问句分类则是问答系统研究的第一步.本文分类任务按照长度的不同可以划分为长文本分类和短文本分类,在长文本分类任务中,由于文本长度充足能够从中抽取出较多的特征信息,对于短文本分类任务来说,文本长度较短会造成特征提取的困难.在对文本进行分类时,长文本和短文本对应了不同的方法和模型,因此要对问句的长度进行统计,然后根据问句的长度选择合适的方法.

对文本所爬取的28608 条数据中的问句文本长度进行统计分析,统计结果如图4 所示.从图中可以看出长度主要集中在30 个字符以内,短文本在进行分类任务时具有特征稀疏的特点,由于其长度较短,在模型训练时也更容易收到噪声的干扰.

图4 问句长度分布Fig.4 Question length distribution

2.2 各类文本主题展示

本文所获取的5 类文本数据是以问答对的形式进行存储, 其中问句则可表达这一对文本的主题信息,因此获取不同类别的主题信息仅需对问句文本进行分析,以获取其中蕴藏的规律.对问句的主题进行分析,首先要去除问句中不能表达主题信息的停用词和标点符号,然后对问句文本进行分词处理,由于本文文本中包含有较多的农业领域专用词,为了保证分词的正确性和专业性,因此本文分词使用了搜狗词库中的“农业词汇大全”词库.去除停用词和进行分词前后的文本数据如表3 所示.

表3 预处理前后文本数据对比Tab.3 Comparison of text data before and after preprocessing

词云(WordCloud)是一种数据可视化的方法,能够对文本中出现频次较高的词组进行展示,能够以直观的方式展示出数据中的主题词.在对问句文本进行预处理后,分别对动物医学、养殖技术、植物病虫害、种植技术和科技资讯这5 种不同类型的文本数据中词汇出现的频次进行统计,各选取了50 个出现频次最高的词汇进行展示,在词云图中出现频次越高的词所占的面积越大,出现频次较低的词所占面积则小些.词云结果展示如图5 所示.

图5 主题词可视化展示Fig.5 Visual display of subject words

如图5 所示,a 动物医学和b 养殖技术都是动物的相关内容,但动物医学侧重于疾病的治疗、防治和预防方面,养殖技术则侧重于动物的养殖、管理和饲养.c 植物病虫害和d 种植技术是植物相关内容,植物病虫害的主要内容是植物的常见病虫害、防治和症状等,种植技术则主要是种植、栽培技术、管理等.e科技资讯的主要内容是现代农业、技术创新、新品种等,作物方面的科技内容相对较多.动物医学和植物病虫害相比于其他几类问题,在解答时需要更加的及时和准确.由图5 还可看出,“技术”“方法”这两个词语在5 类文本中出现的频次都比较高,且对于主题内容的区分没有实际意义,因此可加入到停用词表中,以减少问句分类的噪声干扰.

2.3 地理信息分析

在对数据进行查阅时,发现科技资讯类文本中省份地区名称出现的频次较多,于是对各类文本中包含的省份地区名称进行了统计,省份地区名称在5 个类别中共出现了2094 次,在科技资讯类中出现1966 次,出现率达到了93.89%.出现频次最高的10 个省份,统计结果如表4 所示.

表4 出现频次最高的10 个省份Tab.4 Ten provinces with the highest frequency

在科技资讯类的数据中,内容主要是以报道的形式进行的,区域名称则是为了标明事件的所在地,但其他类别中会出现如“山东狮子猫”这种含有区域名称的品种,这在训练模型时可能会让模型以为“山东狮子猫”和山东地区的科技资讯比较相似,造成错误的分类.可尝试将“科技资讯”类中的区域名称进行去除,以减少模型训练中的噪声数据.

3 实验验证

3.1 实验设置

本实验基于Windows 10 专业版X64 操作系统进行,硬件环境为AMD Ryzen 5600X 处理器,DRR43 600 MHz 16Gb 内存,NVIDIAGeForceRTX3060 GDDR612G 显卡, 软件环境为Python 3.7,Pytorch 1.10.0,Numpy 1.21.4,CudaToolKit 11.3.1.

实验数据为本文采集的5 类共28608 条数据中的问句文本,分别使用仅清洗后的问句、去除“技术”和“方法”后的问句和去除省份地区名称后的问句进行实验,并使用8∶1∶1 的比例将数据划分为训练集、验证集和测试集.

分类模型采用TextCNN(Text Convolutional Neural Network),该模型即Kim[9]提出的一种多通道CNN模型,单通道的CNN 模型采用了固定大小的卷积核对特征进行提取,TextCNN 在卷积层使用了多个不同大小的卷积核,对不同粒度的文本信息特征进程抽取,以弥补短文本在进行特征抽取时存在的特征不足的问题.对于短文本的分类来说,使用词向量会加剧短文本特征信息不足的问题,且文本中存在的不规范词语也会对模型的训练造成不利的影响,所以使用基于字粒度的编码方式更加适合本次实验.由3.1 节可知,问句的长度主要集中在30 个字符内,在进行模型的训练时,每条问句的长度设置为32 个字符,超出的部分进行截断,不足的则在问句后补0.模型训练时使用了EarlyStopping,若超过1000 batch 效果还没提升,则提前结束训练,模型具体参数设置如表5 所示.

表5 实验参数设置Tab.5 Experimental parameter setting

由于问句文本具有样本比例不均衡的特点,所以选择了准确率(Precision)、召回率(Recall)和二者的综合(F1-Score)指标衡量模型的分类性能,并给出了更注重大样本量Class 的宏平均(Macro avg)和更注重小样本量Class 的微平均(Micro avg).其Precision、Recall 和F1-Score 的计算方法如式(1)、式(2)和式(3)所示

式(1)~(3)中:TP(True Positive)表示问句类别为正且预测结果也为正的样本数;FP(False Positive)表示问句类别为负且预测结果为正的样本数;FN(False Negatives)表示问句类别为正且预测结果为负的样本数.

3.2 结果与分析

实验1,对收集的问句进行数据清洗后作为实验数据,使用TextCNN 进行训练时共迭代9 次;实验2,将各类问句中出现频次都比较的词语进行去除,在实验1 数据的基础上,对“技术”和“方法”两个词进行了去除,使用TextCNN 进行训练时共迭代9 次;实验3,在实验1 数据的基础上,对“科技资讯”类中省份地区名称进行了去除,模型训练过程中共迭代8 次.3 次实验的结果如表6 所示.

表6 实验结果Tab.6 Results of experiment

由实验1 和实验2可知,去除“技术”和“方法”后前4 中问句的分类效果均有提升,其中动物医学类F1 值提升最多为9.09,种植技术类F1 值提升0.35,仅科技资讯类下降了0.12,实验2 的宏平均F1 值相比实验1 提升了2.1,整体效果优于实验1.因此,在进行文本分类时,可将不同类别中共同出现频次较高的词语进行去除,以提升模型的分类效果.

由实验1 和实验3可知,在对“科技资讯”类文本中的省份地区名称进行去除后,前四个类别的F1值平均提升了0.875,“科技资讯”类的F1 值下降了3.22.对数据进行分析后发现,“种植技术”和“科技资讯”中部分问句相似度较高,从图5-e 中也可以看出“科技资讯”类中有关植物的内容相对较多,因此在去除省份地区名称后造成了这两类问句的分类错误. 实验3 中整体的模型结果虽然略低于实验2 的结果,但从实际应用角度出发,实验3 中的结果更加符合农业生产场景的应用.

4 小结

随着农业领域信息化进程的不断推进,网络中出现了大量农业类问答的资源,但依靠搜索引擎对这些资源的利用率并不高,未能充分发挥其价值.本文针对农业问答领域内缺少语料库的问题,使用爬虫技术获取了5 类共计28608 条问句- 答案对的文本数据,并对获取的文本数据进行了数据清洗、分词等预处理,构建了一个可用于问答系统研究的农业文本语料库.数据分析结果表明,问句文本的长度主要集中在30 个字符内,各类文本的主题明确具有可辨识度.

使用TextCNN 模型进行实验,首先对预处理后的问句进行实验,验证了数据的可用性;其次对各类文本中共同出现频次较高的词语进行了去除,提升了模型整体的分类效果;然后对“科技资讯”类问句中出现频次极高且与主题相关性不高的“省份地区”名称进行去除,使模型的分类效果更加符合实际生产的使用需求.

本文构建的农业领域问答语料库,可用于知识库的构建和问答系统的相关研究,有助于促进农业领域语料库的完善,缓解农业领域研究中语料库不足的问题.本文构建的语料库中还存在样本不均衡的问题,下一步将对语料库进行扩充,对文本的局部特征和上下文特征进行提取,并使用预训练模型等方法进一步提升模型的分类效果.

猜你喜欢
语料库资讯分类
基于语料库的清末民初日源外来词汉化研究
资讯Information①
运用语料库辅助高中英语写作
按需分类
教你一招:数的分类
说说分类那些事
给塑料分分类吧
语料库与译者培养探索
资讯
资讯