针对公司简介的行业分类方法及装置
文献发布时间:2023-06-19 18:37:28
技术领域
本申请涉及计算机领域,具体而言,涉及一种针对公司简介的行业分类方法及装置。
背景技术
随着信息技术的高速发展,数据开始爆发性增长,社交网络、移动网络、各种智能工具,服务工具等,都成为数据的来源。某电商平台近4亿的会员每天产生的商品交易数据约20TB;脸书约10亿的用户每天产生的日志数据超300TB。广泛的数据来源,决定了数据形式的多样性,任何形式的数据都可以产生作用,如日常电商平台的推荐系统等就是通过对用户的日志数据进行分析,从而进一步推荐用户感兴趣的东西。在金融领域,一般从互联网平台(公司主页信息专栏),能获取公司的信息简介及所从事的主要业务,抽象出来就是一段文本描述,对该文本进行行业分类分析,可以为银行客户经理在挖掘商机,进行理财产品营销时提供一定的信息参考,从而更有针对性的开展营销工作。
由于公司简介的文本信息长度一般在300字以内,使得文本数据具有文本特征稀疏的特性,采用传统的文本分类模型进行分类时,会面临如何从有限的上下文语境中捕获更多的语义信息等问题。
发明内容
本申请实施例的目的在于提供一种针对公司简介的行业分类方法及装置,用以缓解现有技术存在的针对公司简介分类不准确的技术问题。
第一方面,本发明提供一种针对公司简介的行业分类方法,包括:
确定训练样本,所述训练样本包括公司简介文本样本以及样本标签;
基于所述训练样本对XLNet预训练语言模型进行优化,得到优化后的XLNet语言模型;
基于所述优化后的XLNet语言模型对所述公司简介文本样本进行处理,得到高阶文本向量样本;
基于所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型;
基于所述训练好的分类模型针对公司简介进行行业分类。
在可选的实施方式中,所述确定训练样本包括:
确定数据源,并进行打标,得到公司简介源文本以及样本标签;
基于分词工具对所述公司简介源文本进行分词,并进行预处理得到所述公司简介文本样本,所述预处理包括清洗。
在可选的实施方式中,所述XLNet预训练语言模型基于pytorch框架实现,包括config.json文件、vocab.txt文件以及pytorch_model_bin文件。
在可选的实施方式中,所述分类模型包括BiLSTM+Attention网络层以及SoftMax层。
在可选的实施方式中,基于所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型,包括:
将所述高阶文本向量样本输入到BiLSTM+Attention网络层得到输出结果;
将所述输出结果输入到所述SoftMax层得到每个类别的概率标识,以此对初始的分类模型进行训练,得到训练好的分类模型。
在可选的实施方式中,还包括:
获取测试集;
基于所述测试集对所述训练好的分类模型进行验证,当验证通过后,基于所述训练好的分类模型针对公司简介进行行业分类。
在可选的实施方式中,基于所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型,包括:
根据二元交叉熵损失、所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型。
第二方面,本发明提供一种针对公司简介的行业分类装置,包括:
确定模块,用于确定训练样本,所述训练样本包括公司简介文本样本以及样本标签;
优化模块,用于基于所述训练样本对XLNet预训练语言模型进行优化,得到优化后的XLNet语言模型;
处理模块,用于基于所述优化后的XLNet语言模型对所述公司简介文本样本进行处理,得到高阶文本向量样本;
训练模块,用于基于所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型;
分类模块,用于基于所述训练好的分类模型针对公司简介进行行业分类。
在可选的实施方式中,所述确定模块具体用于:
确定数据源,并进行打标,得到公司简介源文本以及样本标签;
基于分词工具对所述公司简介源文本进行分词,并进行预处理得到所述公司简介文本样本,所述预处理包括清洗。
在可选的实施方式中,所述XLNet预训练语言模型基于pytorch框架实现,包括config.json文件、vocab.txt文件以及pytorch_model_bin文件。
在可选的实施方式中,所述分类模型包括BiLSTM+Attention网络层以及SoftMax层。
在可选的实施方式中,所述训练模块具体用于:
将所述高阶文本向量样本输入到BiLSTM+Attention网络层得到输出结果;
将所述输出结果输入到所述SoftMax层得到每个类别的概率标识,以此对初始的分类模型进行训练,得到训练好的分类模型。
在可选的实施方式中,还包括,测试模块,用于:
获取测试集;
基于所述测试集对所述训练好的分类模型进行验证,当验证通过后,基于所述训练好的分类模型针对公司简介进行行业分类。
在可选的实施方式中,所述训练模块具体用于:
根据二元交叉熵损失、所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型。
第三方面,本发明提供一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存储的程序时,实现前述实施方式任一所述的方法步骤。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述实施方式任一所述的方法步骤。
本发明提供一种针对公司简介的行业分类方法及装置。通过确定训练样本,所述训练样本包括公司简介文本样本以及样本标签;基于所述训练样本对XLNet预训练语言模型进行优化,得到优化后的XLNet语言模型;基于所述优化后的XLNet语言模型对所述公司简介文本样本进行处理,得到高阶文本向量样本;基于所述高阶文本向量样本以及所述样本标签对初始的分类模型进行训练,得到训练好的分类模型;基于所述训练好的分类模型针对公司简介进行行业分类。该网络层能对词向量进一步学习并加强特殊行业专业词向量的权重,使得模型能从上下文语义信息中,学习到更多的高阶文本特征向量,获取到更丰富的词向量语义信息,最后对文本分类得到更精确地分类结果。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种针对公司简介的行业分类方法流程示意图;
图2为本申请实施例提供的一个模型结构示例;
图3为本申请实施例提供的一种针对公司简介的行业分类装置结构示意图;
图4为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
图1为本申请实施例提供的一种针对公司简介的行业分类方法流程示意图。如图1所示,该方法可以包括如下步骤:
S110,确定训练样本,训练样本包括公司简介文本样本以及样本标签。
其中,确定数据源,并进行打标,得到公司简介源文本以及样本标签;基于分词工具对公司简介源文本进行分词,并进行预处理得到公司简介文本样本,预处理包括清洗。
作为一个示例,可以从数据库中取出数据源后,先采用人工打标方式,给文本描述打上行业标识,作为后续模型的训练集使用。本文由于实验只提取了四个行业(劳务行业,美容行业,宠物行业,金融行业)的文本信息,每个类别各抽取5000条文本信息作为模型训练使用。
这里的样本标签可以根据实际需要确定,例如可以为行业标签,也可以为属性标签,例如,劳务行业、美容行业等等,还可以为公司体量的标签,例如,为大型企业、中型企业或小型企业等等。
可以利用jieba(结巴)分词工具进行清洗,通过清洗可以去掉英文字符、数字、乱码以及特殊符号等非常规字符,也就是对分类没有意义的字符。
S120,基于训练样本对XLNet预训练语言模型进行优化,得到优化后的XLNet语言模型。
其中,XLNet预训练语言模型基于pytorch框架实现,可以包括config.json文件、vocab.txt文件以及pytorch_model_bin文件。
其中,config.json文件是一个HAP项目主要的配置文件,所有相关配置信息都配置在该文件下;配置文件采用JSON文件格式,每个配置项由属性和值两部分组成;属性的出现不分先后顺序,且只出现一次;值是由JSON的基础数据类型组成。
vocab.txt文件为词汇表。
pytorch_model_bin文件为训练好的XLNet预训练语言模型的二进制文件。
其中,该XLNet预训练语言模型可以包括中文预训练模型文件(bert-base-chinese)。
可以微调XLNet预训练语言模型参数进行训练,得到高阶文本向量的特征信息表示。
这里的微调可以通过训练样本以及预设的损失函数对XLNet预训练语言模型进行继续训练来实现。
该XLNet预训练语言模型为对bert模型的改进版。主要在以下三个方面进行了优化:采用AR(autoregressive,自回归)模型替代AE(autoencoding,自编码)模型,解决mask带来的负面影响;采用双流注意力机制;以及引入transformer-xl。
AR模型的主要任务在于评估语料的概率分布;AE模型采用的就是以上下文的方式。
在xlnet中,最终还是采用了AR模型,但是怎么解决这个上下文的问题呢,这就是本文的一个重点。
引入排列语言模型,该模型不再对传统的AR模型的序列的值按顺序进行建模,而是最大化所有可能的序列的排列组合顺序的期望对数似然,这样处理过后不但保留了序列的上下文信息,也避免了采用mask标记位,巧妙的改进了bert与传统AR模型的缺点。
虽然排列语言模型能满足目前的目标,但是对于普通的transformer结构来说是存在一定的问题的。因此如果不考虑目标的位置信息,就会导致排列组合后的结果一样,或者说transformer输出的结果一样。这就导致模型没法得到正确的表述,为了解决这个问题,论文中提出来新的分布计算方法,来实现目标位置感知,也就是双流自注意力。
该模型还集成了相对位置编码与片段循环机制。
S130,基于优化后的XLNet语言模型对公司简介文本样本进行处理,得到高阶文本向量样本。
可以采用tokenizer+convert to id的形式进行处理,得到高阶文本向量样本。具体过程如下:
其中,在使用神经网络处理自然语言处理任务时,我们首先需要对数据进行预处理,将数据从字符串转换为神经网络可以接受的格式,一般会分为如下几步:
(1)分词:使用分词器对文本数据进行分词(字、字词);
(2)构建词典:根据数据集分词的结果,构建词典映射(这一步并不绝对,如果采用预训练词向量,词典映射要根据词向量文件进行处理);
(3)数据转换:根据构建好的词典,将分词处理后的数据做映射,将文本序列转换为数字序列;
(4)数据填充与截断:在以batch输入到模型的方式中,需要对过短的数据进行填充,过长的数据进行截断,保证数据长度符合模型能接受的范围,同时batch内的数据维度大小一致。
在以往的工作中,我们可能会使用不同的分词器,并自行实现构建词典与转换的工作。但是在transformers工具包中,无需再这般复杂,只需要借助Tokenizer模块便可以快速的实现上述全部工作,它的功能就是将文本转换为神经网络可以处理的数据。Tokenizer工具包无需额外安装,会随着transformers一起安装。
加载Tokenizer。由于Tokenzier是随着预训练模型一起产生的,因此在加载Tokenizer的时候指定要使用的预训练的模型,我们以处理中文数据为例,这里选择加载bert-base-chiense预训练模型的,第一次加载时会下载部分文件。
使用tokenize方法进行分词,bert-base-chinese分词是按照字来分的。
分词之后,应该构建词典,但是正如前面所言,Tokenzier是随着预训练模型一起产生的,因此词典已经预先构建好了,无需再次构建。关于词典的具体内容,可以通过vocab进行查看;
通过词典,将分词结果转换为数字序列,直接调用convert_tokens_to_ids方法即可。通过调用Tokenizer的tokenize与convert_tokens_to_ids两个方法,数据成功从字符串转换为了数字序列。不过,Tokenizer提供了更加便捷的encode方法,可以直接实现上述效果。
借助encode方法,还可以很方便的做到对数据的填充与截断。数据要能够输入transformers提供的预训练模型,还需要构建attention_mask和token_type_id这两个额外的输入,分别用于标记真实的输入与片段类型。
S140,基于高阶文本向量样本以及样本标签对初始的分类模型进行训练,得到训练好的分类模型。
其中,分类模型可以包括BiLSTM+Attention网络层以及SoftMax层。可以将高阶文本向量样本输入到BiLSTM+Attention网络层得到输出结果;将输出结果输入到SoftMax层得到每个类别的概率标识,以此对初始的分类模型进行训练,得到训练好的分类模型。
具体的,可以根据二元交叉熵损失、高阶文本向量样本以及样本标签对初始的分类模型进行训练,得到训练好的分类模型。
可以将第训练好的模型文件进行保存,方便后续在测试集使用。基于此,还可以获取测试集;基于测试集对训练好的分类模型进行验证,当验证通过后,基于训练好的分类模型针对公司简介进行行业分类。
Bi-LSTM+Attention就是在Bi-LSTM的模型上加入Attention层,在Bi-LSTM中我们会用最后一个时序的输出向量作为特征向量,然后进行softmax分类。Attention是先计算每个时序的权重,然后将所有时序的向量进行加权和作为特征向量,然后进行softmax分类。在实验中,加上Attention确实对结果有所提升。其模型结构如图2所示。
其中,对于Bi-LSTM+Attention模型。可以定义模型的输入、定义损失函数,利用预训练的词向量初始化词嵌入矩阵,利用词嵌入矩阵将输入的数据中的词转换成词向量。
定义两层双向LSTM的模型结构:包括前向LSTM结构和反向LSTM结构。可以采用动态rnn,可以动态的输入序列的长度,若没有输入,则取序列的全长。对前向LSTM结构和反向LSTM结构中的fw和bw的结果拼接,传入到下一层Bi-LSTM中,最后一层Bi-LSTM输出的结果分割成前向和后向的输出,将前向和后向的输出相加,到Attention的输出。
计算二元交叉熵损失,利用Attention机制得到句子的向量表示。
S150,基于训练好的分类模型针对公司简介进行行业分类。
其中,需要说明的是,在对文本进行预处理时采用的是XLNet预训练模型,实际工作中也可以选择其他transformer类型的预训练模型,如bert,xlm,Roberta,distilbert等,可以根据实际工作场景和具体效果进行择优,另外本文进行XLNet模型处理后,后接的是基于注意力机制的双向长短时间记忆网络,这里也可以根据实际需要选择普通单向LSTM进行实验,具体根据实际效果进行择优。
将XLNet与基于注意力机制的双向长短时间记忆网络相融合的XLNet-BiLSTM+Attention文本分类模型,模型首先使用XLnet预训练模型生成文本的特征信息表示,然后将其输入基于注意力机制的双向长短时间记忆网络模型BiLSTM+Attention中,该网络层能对词向量进一步学习并加强特殊行业专业词向量的权重,使得模型能从上下文语义信息中,学习到更多的高阶文本特征向量,获取到更丰富的词向量语义信息,最后经过SoftMax函数层实现对文本分类,输出各类别概率。
经实验过,测试集样本量:20万,行业类别4个:分别是劳务行业,美容行业,宠物行业,金融行业。
实验1:利用XLNet预训练模型进行文本分类识别,模型准确率达到73.5%左右。
实验2:如果在后面增加基于注意力机制的双向长短时间记忆网络模型BiLSTM+Attention,模型识别的准确率能提升至80%左右,准确率提升接近7个百分点,该实验证明本文提出的方案是有效的。
图3为本申请实施例提供的一种针对公司简介的行业分类装置结构示意图。如图3所示,该装置包括:
确定模块301,用于确定训练样本,训练样本包括公司简介文本样本以及样本标签;
优化模块302,用于基于训练样本对XLNet预训练语言模型进行优化,得到优化后的XLNet语言模型;
处理模块303,用于基于优化后的XLNet语言模型对公司简介文本样本进行处理,得到高阶文本向量样本;
训练模块304,用于基于高阶文本向量样本以及样本标签对初始的分类模型进行训练,得到训练好的分类模型;
分类模块305,用于基于训练好的分类模型针对公司简介进行行业分类。
在一些实施例中,确定模块301具体用于:
确定数据源,并进行打标,得到公司简介源文本以及样本标签;
基于分词工具对公司简介源文本进行分词,并进行预处理得到公司简介文本样本,预处理包括清洗。
在一些实施例中,XLNet预训练语言模型基于pytorch框架实现,包括config.json文件、vocab.txt文件以及pytorch_model_bin文件。
在一些实施例中,分类模型包括BiLSTM+Attention网络层以及SoftMax层。
在一些实施例中,训练模块304具体用于:
将高阶文本向量样本输入到BiLSTM+Attention网络层得到输出结果;
将输出结果输入到SoftMax层得到每个类别的概率标识,以此对初始的分类模型进行训练,得到训练好的分类模型。
在一些实施例中,还包括,测试模块,用于:
获取测试集;
基于测试集对训练好的分类模型进行验证,当验证通过后,基于训练好的分类模型针对公司简介进行行业分类。
在一些实施例中,训练模块304具体用于:
根据二元交叉熵损失、高阶文本向量样本以及样本标签对初始的分类模型进行训练,得到训练好的分类模型。
本申请实施例还提供了一种电子设备,如图4所示,包括处理器410、通信接口420、存储器430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。
存储器430,用于存放计算机程序;
处理器410,用于执行存储器430上所存放的程序时,实现如上述任意一实施例的方法步骤。
上述提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由于上述实施例中电子设备的各器件解决问题的实施方式以及有益效果可以参见图1所示的实施例中的各步骤来实现,因此,本申请实施例提供的电子设备的具体工作过程和有益效果,在此不复赘述。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的针对公司简介的行业分类方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的针对公司简介的行业分类方法。
本领域内的技术人员应明白,本申请实施例中的实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例中是参照根据本申请实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例中实施例进行各种改动和变型而不脱离本申请实施例中实施例的精神和范围。这样,倘若本申请实施例中实施例的这些修改和变型属于本申请实施例中权利要求及其等同技术的范围之内,则本申请实施例中也意图包含这些改动和变型在内。