正则表达式及其在信息抽取中的应用

时间:2022-03-15 10:49:08

正则表达式及其在信息抽取中的应用

摘要:正则表达式是对一类字符串共性描述的规则,提供了一种从字符集合中搜寻特定字符串的机制。信息抽取的主要功能是从文本中抽取出特定的事实信息(factual information)。该文利用正则表示式快速匹配文本的特点,以抽取电子文档的主要信息为例,介绍了正则表达式理论以及在信息抽取中的应用。

关键词:正则表达式;信息抽取

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009)15-3867-02

Regular Expression and Application in Information Extraction

ZHANG Jing, ZHANG Yan

(Department of Teaching Administration,Tangshan teachers college, Hebei Tangshan 063000,China)

Abstract: Regular expression is the rules of describing strings with common property. It provides a method how to search especial strings from the set of strings. The main function of information extraction is to extract factual information from text document. This paper introduced the theory of regular expression, and take the web document and law document for example, demonstrated how to use regular expression to extract factual information from text document.

Key words:regular expression; information extraction

1 引言

因特网已经成为人们获取知识的不可或缺的手段,而因特网信息的表现形式大多为半结构化的文本,降低了信息的利用率,经过十几年的发展,形成了以搜索引擎为代表的信息检索技术,初步解决了信息检索问题。人们信息抽取技术就是将获取的信息根据预先定义的模板,从文本抽取特定的信息,形成结构化的数据,帮助对信息内容进行分析和整理,因此信息抽取技术成为网络信息处理中的新的研究热点。

正则表达式是对一类字符串共性描述的规则,提供了一种从字符集合中搜寻特定字符串的机制。本文以抽取电子文档的主要信息为例,介绍了正则表达式及其在信息抽取中的应用。

2 正则表达式

正则表达式由美国数学家Stephen Kleene于1956年提出,主要用于描述正则集代数。随后人们发现可以将此表达式应用于实用Ken Thompson的计算搜索算法的一些早期研究。正则表达式的第一个实用应用程序就是Unix中的qed编辑器。

正则表达式的形式为/匹配模式/,其中位于”/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入”/”定界符之间即可。为了能够更加灵活的定制模式内容,正则表达式提供了专门的“元字符”。

所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

较为常用的元字符包括:”+”;”*”,以及”?”。其它主要元字符的使用方式如下:\s用于匹配单个空格符,包括tab键和换行符;\S用于匹配除单个空格符之外的所有字符;\d用于匹配从0到9的数字;\w用于匹配字母,数字或下划线字符;\W用于匹配所有于\w不匹配的字符。

在正则表达式中,可以用方括号括起若干个字符来表示一个元字符。除元字符外,正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组间必须要出现多少词才能满足匹配,因而可以适应不知道要匹配多少字符时的不确定情况。限定符的使用说明如下:

1){n} n是一个非负整数。匹配确定的n次。例如,” o{2}”不能匹配”Bob”中的”o”,但是能匹配”food”中的两个o。

2){n,} n是一个非负整数。至少匹配n次。例如,” o{2}”不能匹配”Bob”中的”o”,但是能匹配”fooooooood”中的所有o。”0{1,}”等价于”o+”,”o{0,}”则等价于”o*”。

3){n,m} m和n均是非负整数,其中n

”o{1,3}”将匹配“fooooooood”中的前三个o。 “o{0,1}”等价于“o?”

正则表达式的优点是简洁,结构化,它提供了一种从字符集合着那个搜寻特定字符串的机制[2]。它可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入等目标对象进行比较,根据目标对象中是否包含匹配模式,执行相应的程序[3]。正则表达式有以下几个主要功能,用于测试字符串的某个模式是否有效。如测试一个字符串是否符合E-mail的模式。替换文本功能,用于在文档中使用匹配模式来标识特定文字,然后将其删除或进行替换。提取子串功能,用于根据模式匹配,从字符串中提取一个子字符串。

3 信息抽取

随着计算机的普及以及互联网(WWW)的迅猛发展,大量的信息以电子文档的形式出现在人们面前。为了应对信息爆炸带来的严重挑战,迫切需要一些自动化的工具帮助人们在海量信息源中迅速找到真正需要的信息。信息抽取(Information Extraction)研究正是在这种背景下产生的。

信息抽取系统的主要功能是从文本中抽取出特定的事实信息(factual information)。比如,从新闻报道中抽取出恐怖事件的详细情况:时间、地点、作案者、受害人、袭击目标、使用的武器等;从经济新闻中抽取出公司新产品的情况:公司名、产品名、时间、产品性能等;从病人的医疗记录中抽取出症状、诊断记录、检验结果、处方等等。通常,被抽取出来的信息以结构化的形式描述,可以直接存入数据库中,供用户查询以及进一步分析利用。

信息抽取处理的文本可分为三类:非结构化文本、半结构化文本和结构化文档。信息抽取最初目的是从非结构化的普通文本中抽取有限的主要信息。非结构化文本的信息抽取系统通常采用自然语言处理的方法,其抽取规则主要是通过建立在词和词类间句法关系的基础上,需要结合机器学习等人工智能方面的技术对大量的文本进行训练和学习。结构化文本是根据某种约定格式生成的文本。从这样的文本中抽取特定的信息只需按照约定的格式指定规则即可。半结构化文本是一种介于非结构化和结构化文本之间的文本形式,如WEB网页。另,如文本格式的法律条约,专利文献等,看似为非结构化的,但其内容结构都遵循有一定的模式结构,因此也可以看作半结构化的。

4 正则表达式在信息抽取中的应用

对于信息抽取的任务,通常需要抽取的信息只是某一领域中数量有限的事件或关系。本文分别以web网页和文本文档为数据源,介绍了利用正则表达式,对其进行信息抽取。

4.1 正则表达式在web新闻网页中的信息抽取

信息网页是具有很强开发价值的一类网页,它具有时效性强,信息量大、结构稳定、更新快、需求广泛、实用价值高等特点。其中各大门户网站或新闻网站用来提供用户检索新闻之用的新闻页面最具代表性。这类新闻网页包含符合检索条件的若干条新闻记录,可以用来指引用户查阅新闻全文。这类新闻网页其实就是各大网站给自己站内的所有新闻网页编的“索引”,能起到很好的说明和指示作用。

4.2 正则表达式在文本文档中的信息抽取

电子文档除上述web网页格式外,还有一些信息是以文本格式存储的。为充分利用现有资源,提高效率,将非结构化的文本格式转化成半结构化的格式是必要的。下面本文介绍了如何将法律条文这种非结构化的文件,利用正则表达式进行信息抽取,转化成半结构化的形式。

对于法律条约,虽然是以非结构化的格式存储的,但其内容本身是有结构的。如每个条约包括序言和正文两个组成部分;正文包含若干个章或编;每章包括若干个节;每节包括若干个条;每条包含若干个款等。根据以上特点,我们可以使用正则表达式匹配条约正文中的特征文字,抽取相应的信息,生成具有序言、章、节、条、款等层次结构信息和其它属性信息的法律条约。 如抽取法律条约中的每一行内容,其相应的正则表达式为:”^([\w\W]*?)$” 其中,^表示一行的开始;()表示括号内的内容分组;[]表示里面的多个内容中取一个;\w表示字母(a~z,A~Z)以外的字符;*表示后面接0个或多个字符;?表示后面接0个或一个字符;*?的结合表示后面可以接其它字符(不包含换行符);$表示行结束符。获取章的标题和内容,并对每一章进行节的解析;若不存在,直接进行节的解析,则相关的正则表达式为:“^s\*(第\s*[^条节部分]{1,3}\s*[章编])([\w\W]*?)$”。其中\s表示空白字符(空格、tab 等);[^]除括号内的符号外的其它符号(如[^条节]表示条、节的其它符号);{1,3}表示前面的符号至少一个,至多三个。

5 结论

正则表达式是对一类字符串共性描述的规则,提供了一种从字符集合中搜寻特定字符串的机制。本文介绍了正则表达式的理论,并利用其快速匹配文本的特点,抽取Web文档和法律条文两种格式电子文档中的主要信息,进行信息抽取。通过以上实例,可以看出,对于半结构化文本和结构化文档,正则表达式能够很好的进行信息抽取。而对于非结构化的文档,还有待进一步研究。

参考文献:

[1] Liger F, Queen C M, Wilton P. C#字符串和正则表达式参考手册[M].刘乐亭,译.北京:清华大学出版社,2003.

[2] The Single Unix Specification,Version2[OL].Http:///onlinepubs/.

[3] 吕晓波.正则表达式使用详解[OL]./article/8/8254.shtm.

[4] Harry R.Lweis, Christos H Papadimitriou.计算理论基础[M]. 张立昂, 刘田,译. 北京:清华大学出版社,2000.

[5] 金成植,金英.编译程序设计原理[M].北京:高等教育出版社,2007.

上一篇:利用计算机网络技术建立有效的教学管理模式 下一篇:数据挖掘在网络管理中的应用