基于机器学习的多语言文本抽取系统实现

2017-04-24 10:24周国富
计算机应用与软件 2017年4期
关键词:原型预处理文档

曾 军 周国富

(武汉大学软件工程国家重点实验室 湖北 武汉 430072)

基于机器学习的多语言文本抽取系统实现

曾 军 周国富

(武汉大学软件工程国家重点实验室 湖北 武汉 430072)

基于统计机器学习的信息抽取方法正日益成为研究的热点,在研究与应用方面虽然也产生了一些实用的基于机器学习的文本信息抽取框架与系统,但大多面临着交互性弱、可扩展性低、语言移植能力差等缺陷。为此,研究并提出一种通用可行的支持多语言的信息抽取框架,并基于该框架实现了一个原型系统。原型系统集成了最大熵、支持向量机两种机器学习算法,使用这两种算法对中英文文本的实验验证了系统的实用性。

统计机器学习 信息抽取 多语言 最大熵模型 支持向量机

0 引 言

网络技术的高速发展造就了海量的电子文本资源,如何从众多的电子文本中自动、迅速、准确地得到用户所感兴趣的信息正日益成为一个亟待解决的重大研究课题,基于统计机器学习的信息抽取方法可以很好地满足这一需求。近年来,随着已标注样本集的不断增加与积累,基于统计机器学习的信息抽取技术的研究与应用受到越来越多研究者的青睐,而本文研究的主题正是基于机器学习的文本信息抽取。

尽管当前抽取算法的研究发展相对迅速,但对于信息抽取系统的设计还不充分。主要的问题包括:1)有一些文本抽取系统只是针对特定的应用,如GATE中集成的ANNIE,能够识别“地名”,“句子成分”等,但不能广泛地直接用在其他抽取任务;2)有一些系统只是针对一种特定的抽取算法,如Amilcare,集成了LP2,但不能集成其他算法;3)有一些系统只使用一种语言的文本。这些问题就使得对一个新的领域的信息抽取任务或者对一个现有信息抽取任务应用另一种不同的机器学习算法,几乎所有的工作都要重新开始。那么是否能够设计和实现一个信息抽取的平台,使得不同的信息抽取任务,和应用不同的抽取模型都能够在这个平台上方便的进行呢?这就是本文所关注的主要内容。

针对当前信息抽取系统存在的交互性弱、可扩展性低、语言移植能力差等缺点,本文设计和实现了一个实用的、易于扩展的、具有较好移植性的基于机器学习的信息抽取系统,该系统能够充分利用机器学习算法以及系统模块化设计的优势,达到较好的可扩展性与可移植性。

1 信息抽取系统模型

1.1 机器学习抽取过程

图1给出了基于机器学习进行信息抽取的通用流程。首先在训练样本集和测试样本集上,根据文档中信息特点来进行特征定义与算法选择,然后将特征和算法相结合在训练样本集上进行学习以构造抽取模型,最后再在测试集文档上使用构造的信息抽取模型进行模型测试。

图1 基于机器学习的通用抽取流程

1.2 信息抽取系统的框架设计

基于上述信息抽取流程本文设计的基于机器学习的支持多语言的文本信息抽取系统的整体框架如图2所示。

图2 基于信息抽取系统整体框架

该框架分为两个层次:前台展示层和后台逻辑处理层。前台展示层,主要用在抽取的不同阶段,通过友好的图形用户界面GUI的方式为用户观察和处理数据提供方便,同时也简化了用户的操作流程。后台逻辑处理层主要包括预处理模块和主动学习模块。预处理模块主要用于对录入的文档进行文本符号化、词性标注、分词等操作,每一个步骤都可以根据需要进行个性化定制。主动学习模块包括特征选择的子模块与机器学习分类算法选择子模块两个部分,主要用于根据已标注的文档进行机器学习,之后利用主动学习所训练的抽取模型对未标注的文档进行信息抽取。其中,特征可以从给定的通用特征中选择符合数据样本特点的特征,也可以使用用户自定义的特征;机器学习算法也同样可以根据用户需要进行个性化定制,这样可以方便用户选择不同的特征或者机器学习方法进行模型训练与信息抽取,最终找到抽取效果较优的参数组合。此外,前台展示层和后台逻辑处理层之间是通过规定的接口进行通信的。

该框架的优势主要体现在:①分层的设计增强了系统的灵活性与可扩展性;②模块化设计增强了系统的鲁棒性与可移植能力;③预处理模块的可定制化设计提高了系统的语言移植能力。例如对于中文文档的信息抽取,预处理模块中的分词操作可以指定调用分词效果较好的中科院开发的中文分词工具NLPIR[7];对于英文文档信息抽取可以指定为比较常用的Stanford CoreNLP[8]提供的分词接口。

1.3 抽取过程特征选择

从通用抽取流程和系统整体框架可以看出,信息抽取的关键在于特征生成程序的编写以及机器学习算法的选择。

对于特征的选择,可以采用集成一些通用的特征的方式以供用户进行选择的方法,如“单词或汉字的数目”,“是否在同一句”,实体总数等特征。同时,可以将通用特征集划分为两类类别,并将其定义为稀疏性特征集与聚簇性特征集。如果一个特征被加入稀疏特征集中,那么该特征将被用于构造文本的线性分类器。同样,如果一个特征被加入聚簇性特征集中,那么该特征将被用于构造文本的非线性分类器。

信息抽取用户可以根据需要从通用特征中的选择一个或多个通用特征用于信息抽取系统。当然,用户也使用自定义的特征进行信息抽取。

1.4 抽取过程算法选择

对于机器学习算法,可以选择采用最大熵算法(EM)与支持向量机算法(SVM),也可以选择一些其他开源的机器学习算法,以便对它们的抽取效果与性能作比较。本文为了观察不同算法的抽取效果实现了EM与SVM两种算法。下面本文将以文本分类为实验,以最大熵算法为例构造一个简单的自动文本分类系统,其中实验语料来自谭松波博士的个人主页[9]中提供的中文文本分类语料库。该语料库分为两个层次:一个层次为12个类别,另一个层次为60个类别,其中每个层次都包含文本14 150篇。本实验采用12个类别的单层语料,语料的类别与数据详细信息具体如下表1所示。

表1 实验中使用的单层语料的类别与数目

利用最大熵算法进行文本分类的具体实验步骤如下所示:

(1) 收集数据集:从谭松波博士的网站个人主页将本实验用到的分类语料下载到本地。

(2) 预处理数据集:基于python语言编写一个预处理脚本,该脚本主要用于统计所有文本中的单词,计算每个文本中每个单词的词频,并将其中80%的文作为训练样本集,另外20%作为测试样本集。

(3) 模型构建:笔者基于python语言实现了完整的GIS[10](Generalized Iterative Scaling)算法。之后使用GIS算法在上一步处理好的训练文本上对表征每个特征权重的数组参数向量lamda进行参数训练,其中精度阈值ε设定为0.001,并且在训练样本集上运行GIS算法时对模型参数的最大迭代次数maxLooNum采用不同的取值,以观察迭代次数对算法分类效果的影响。

(4) 模型测试:根据上一步估计的参数向量lamda的值,对预处理的测试样本集进行测试,并计算测试文本中错误分类文本的个数以及错误分类文本率。

(5) 实验完成:整理实验结果,如表2所示。

表2 设置不同最大迭代次数时的文本分类效果

从表2中的实验结果可以看出,最大熵算法的文本分类效果还是可以接受的,且随着迭代次数的增加,错误分类的文本个数以及错误文本率的整体呈递减趋势。从表2还可以看出,最大迭代次数并不是越大越好,也有可能会出现迭代次数增加,而错误分类文本的个数反正增加的特殊情况。如表中当最大迭代次数为20的时的错误分类文本个数反而要比最大迭代次数为30时的错误分类文本个数要小。

2 信息抽取系统的实现

基于上文所设计的抽取框架和机器学习算法,本文基于Python语言实现了一个原型系统。主要包括图形用户界面GUI、预处理模块、主动学习模块。

2.1 图形用户界面GUI的实现

该模块主要将信息抽取过程中的一些操作以图形化界面GUI的方式友好地展示给信息抽取人员,以提高信息抽取人员的操作效率。该模块主要包括实体类型管理、实体事件管理、实体关系管理、抽取文档管理以及标记管理,如图3所示。

图3 抽取系统图形用户界面GUI

实体类型管理默认使用的是Stanford NER[11](Stanford Named Entity Recognizer)中识别的实体类型,在预处理阶段,信息抽取系统会进行命名实体识别操作以对文档进行自动分析与发现,并创建相应的实体类型。

实体事件管理,在预处理阶段信息抽取系统会通过Stanford NER对待抽取文档进行自动分析以发现并创建实体事件,其中记录了实体事件的名称、实体事件所在的文本段以及实体事件所在的开始偏移量与结束偏移量。

实体关系管理,主要用于预定义抽取的目标,即自定义待抽取的实体关系。在原型系统中,在主动学习模块执行之前,需要信息抽取人员在实体关系管理子模块定义一个实体关系,之后按照图形用户界面GUI的提示对待抽取文档进行标记以达到学习的目的。

此外,该系统提供两种方式的数据样本集录入方式:一种是在抽取文档管理模块中将准备好的数据样本进行逐个添加,另一种则是将数据样本以csv文件格式进行整合,之后只需将此csv格式的文件导入系统中即可,其导入格式csv文件的范例如图4所示。

图4 csv文件范例

其中第一行是默认的标题行,从第二行开始是文档行,其中第一个逗号之前的文字为文档在数据库中存储的名称,第一个逗号之后用双引号标注的文字则为文档内容。

标记管理主要用于主动学习模块的模型训练。在创建实体关系并运行主动学习模块之后,系统会以交互式的方式让信息抽取人员以对训练文档以逐个标记的方式进行模型训练。

2.2 预处理模块的实现

在预处理模块,本文采用的是Stanford CoreNLP用于对输入文档进行处理。Stanford CoreNLP是斯坦福大学使用Java语言开发的一套开源自然语言分析工具包,该工具包整合了多种自然语言处理技术,其中包括:词性标注、命名实体识别、句法分析、共指消解、情感分析、引导模式学习等工具。

原型系统的预处理操作:文本符号化和句子分割、文本词形化、词性标注、命名实体识别、指代消解、句法分析以及文本分段都使用Stanford CoreNLP中提供的接口进行处理。由于篇幅限制本文只对Stanford CoreNLP提供的句法分析工具进行简单的说明介绍。

句法分析就是分析出句子的语法结构,得出语法结构树并将其存储在Penn Treebank notation中。本文原型系统通过NLTK Tree object将语法结构树在图形用户界面GUI中展示给信息抽取人员。默认情况下,原型系统采用Stanford CoreNLP工具提供的Stanford Parser对句子进行句法分析。例如,对于英文文本“Join the dark side, we have cookies.”经Stanford Parser解析后得到的语法结构树如图5所示。

图5 Stanford Parser解析后得到的语法结构树

预处理模块虽然默认了许多的步骤,对文本进行一系列的处理,但是该模块中的每一步都可以根据信息抽取用户的需要进行个性化定制,以体现原型系统的可扩展性与可移植性。

下面以mongoDB文档为例,观察其经过预处理后的结果,如表3所示。

表3 mongoDB文档经过预处理阶段后的结果展示

2.3 主动学习模块的实现

该系统提供了两种运行主动学习的模式:高精确度模式和高召回率模式。它们可以相互协调以达到满意的抽取性能。例如可以通过减少召回率来得到较高的精确度;同样也可以通过减少精确度来获得较高的召回率。

另外,在主动学习模块运行之后,原型系统会在图形用户界面上提示用户进行训练样本集的标注工作,同时在后台的命令行界面也为信息抽取人员提供了与用户交互的三个命令:run、refresh以及STOP。其中run命令的作用就是根据系统获得的标注信息重新运行主动学习;refresh的作用则是查看信息抽取人员已经标记了多少个训练样本;STOP的作用就是停止主动学习模块。下面以事先建立的实体关系“funded”为例来查看主动学习模块运行之后的后台命令行的提示情况,如图6所示。

图6 后台命令行的提示情况

本文原型系统默认提供了一些常用的机器学习算法用于主动学习,其中包括随机梯度下降算法、k近邻算法、最大熵算法、支持向量机算法。本文主要使用的最大熵算法以及支持向量机算法。

对于特征的选择,该系统也提供了一些通用的特征,如“实体间距离”、“实体的数量”等。

3 实验结果与分析

3.1 评估指标

MUC[12](Message Understanding Conference)作为信息抽取领域的顶级会议,采用的评价标准被广泛应用,本文也采用其评价标准来对系统性能进行评价。MUC系列会议主要使用以下三个评估标准:精确度PRE(Precision,正确抽取的个数占全部抽取个数的百分比)、召回率REC(Recall正确抽取的个数占全部可能正确抽取个数的百分比)以及F值(前两者的加权平均值)。cn、ln、en分别表示正确抽取的实体关系个数、没有抽取出的实体关系个数和错误抽取的实体关系个数,那么其对应的评估标准的结果为:

精确度:

(1)

召回率:

(2)

F值:

(3)

其中,β是PRE和REC的权重之比。当β等于1时,表示两者同等重要;当β大于1时,表示PRE比REC更重要;当β小于1时,表示REC比PRE更重要。在MUC会议的评估指标上,β的值常被设定为:0.5、1或2,在本文中取β为1。

此外,本文增加了一个时间性能指标用于对信息抽取系统的抽取效率进行评估。时间性能指标主要用于评估信息抽取系统抽取一篇文档平均所需要花费的时间。dn表示信息抽取系统一次性抽取的文档数目,t表示抽取dn篇文档所消耗的时间(以秒为单位),那么平均抽取时间AT(篇/s)的计算公式为:

(4)

3.2 实验内容

本实验在Ubuntu14.04LTS操作系统下,采用上一节所设计并实现的原型系统进行实体关系的信息抽取实验。为了观察和分析原型系统的可移植能力与可扩展性,笔者从美国知名科技新闻聚合网站TechCrunch中、英文版中分别收集了300篇与“funded”领域相关的文档,总共600篇(即,文档分为两类:300篇英文文档和300篇中文文档)。对于其中的每一类文档的240篇用于原型系统的主动学习,剩下的60篇用于原型系统的抽取测试。

为了便于展示本文基于机器学习的支持多语言文本信息抽取系统的抽取效果与语言移植能力,本实验将原型系统分别对中、英文文本在两种模式下运行:基于最大熵算法的机器学习模式、基于支持向量机的机器学习模式,并分别对中、英文测试数据集进行信息抽取。实验的具体步骤如下所示:

(1) 收集实验数据。使用基于python的爬虫框架Scrapy从美国新闻聚合网站TechCrunch中、英文版上分别爬取300篇和funded有关的新闻文章,并存储于本地文件夹中。

(2) 实验数据的分类与格式化处理。使用基于python编写的随机分类脚本将这些文本随机分入两个文件夹中,一个文件夹存入样本集中的80%文本用于对模型进行训练,另一个文件夹存入剩下的20%用于对模型的测试。用事先编写好的格式化脚本分别将训练样本集和测试样本集整合为一个csv格式的文件,其中存储测试样本集的文件名为testSet.csv,存储训练样本集的文件名为trainSet.csv。

(3) 训练数据集导入原型系统。使用以下命令将训练数据导入到原型系统中:

python bin/csv_to_iepy.py trainSet.csv

(4) 运行预处理模块。为了对输入的文档集进行自动分词、词性标注、文本分段等操作,使用以下命令运行预处理模块:

python bin/preprocess.py

(5) 创建待抽取实体关系。在图形用户界面GUI的实体关系管理模块新建待抽取的实体关系,并指明实体关系中左侧实体类型以及右侧实体类型,其中的实体类型从预处理模块产生的类型中选择。本实验中,创建的实体关系名为“funded”,左侧实体类型选择的是ORGANIZATION,右侧实体类型选择的是MONEY。

(6) 运行主动学习模块构造模型。用于如下方法开启主动学习模块:

python bin/iepy_runner.py funded outputFileName

这一步需要进入抽取系统的GUI主页,并按照提示进行手动标注。

(7) 测试数据集导入原型系统。使用以下命令将训练样本集导入到原型系统中:

python bin/csv_to_iepy.py testSet.csv

(8) 运行主动学习或规则抽取对测试数据样本集进行信息抽取。

(9) 将事先准备的240篇中文文本,同样执行上述步骤(2)-步骤(8)中所执行的操作,并且将第(4)步中预处理模块的接口修改为中科院提供的接口,以便对中文文本进行信息抽取。

(10) 实验结果整理与分析。

3.3 实验结果与分析

按照上述实验步骤,并经过对实验结果的适当整理,得到该信息抽取系统在基于最大熵算法的机器学习模式、基于支持向量机的机器学习模式分别对60篇中文档和60篇英文文档测试样本集的信息抽取结果在精确度、召回率和F值这三个指标上的表现,如表4所示。

表4 两种模式在中英文文本精确度、召回率、F值上的比较

对于两种基于机器学习的信息抽取系统的抽取效果在精确度、召回率和F值三个指标上的表现,可以从表4中的实验结果可以看出基于SVM算法的信息抽取方法在三个评估指标上的表现要比基于ME的机器学习算法的抽取效果要好一些。同时两种算法在文本分类中有不错的精确度。

从表5可以看出在时间性能指标上,两种机器学习算法在对中文文本进行信息抽取所需要花费的平均抽取时间要比对英文文本进行信息抽取要多,其原因主要是在对中文文本进行处理时,需要在预处理模块中增加中文分词的任务,而英文文本由于词与词之间存在空格等天然优势,所以不需要对其进行分词处理。

表5 两种模式在中英文文本上时间性能的比较

4 结 语

本文基于对已有信息抽取流程的研究,以及对其中每个阶段可能存在的问题进行分析,设计了一种通用可行的支持多语言的文本信息抽取框架,并基于该框架实现了一个原型系统。

对于原型系统的实验结果可以看出,不管是在精确度、召回率、F值三个指标上,还是在时间性能指标上,对英文文本进行处理的原型系统都可以很好地迁移到了中文文本的处理上,表现出了原型系统较好的可移植能力。另外,在处理中文文本时需要增加英文文本处理所不需要的分词模块,然而由于原型系统的模块化设计与个性化定制,此时只需在预处理模块中添加上中科院提供的分词接口即可,这在一定程度上展现了原型系统较好的语言移植能力与可扩展能力,达到了目的。

[1] Jacobs P S. Text-based intelligent systems: Current research and practice in information extraction and retrieval[M]. London: Psychology Press, 1992.

[2] Alpaydin E. Introduction to machine learning[M]. 2nd ed. Cambridge, MA, USA: The MIT press, 2014.

[3] Bontcheva K, Derczynski L, Funk A, et al. TwitIE: An Open-Source Information Extraction Pipeline for Microblog Text[C]//Proceedings of Recent Advances in Natural Language Processing, 2013: 83-90.

[4] Yao X, Durme B V. Information Extraction over Structured Data: Question Answering with Freebase[C]//Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics, 2014: 956-966.

[5] Rebentrost P, Mohseni M, Lloyd S. Quantum support vector machine for big data classification[J]. Physical Review Letters, 2014, 113(13): 130503.

[6] Wu N. The maximum entropy method[M]. Berlin: Springer, 2011.

[7] Zhou L, Zhang D. NLPIR: A theoretical framework for applying natural language processing to information retrieval[J]. Journal of the American Society for Information Science and Technology, 2003, 54(2): 115-123.

[8] Manning C D, Surdeanu M, Bauer J, et al. The Stanford CoreNLP Natural Language Processing Toolkit[C]//Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics: System Demonstrations, 2014: 55-60.

[9] 谭松波, 王月粉. 中文文本分类语料库-TanCorpV1.0[EB/OL]. http://www.searchforum.org.cn/tansongbo/corpus.htm.

[10] Goodman J. Sequential conditional Generalized Iterative Scaling[C]//Proceedings of the 40thAnnual Meeting on Association for Computational Linguistics, 2002: 9-16.

[11] The Stanford Natural Language Processing Group. Stanford named entity recognizer[OL]. http://nlp.stanford.edu/software/CRF-NER.shtml.

[12] Surhone L M, Tennoe M T, Henssonow S F, et al. Message Understanding Conference[M]. Mountain View, CA, USA: Betascript Publishing, 2010.

[13] 何清, 李宁, 罗文娟, 等. 大数据下的机器学习算法综述[J]. 模式识别与人工智能, 2014, 27(4): 327-336.

[14] 成卫青, 于静, 杨晶, 等. 基于页面分类的Web信息抽取方法研究[J]. 计算机技术与发展, 2013, 23(1): 54-58.

[15] 昝红英, 张腾飞, 林爱英. 基于介词用法的事件信息抽取研究[J]. 计算机工程与设计, 2013, 34(7): 2570-2574.

[16] 孙师尧, 妙全兴. 基于改进SVM和HMM的文本信息抽取算法[J]. 计算机应用与软件, 2015, 32(11): 281-284,292.

[17] 涂眉, 周玉, 宗成庆. 基于最大熵的汉语篇章结构自动分析方法[J]. 北京大学学报(自然科学版), 2014, 50(1): 125-132.

[18] 汪海燕, 黎建辉, 杨风雷. 支持向量机理论及算法研究综述[J]. 计算机应用研究, 2014, 31(5): 1281-1286.

IMPLEMENTATION OF MULTI-LANGUAGE TEXT INFORMATION EXTRACTION SYSTEM BASED ON MACHINE LEARNING

Zeng Jun Zhou Guofu

(StateKeyLaboratoryofSoftwareEngineering,WuhanUniversity,Wuhan430072,Hubei,China)

The method of information extraction based on statistical machine learning is becoming a hot research topic day by day. Although there are some practical frameworks and systems for text information extraction based on machine learning, most of them face weaknesses such as weak interactivity, low scalability and poor language transplanting ability. To solve this problem, a universal and feasible information extraction framework based on multi-language is proposed and implemented, and a prototype system is implemented. The prototype system integrates the maximum entropy and support vector machines, and the two algorithms are used to verify the practicability of the system in both English and Chinese texts.

Statistical machine learning Information extraction Multi-language ME SVM

2016-02-27。曾军,硕士生,主研领域:数据挖掘。周国富,副教授。

TP39

A

10.3969/j.issn.1000-386x.2017.04.016

猜你喜欢
原型预处理文档
KR预处理工艺参数对脱硫剂分散行为的影响
浅谈Matlab与Word文档的应用接口
求解奇异线性系统的右预处理MINRES 方法
有人一声不吭向你扔了个文档
污泥预处理及其在硅酸盐制品中的运用
包裹的一切
《哈姆雷特》的《圣经》叙事原型考证
基于预处理MUSIC算法的分布式阵列DOA估计
Word文档 高效分合有高招
论《西藏隐秘岁月》的原型复现