文本分类:用神经网络对纯源文件进行分类外文翻译资料

 2022-12-04 15:34:01

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


文本分类:用神经网络对纯源文件进行分类

亚罗米尔威柏

系统分析系,信息与统计学院,布拉格经济大学,W. Churchilla 4,130 67布拉格3,捷克共和国

摘要:自动文本文件分类在计算机工程中具有重要的地位,特别是在这个过程中称为数据管理自动化。已经写了很多关于文本分类和分类的方法,这些文件是众所周知的。不幸的是,大多数的研究是理论和实际执行需要更多的研究。我决定贡献一个研究,专注于创建一个分类的不同类型的程序(源文件,脚本hellip;)。本文将描述实际执行的文本文件,根据文件内容的分类。

关键词:分类,神经网络,文本文件,分类,自动化,程序设计语言

1.动机

如今脚本是恶意代码编写者的热门目标。这是因为它比系统相关的二进制版本更便于携带,而且大多数现代编程语言很容易学。越来越多的恶意文本文件带来了自动处理这些文件的需求。

文本文档分类的目的是根据其内容自动将未知文档分配到一个或多个预定义类中。考虑到越来越多的文件自动文件处理变得有趣不仅学术,但也为商业环境。需要这种分类是连续自动化的文件处理取决于文件类型(文件类)。

在恶意软件分析所有额外的信息是有益的,而且分类这些文件允许随之而来的自动化处理的文件,这取决于他们的类型。因此,分类这些文件是由安全软件开发商要求。

在本文中,我想提出切实可行的解决方案的分类程序源文件(源文件,脚本hellip;)。关于文本分类的文章绝大多数是理论性的,因此提出实用的解决方案并不容易,这是最终需要的。我希望本文将帮助其他人为上述目的,但也为其他目的创建分类器。

2.背景

在文本分类中,文本主要转化为特征向量,连续的统计方法之一是用于分类向量到一个或多个类。分类的常见过程如图1所示:分类。

数据 特征向量

分类器

特征提取器

输入数据

图1:分类

下面提到的方法,用于特征提取,被设计为文档分类-自然语言的文本,例如新闻内容,使报纸文章可以被归类为有关经济的文章或文章的文章。的数据,对这些方法进行了测试,例如路透社-22173收集和OHSUMED语料库。

图1中介绍的第一阶段分类是将文本数据转换为特征向量。进行这一步骤的一种常用方法是使用“包字”表示,其中每个特征是一个单一的令牌。在这个阶段,分类器需要识别两个未知数;首先“什么是特征?“第二,”如何量化的功能?“每个分类器都必须解决这两个问题。

用于特征选择不同的方法有不同的文档频率阈值(DF),信息增益(IG),互信息(MI),chi;2统计(CHI)和长期强度(TS)。这些方法被描述为例如在[ 9 ]或[ 5 ]。

这个应用工具的第一个目标是减少词汇。我们执行这第一步,因为不相关和多余的话往往降低分类算法的性能,无论是在速度和分类精度。DF执行此任务只是通过计算文本文件的数量被发现的话,然后设置在大多数文档中缺少的词去除的阈值。IG为特定类别的单词设置单词评分,将任何给定类的低意义词删除。“IG通过知道文档中存在或不存在的术语来度量类别预测所获得的大量信息。”。

MI和CHI率的话,使用统计方法,这是计算的概率共生词和类。TS是语料库统计方法引入的文本分类方法,它在相关文档中计数单词强度,从而消除弱词,减少词汇。

如果特征向量构造特征提取过程中的下一个阶段将这个向量发送到分类器。分类器需要使用一定的方法得到分类结果。近年来介绍了一系列的有趣的方法:朴素贝叶斯,神经网络,K近邻,支持向量机,提升。

然而,我的任务不是测试所有已知的方法。我决定找出实用和工作解决方案的源文件分类。因此,本研究的目的是不是识别的最佳方法来应用。我更专注于寻找方法,这将服务的目的以及。同时介绍了改进的特征提取方法,具体用于源文件。

3.方法论

参考分类图(图1)的介绍,任务是构造它。主要部分是特征提取创建的特征向量和分类器,作出决定的最终结果(类)。

我必须指出的是,在进行这个项目之前(IG 神经网络)我花了一些时间用DF 朴素贝叶斯分类器研究过相同的问题。根据测试集这个分类的准确度约为60-80%。不幸的是,根据我的标准,DF 朴素贝叶斯分类器是不够准确的。

之前的项目没有成功的原因被讨论,但是我认为主要原因是分离DF的用法,而不是编程语言的理想特征提取器。

因此,我现在介绍的第二个解决方案IG 神经网络。

3.1特征提取器

特征提取的一个优点是它的通用性。我们可以为大多数目的使用它们。正如我在第2章中提到的,它们被设计用于文档分类。

但在我的特别研究中,我有更多的细节,我试图分类的文件,所以我可以使用这方面的知识,以改善和减少特征向量。我正在尝试分类源文件。这些文件因为编程语言的关键字和标志是特定的。文件中的其他单词有点不太有趣,因为这些只是变量名,自定义函数名。在某些情况下,标准库函数对于特征提取是有趣的,但不是对于其他的单词。

关键词用于编程语言命令和声明。查找所有可能出现在编程语言中的关键字是没有问题的,我可以使用关键字的知识对我的利益。编程语言的另一个独特的特点是符号用法。每一种编程语言都定义了哪些符号可能出现,哪些是不允许的。不同语言之间的关键词和符号重叠是很普遍的现象;然而,有肯定的候选人最好的属性是他们之间的文件功能,这些是有趣的。

这意味着我可以使用第2章中提到的这些方法之一,但是,我应该通过过滤器运行单词(字符串)来从标准库、关键字或符号中筛选出唯一的名称。特定类可能有不同的过滤器。这一考虑的结果是创建含XML的文件,这是过滤结果。作为一个输入过滤,我决定用IG;但是我希望MI和CHI不应该返回更差的结果并且其他的特征提取方法也可以被使用。但特征提取的主要步骤是使用所提到的过滤器来删除自定义变量和函数名,并收集功能类似的评级组。

更确切地说,我的特征提取是用字符串搜索实现的,所以这些单词是字符序列。为了减少特征向量到最小的字符串被收集到组,其中每个组代表一个编程语言(类)。每个组包含一个或多个字符串,为该类提供高IG

我想了一下需要多少评级小组。我开始了一组,但它是绝对不够的,所以现在我有两组,第一组包含低和中等评级正常的单词和第二组是包含高评级的特殊的单词(字符串)。

图2:特征提取演示了一个类的特征提取,如上所述。

特征滤波器和教授

特征提取器(IG)

输入文件(一个类)

类文件数据

特征和评级

正常功能 标准评级功能

特殊功能 高评级特征

图2:特征提取器

我的研究结果是修改IG,这将是能够选择字符串词汇和最终特征向量的大小等于类的数量。结果仅仅是小尺寸,所以分类的速度是相当高的。

分类器的不确定性是解决方案的下一个障碍。特别是如何分类处理的文件,很少发现字符串被发现。为此,我在特征向量中增加了一个变量--在文本中检查的字符数除以单词数。这个变量应该指示分类器是否被检查的文件是编程语言的文本,或者它是否只是文本中编程语言的一个字。

3.2分类器

决策是所有神经网络的主要任务。人工版本是试图模拟自然神经网络的操作。分类是一个决定分配一个类的特征向量。

利用神经网络的分类介绍。Weiner介绍了神经网络的三个主要组成部分:结构、成本函数和搜索算法。关于建筑——一个或多个隐藏层与非线性激活功能允许网络模型输入和输出之间的非线性关系。编程语言(类)之间存在一定的非线性关系,因此一个或多个隐含层应该是神经网络。我只用了一个,似乎已经足够了。非线性函数通常用于隐藏神经元的乙状结肠或测角功能。我做了一些实验,最好的激活功能似乎是Elliott函数(由David Elliott定义的快速乙状结肠):

这个函数是更快,有时会比标准的乙状结肠给出更好的结果:

因此,我的网络的体系结构是两层前馈网络的输入神经元数等于类的数量加一个和相同数量的输出神经元。隐神经元数等于数输入神经元的1.3。这是实验发现的常数。对于神经网络的输出,我使用标准的乙状结肠0gt;ylt;1,我使用的N输出的1,所以决定的类特征向量是指通过选择最活跃的输出。其中一个输出的意思是“我不确定”,如果没有激活足够的输出,就有阈值,这意味着神经网络对输出不确定。

训练(学习)是正常的过程,这是神经网络拟合给定的数据。训练的主要目标是使输出适应给定的输入。它是通过改变神经元连接的权重。正常是使用某种反向传播算法进行训练。我用iRPROP算法。虽然神经网络拟合训练数据的阈值设置为停止训练时,可取的。训练需要在适当的时间停止,避免神经网络过度拟合。过拟合大多导致更好的结果训练数据,但更糟糕的结果,真实的数据。设置阈值的值是高度实验的任务,因为它取决于各种因素,包括输入向量(特征向量)的大小,隐藏的神经元的数目和输入向量的数目。

训练神经网络的输入和所需的输出是必要的。为了获得输入,我使用上面描述的训练文件的特征提取器。用于培训的文件需要在培训前进行分类。我使用的文件扩展名的文件是发现培训班使文件index.rb属于宝石类。

3.3实验结果

我的工作结果两段代码,一个是教练(适合神经网络训练集),一个分类器(标识一个类文件)。这两个程序是专门为一个特定公司的商业用途和我等待的非披露协议,因此,该解决方案不能提供或出售给其他公司,但可以由以下的一般描述。

此外,我用“fann”(http://leenissen.dk/fann/)为我的软件提供神经网络特性的一个图书馆。

培训师部署分析已知的火车站,并配合神经网络训练集。使用包含单词(字符串)的XML文件作为训练器的输入,它创建特征向量(字典)。训练集被安装到教练机以适应神经网络。训练结果是包含字典和神经网络配置的数据文件。数据文件(培训的结果)因此是用来初始化分类,然后将读取各种文件并进行分类。

下一步,我将在这一点上,在通常情况下,将采取标准化的一套不同的源文件和比较的结果,我的解决方案与其他可能的解决方案。但规范的源文件设置不可用,因此我开发和替代源文件集由Sourceforge.net下载不同的源文件。从不同语言编写的项目中获取资源的可能性使得获得足够的训练和测试集的文件成为可能。然而,有必要做一些处理后的文件,特别是在火车上,以消除文件,其中包含大量的意见或不寻常的编程语言建设或大量的文本字符串。这些文件要么移动到测试集或删除。

我从每个类别使用大约40-80文件作为训练集和60个文件的任何类别的相似测试集。我有23个不同的类,所以大约1000个文件被用于培训和测试的1500文件。

测试过程的第一步是将神经网络用于训练集,然后将神经网络状态存储到二进制文件中。

下一步是检查分类器在测试集的二进制文件在上一步中创建的初始精度。

训练集的精度约为95%。我估计在实际数据准确度大约是90%。

分类器现在在公司中实际使用,来估计文件的类型,以提高自动排序。

4.讨论

一个有趣的方法来分类源文件的语法分析的不同来源的所有输入文件。这应该提供准确的解决方案!但第一个问题是这样的解决方案的复杂性-这将是时间要求太高。第二个问题是与输入文件连接-来我们公司的文件可能是不完整的,但它包含恶意例程,所以它必须被分析和检测。这就是为什么使用文本分类器的原因。有很多相互依存的常数:

  • 隐藏神经元数(神经网络结构)。
  • 培训门槛(过拟合)。
  • 特殊词汇的乘数(可从特征提取方法估计)。
  • 输出必须激活多少(输出激活阈值)。

所有这些常量影响精度,不仅如此。类组的字符串的选择可能会显着影响的准确性。我观察到增加一个字符串(单词)只改变大约1%的准确性。

有争议的是对未知类别的一个输出(类)。它可以被删除和状态,没有输出激活可使用。这样我获得两个输出状态未知类。

5. 结论与未来研究

本文介绍了以纯文本格式存储的源文件分类的几乎精确的功能解。虽然引入了分类我创造了足够我们公司的分类的目的,它可以通过对特征向量的选择更好的提高精度。

然而,神经网络的选择似乎是适合这种实现。高适应性和快速学习过程的优势,允许分类工作与非理想的特征提取,并允许不同的程序架构的测试没有长延时。

修改后的IG和神经网络的选择似乎是理想的文本源文件分类。进一步的研究肯定会带来改进建议的解决方案,但实际程序的结果表明,在这个分类过程中有很高的潜力。

参考文献

[1] Ingel, C., Huuml;sken, M.: Second International Symposium on Neural Computation (NC 2000). Berlin : ICSC Academic Press, 2000. Improving the rprop learning algorithm, pp. 115-121. ISBN 3-906454-21

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[25308],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版