专利名称:识别文本文档中的有机化学名称的系统和方法
技术领域:
本发明总体上涉及数字图书馆和生命科学文档,尤其涉及用于搜索和分析科学文献,比如期刊和专利,来寻找有机化合物的名称的设备和方法。
背景技术:
无论使用的是何种技术,大多数用于分析和索引文档以进行搜索和信息检索的系统都遵循相同的基本程序。首先,将数据分离成单个的文档,每一个文档被分割为文本标记(text tokens)。这些标记然后被组合为有意义的短语和片断,它们被加以所有以用于检索。一个索引包含用于搜索和文档分析以处理查询、识别相关对象的数据。在建立索引之后,可以向搜索系统提交查询。查询表示用户所希望的信息,用搜索系统所定义的查询语言和语法来表达。搜索系统使用数据库的索引数据和合适的相似性排序算法来处理查询。系统由此返回一个主题相关对象的列表,该列表常常称为“命中列表”。用户然后可以从命中列表中选择相关对象来进行浏览和处理。
在网络环境中,文本搜索系统的部件可以分布在多台计算机上。网络环境包括两台或者多台由局域网或者广域网(例如以太网、令牌网、电话网和因特网)连接起来的计算机。用户用用户计算机上的客户应用程序访问超媒体对象数据库,客户程序与在网络上的任意计算机(例如客户机)或者另外的计算机(例如一台或者多台服务器)上的搜索服务器(例如超媒体对象数据库搜索系统)通信。为了处理查询,搜索服务器仅仅需要访问数据库索引,该索引可能位于搜索服务器的同一台计算机上或者位于网络上的另一台计算机上。数据库中的实际对象可以位于网络上的任何计算机上。
Web(万维网)环境,比如因特网上的万维网(WWW),是一种网络环境,其中使用Web服务器和浏览器。在对集合中所有可用的文档加以收集和索引之后,就可以如上所述使用索引来搜索集合中的文档。同样,索引的位置可能与对象、客户机甚至搜索服务器无关。作为搜索索引产生的结果,命中列表一般指出了集合中的相关文档的位置和标题,用户然后可以直接用用户的Web浏览器调出这些文档。
作为文档索引的一部分,也可以对文档进行文本挖掘(textmining)。文本挖掘涉及识别文档的各部分,比如段落和句子,然后是分析每一个被识别的文档部分(例如每一个句子)。句子分析涉及标记每一个单词的词类,然后将每一个句子解析为句子的组成部分(句子成分)。句子解析的结果是句子的部分(成分)和子部分(子成分)的解析树。这种信息一般被存储在用于检索的表格中。这些表格常常是有数据库索引与之关联的数据库表格。
然后可以利用这样的解析和数据存储来得出文档的总体含义和文档各部分之间的关系。
本发明尤其关心的是在文档包含有机化学名称的上下文中的上述句子解析操作。有机化学名称可能由非常长的单词、标点和空格的串组成,这些单词、标点和空格需要组合起来,以便被识别为单一名词短语,而不是被识别为一系列未知的单词。
有机化学术语可能非常长、复杂,且可能由被空格分开的若干单词构成。理想状态下,一个有机化学术语应当被识别为单个名词短语,以便技术文献中的句子解析能够有效率地进行。例如,诸如chloroacetic acid、4-allyl-2,6-dimethylphenol、5-aminoalkyl-pyrazolo[4,3-D]-pyrimidine和4-nitrobenzylchloroformate这样的术语,每一个都提出了专用术语识别方面的挑战。现有技术中对这种识别问题的解决方法是提供、维护和访问一个巨大的化学词典,以便识别在文档文本中出现的有机化学术语。
另外,尽管存在用于这样的化学术语的关于拼写、空格和标点的专门规则,但是这些规则并不总是被严格地遵守,尤其是在专利文献中。例子有很多,例如化学名称被不正确的空格或者连字符分割开,这样,它们必须被重新组合起来成为一个完整的术语以被正确地识别。
Wilbur,et.al.(W.J Wilbur,G.F.Hazard,G.Divita,J.G.Mork,A.R.Aronson and A.C.Browne,″Analysis of biomedical text forchemical namesa comparison of three methods,″in Proc.AMIASymp.1999,Washington,1999)描述了在生物医学文本中发现化学名称的三种算法。第一种是将化学名称的结构分析为一组化学词素,然后将这些词素组合为化学名称。另两种方法是基于重叠n字母组对贝叶斯分类器(Bayesian classifier)的变型。但是,对这些方法的测试是用编辑得很好的文本进行的,因此并不清楚这些方法面对错误的表现如何。另外,Wilbur等人尤其注意到了他们只是识别了在MeSH本体中找到的化学名称,他们的算法对于包含标点字符的名称效果不是很好。
M.Narayanaswamy,B.Ravikumar and K.Vijay-Shaker,″ABiological Named Entity Recognizer,″Proceedings of the PacificSymposium on Biocomputing,January,2003公开了一种识别可能是通常的生物学缩写的一部分的化学短语的一个小的集合的系统,但是并没有将他们的方法扩展到本发明所关心的一般情况。
在本发明之前,并没有一种令人满意的文档搜索和文本挖掘设备或者方法能够处理包含化学名称比如有机化学名称的文档。
发明内容
根据本申请教导的目前最为优选的实施例,能够克服上述以及其它的问题,并实现其它一些有益效果。
本发明提供了一种用于识别技术术语的方法、系统和计算机程序。在优选实施例中,所述技术术语是化学名称,在最为优选的实施例中,所述技术术语是有机化学名称。
本发明的一个方面提供了一种从文本文档中识别有机化学术语的系统和方法。在许多情况下,这意味着将多单词实体组合为单个逻辑实体。文本文档既可以是具有良好的编辑质量(遵循了表达这样的实体的规则),也可以是有缺陷的,本发明的系统和方法可以应用于这两种类型的文档。另外,只使用通用化学前缀和通用化学后缀这两个小的词典。一个可选的词典是“非用词”(stop words)词典,可以用来排除错误的化学片断。
根据本发明的系统和方法采用一系列规则表达、规则以及所述小词典来识别化学名称片断,并将它们组合为有机化学名称。本发明的使用在辅助解析器识别多单词化学名称方面是很有价值的,不然,这样的化学名称就可能被识别为被标点所隔开的小的片断,而这样的小的片断其实是化学名称的一部分。当在解析之前进行识别时,可以使解析的结果更为准确。
本发明的一方面提供了一种处理文档的方法,该方法包括将文档文本分割为多个句子;对于每一个句子,将相应的相关词类分配给单词,其中,该分配操作包括应用多个规则表达、规则和多个词典来识别化学名称片断,将识别的化学名称片断组合为完整的化学名称,并对该完整的化学名称分配一个词类;以及至少部分地根据所分配的词类,将所述句子解析为其组成部分。
本发明的另一方面提供了一种处理文本文档的系统,包括第一单元,用于将文档文本分割为多个句子;第二单元,用于对每一个句子分配相应的相关词类给单词,所述第二单元包括多个子单元,用于应用多个规则表达、规则和多个词典以识别化学名称片断,将所识别的化学名称片断组合为完整的化学名称,并对完整的化学名称分配一个词类;以及第三单元,用于至少部分地根据所分配的词类将句子解析为多个组成部分。
本发明的又一方面提供了一种计算机程序产品,用于以计算机可读的形式存储一组计算机程序指令,所述指令用于指令至少一台计算机来处理文本文档。该组计算机程序指令包括向在所述文档中找到的单词分配相应的相关词类的指令,其中,所述用于分配词类的指令包括进行下述操作的指令应用多个规则表达、规则和多个词典来识别有机化学名称片断,将识别的化学名称片断组合为完整的有机化学名称,并对该完整的有机化学名称分配一个词类。所述规则表达包括多个模式,其中每一种单独的模式由字符、数字和标点中的至少一个组成。例如标点可以包括圆括号、方括号、连字符、冒号和分号中的至少一个,字符可以包括大写的C、O、R、N和H中的至少一个,还可以包括小写的xy、ene、ine、yl、ane和oic中的至少一个的串。
结合附图阅读下文对优选实施例的详细说明,可以更加清楚本发明的前述以及其它方面。附图中图1到6分别是逻辑流程图,其中图1由图1A到图1G构成,用于图解本发明的识别算法的总体流程;图2图示了匹配圆括号的检测;图3图解了将单词组合为较大的短语的方法;图4图解了如何排除单词;图5图解了如何从串中去除训练标点;图6由图6A和图6B构成,图示了片断如何被组合为较大的短语;图7是适合实施本发明的方法的计算机系统的一个举例的实施例的框图。
具体实施例方式
当从文本文档比如专利和技术文章中挖掘信息时,正确地识别冗长的多单词有机化学术语,以便它们能够被组合为单个逻辑实体,是很重要的。这会改善包括它们的句子的解析,从而提高文本挖掘软件从这样的文献中提取其内涵的能力。本发明就是针对这种需要,提供了一种用于将这样的术语组合为逻辑实体的系统、方法和计算机程序产品,而不需要提供巨大的化学词典。
发明人已经认识到,能使用小的规则表达集合、规则集合和两个通用化学术语词典,来识别多数有机化学名称。所述两个词典比使用现有技术的方法所需的巨大的化学名称词典要小得多。另外,还找到了一个小的规则集合,来用根据语法规则识别的串来描述通用化学单词的组合。
在目前的优选实施例中,将名称识别算法应用于有机化学名称,因为多数无机化学名称可以用元素名、盐名和前缀的小词典轻易地识别。但是,应当注意到,本发明的使用并不局限于仅仅识别有机化学名称,也不局限于仅仅识别化学名称。
本发明的优选的方法的特征在于包括两个基本步骤识别由空格隔开的候选化学片断,将这些片断组合为较大的实体。为了确定一个标记(token)是否是化学片断,其语法(syntax)和上下文都要被考虑在内。另外,本发明的方法、系统和计算机程序产品还处理没有遵循这种实体的标准书写规则来书写的化学片断,或者包含了错误的空格和字符的化学片断,所述错误的空格或者字符例如是因为使用光学字符识别(OCR)软件而导致的,OCR会产生由换行而导致的空格。
识别有机化学片断下面说明用于识别有机化学名称的算法。这些算法的使用使得文档中的句子解析更为准确,从而能够更为准确地得出名词短语及其之间的关系。
见图7,假设系统700包括一个标准标记化器702,用于将输入的文档文本704基于空格分割为标记706。检查标记706是否与一组定义的模式匹配。另外,在相邻标记的上下文中检查所述标记706,以确定标记706是否是化学片断的一部分。更为具体地,系统700包括一个标记处理单元705,用于对在文档中找到的单词分配相应的相关词类。根据本发明构建的该标记处理单元705包括子单元707、709和711,用于应用多个规则表达和规则以及多个词典,来识别有机化学名称片断(子单元707),将识别的有机化学名称片断组合为完整的有机化学名称(子单元708),并对完整的有机化学名称分配一个词类,最好是名词(子单元711)。系统700的前述词典包括一个前缀词典708(包含用于相关技术术语的通用前缀列表)、一个后缀词典710(包含用于相关技术术语的通用后缀的列表)和一个可选的负面词典(negative dictionary)712。如果使用的话,负面词典712包含可能出现在输入的文档文本704中,但是并不构成技术术语的有意义的部分的单词(例如,不构成有机化合物的一部分)。基本上,负面词典712包括可以忽略的单词的一个列表。在负面词典712中的单词的例子可以有″saline″和″formula″。负面词典712由示于图4的单词排除例程使用。应当理解,词典708、710和712的内容可以随着时间的推移、系统700的使用而手动或者自动地变化和发展。所述多个规则表达(模式)和规则可以被存储在数据库713中,可以随着时间的推移、系统700的使用而手动或者自动地变化和发展。标记处理单元705的输出可以构成另一个单元714的输入,该单元714至少部分地根据所分配的词类(包括分配给根据本发明识别的有机化学名称的名词词类)将句子解析为其组成部分(句子成分)。
算法所使用的模式下面描述一组字符模式(规则表达)1)方括号模式(BracketPattern)以方括号开始和结尾,并在方括号之间包括至少一个字符的模式;2)圆括号模式(ParenthesisPattern)包含至少两个开圆括号的模式;3)连字符模式1(HyphenPattern1)包含至少两个连字符以及第一个连字符之前的至少一个数字的模式;4)连字符模式2(HyphenPattern2)包含至少两个连字符以及第一个和第二个连字符之间的至少一个数字的模式;5)连字符模式3(HyphenPattern3)包含至少两个连字符以及在最后一个连字符之后的至少一个数字的模式;6)连字符模式4(HyphenPattern4)包含一个连字符和一个逗号,连字符在逗号之前的模式;
7)连字符模式5(HyphenPattern5)包含一个逗号和一个连字符,逗号在连字符之前的模式;8)连字符模式6(HyphenPattern6)这样的模式以一个或者多个单数字后接撇号、逗号的组开始,接下来是由单个数字后接撇号构成的一个组,接下来是任意字符;9)单字母模式(SingleLetterPattern)要么是大写字母C要么是大写字母R的模式;10)逗号模式(CommaPattern)包含多个逗号的模式;11)逗号撇号模式(CommaApostrophePattern)以一个或者多个字母开始,后接一个或者多个数字,后接逗号或者撇号,以一个字母结束的模式;12)数字模式1(NumberPattern1)具有由逗号隔开的三组数字的模式;13)数字模式2(NumberPattern2)是单个数字或者双数字的模式;14)标点模式1(PunctPattern1)包含一个加号后接正斜杠(\)的模式;15)标点模式2(PunctPattern2)以零个或者更多大写字母开始,后接两个连字符,然后是零个或者更多个大写字母,最后以零个或者更多个字符结束的模式;16)标点模式3(PunctPattern3)包含一个冒号的模式;17)标点模式4(PunctPattern4)以一个或者多个数字开始、以一个连字符结束的模式;18)标点模式5(PunctPattern5)具有一个或者两个双连字符的模式;19)标点模式6(PunctPattern6)以一个连字符开始,后接任意数量的字符,然后是至少一个数字,并以零个或者多个字符结尾的模式;20)标点模式7(PunctPattern7)包含至少一个开圆括号的模式;
21)标点模式8(PunctPattern8)以零个或者多个大写字母、小写字母、数字、连字符和逗号开始,后接一个闭圆括号,以零个或者多个大写字母、小写字母、数字、连字符和逗号结束的模式;22)标点模式9(PunctPattern9)以零个或者多个大写字母开式,后接一个开圆括号,后接零个或者多个大写字母,零个或者多个数字,一个连字符,零个或者多个大写字母,以及零个或者多个数字的模式;23)标点模式10(PunctPattern10)以零个或者多个小写模式(lower case patterns)开始,后接零个或者多个连字符,后接零个或者多个小写字母,一个闭方括号,零个或者多个连字符,以及至少另一个字符的模式;24)标点模式11(PunctPattern11)以一个开圆括号开始,后接一个或者多个数字,一个闭圆括号,一个方括号,一个连字符,零个或者多个闭方括号,一个开圆括号,一个或者多个数字以及一个闭圆括号的模式;25)标点模式12(PunctPattern12)以零个或者多个小写字母开始,后接一个开圆括号,一个或者多个小写字母,一个闭圆括号,以零个或者多个小写字母结束的模式;26)标点模式13(PunctPattern13)以一个开方括号后接一个或者多个数字结束的模式;27)标点模式14(PunctPattern14)包含一个分号的模式;28)字母模式1(LetterPattern1)以一个大写R开始,后接一个或者两个数字,后接零个或者多个小写或者大写字母的模式;29)字母模式2(LetterPattern2)全部由小写字母构成的模式;30)字母模式3(LetterPattern3)以一个大写C开始,后接一个开圆括号,后接零个或者多个字符的模式;31)字母模式4(LetterPattern4)以零个或者多个开圆括号开始,后接大写C、O、R、N、H中的任一个,后接零个或者多个开圆括号,后接零个或者多个C、O、R、N、H,后接零个或者多个闭圆括号,后接一个单数字的模式;32)字母模式5(LetterPattern5)以零个或者多个开圆括号开始,后接大写字母C,后接一个或者两个数字,后接零个或者多个闭圆括号,后接一个或者多个由一个连字符和一个小写字母构成的组合的模式;33)字母模式6(LetterPattern6)以零个或者多个大写字母开始,后接字母CH,后接零个或者多个数字,后接零个或者多个大写字母,后接零个或者多个字母Ph,后接零个或者多个大写字母的模式;34)字母模式7(LetterPattern7)以一个开圆括号后接一个或者多个小写字母开始的模式;35)数字模式1(NumberPattern1)以一个开圆括号开始,后接零个或者多个数字,以一个闭圆括号结束的模式;36)数字模式2(NumberPattern2)以一个或者多个数字后接一个逗号结束的模式;37)数字模式3(NumberPattern3)以一个数字开始的模式;38)数字模式4(NumberPattern4)以一个数字结束的模式;39)空格模式(SpacePattern)由单个空格隔开三组字符的模式;40)数字字母模式(NumberLetterPattern)以一个单数字开始,后接一个撇号和一个连字符,以一个或者多个小写字母结束的模式;41)数字连字符模式(NumberHyphenPattern)以一个连字符开始,后接一个数字,一个句号和一个或者多个数字的模式;42)年模式(YearPattern)以1或者2开始,后接9或者0,后接任意两个数字的模式;43)列表模式(ListPattern)以一个开圆括号开始,后接一个或者多个由一个或者多个数字以及一个逗号构成的组,后接一个数字和一个闭圆括号的模式;44)N连字符模式(NHyphenPattern)以大写N开始,后接一个连字符,以任意字符集合结束的模式;以及45)后缀模式(SuffixPattern)以以下序列之一结束的模式xy,ene,ine,yl,ane,oic。
如下参照图1和图3所述,本发明的算法应用前述模式。
首先由所述标记化器702对文档进行分析,将字符流分解为标记。因此,一个标记被定义为一个没有空格的字符串(string)。这样的标记化器702例如可以是JavaTM语言的一部分。假设文档被表示为标记的矢量(向量,vector),该向量构成标记处理单元705的输入(INPUT)。
见图1,在目前的优选方法中,输入在框100中被表示为一个标记矢量(向量)“tokens”。该向量的索引为i,初始值为0,numTokens是该向量的大小(SIZE OF VECTOR)。在框101中,判断是否对所有标记都进行了检查。如果是,方法前进到框181,到图6所示的片断组合方法,也称为Combiner(Vector frag)例程;否则在框2中,判断在当前标记之后是否还有另一个标记。如果系统700正在检查的是最后一个标记,则方法前进到框111。否则,在框103中,将串WORD设置为第i个标记(tokens(i)),将firstI设置为当前的i。在框104中,调用一个combineWords函数(其详细示于图3中)。主要地,combineWords函数检查当前标记和随后的标记是否具有匹配的括号。该combineWords函数返回一个串输出(OUTPUT),在框105中对该串进行检测。如果输出的串为空,则方法前进到框108。否则将word设置为该输出串,在框106中将i增一。在框107中,进行一个检测,判断在当前标记(当前标记由i的值定义)之后是否有另一个标记。如果还有一个随后的标记,则在框108中再次调用combineWords函数,检查匹配的方括号,否则方法前进到框111。如果在框108中调用的combineWords函数的输出不是空串(在框109中检测),则在框110中将word设置为combineWords函数的输出,在前进到框111之前将i增一。如果combineWords函数的输出是一个空串,则该方法立即前进到框111。在框111中,判断word是否以开圆括号或者方括号开始。如果不是,则方法前进到框114。否则在框112中检查word的长度(WORDLENGTH)。如果长度为3,则方法前进到由连接字符A表示的循环的末尾。否则对比word与模式39(也就是,在上面定义的空格模式由单个空格隔开三组字符的模式)。如果word与模式39匹配,则方法前进到由连接字符A表示的标记循环的底部。如果不匹配,则将串txt设置为cleanUp例程的输出(该例程的输入为word)。该cleanUp例程(示于图5中)主要剥离结束标点。在框115中,将一个变量annot设置为假。在框116中,判断该串txt是否在前缀词典708中,以及在当前标记之后是否另有一个标记。如果检测结果为假,则方法前进到框120。否则将串txt1作为cleanUp例程的输出,其中i+1标记是输入。在框108中,判断txt1是否在后缀词典710中。如果不是,方法前进到框120。如果在后缀词典710中找到了txt1,则在框119中,将串word设置为当前的word、一个空格和第i+1个标记的拼接。另外,将i增一,将变量annot设置为真。该方法通过连接点G前进到框139。
假设在后缀词典710中没有找到txt1,则在框120中,判断所述串txt是否与模式12(也就是数字模式1具有由逗号隔开的三组数字的模式)匹配。如果匹配,则该方法通过连接点A前进到框180,否则在框121中判断该文本是否以一个连字符结束。如果不是,则方法通过连接点C前进到框127。否则在框122中将串txt1设置为txt的头n-1个字符,其中n是串txt的长度。在框123中,判断txt1是否与模式29(字母模式2全由小写字母构成的模式)匹配。如果匹配,则方法通过连接点C前进到框127。否则在框124中判断txt是否与模式16匹配。同样,如果与该模式匹配,则方法前进到框127,否则判断该串txt1是否在前缀词典中。如果不在,方法前进到框127。如果在前缀词典708中找到了txt1,则方法前进到框126,将annot设为真后前进到框127。
在框127中,判断所述串word是否与模式9(单字母模式或者是大写字母C或者是大写字母R的模式)匹配。如果不匹配,方法前进到框132。否则判断是否还有标记。如果不是,方法前进到框132。如果还有标记,则将下一个标记token(i+1)输入到cleanUp方法中,在框129中将该方法的输出设置为txt1。
在框130中,判断txt1是否与模式13(数字模式2或者是单数字或者是双数字的模式)匹配。如果不匹配,方法通过连接点G前进到框139。否则在框131中将串word设置为word与随后的标记的拼接,将变量annot设为真,方法前进到框139。在框132中,如果有的话,从串txt中去除最外侧的圆括号或者方括号,然后前进到框133。在框133中,将所述串与下述模式匹配1,2,3,4,5,6,7,8,14,15,19,22,23,28,30,31,32,33,40和45。如果串txt与上述模式中的任一模式匹配,就将变量annot设置为真,方法前进到框139;如果txt与上述模式的任何一个都不匹配,则在框135判断它是否与模式20(标点模式7包含至少一个开圆括号的模式)匹配而不与模式24、25或者35中的任一个匹配,并且是否有随后的标记。如果这些检测结果都是否定的,则程序通过连接点G前进到框139,否则在框136中将txt1设置为随后的标记(tokeni+1)。然后在框137中检查串txt1是否与模式21匹配但是不与模式24、25或者35匹配。如果检测结果是否定的,则方法前进到框139,如果框137中的检测为真,则在框138中,串word被设置为word和串txt1的拼接,将变量annot设为真,然后前进到框139。如果框139中的检测是否定的(变量annot为假),则方法前进到框180中的循环末端。否则在框140中判断是否还有标记。如果没有其它标记了,则方法前进到框145,在这里,局部变量inLoop被设置为真,并从框145通过连接点N到框146。如果还有至少一个标记,则在框141中判断word是否以一个连字符结束。如果该判断为否定的,则方法前进到框145,否则在框142中判断头n-1个字符(n是word的长度)是否与模式29(字母模式2全由小写字母构成的模式)匹配。如果判断是肯定的,方法前进到框145,否则在框144中将串word设置为word和随后的标记的拼接,将i增一,然后前进到框140。
在框145中,将变量inLoop设置为真,然后前进到框146,在这里检测inLoop的真假(也可以从框150和154进入框146)。如果inLoop为假,方法通过连接点O前进到框156。如果inLoop为真,则在框147中判断是否还有标记。如果方法已经检查了最后一个标记,则控制通过连接点Q转到框167。否则,在框148中判断word是否以分号“;”或者逗号“,”结尾。在word具有这样的结尾的情况下,方法前进到框156。否则串txt被设置为cleanUp的输出,这里,在框149中,下一个标记作为输入。在下一个框150中,判断所述串是否以一个连字符开始。在不是的情况下,方法前进到框153。否则判断(框151)该串txt是否长于一个字符。如果是,则在框152中从txt去除该连字符(开头的字符)。如果txt只有该连字符,则方法前进到框153,在这里,判断txt的长度是否大于零,并且txt是否在后缀词典710中。如果判断是肯定的,则在框154中,串word被设置为word、一个空格和第i+1个标记的拼接,然后方法前进到框146,重新检查变量inLoop。如果在步骤153中检查的结果是否定的,则在框155中将变量inLoop设置为假,方法前进到框146。在框156中,判断是否还有至少两个标记有待检查。如果该判断结果为假,则方法前进到框162。否则在框157中串txt被设置为第i+1个标记,串txt1被设置为第i+2个标记。在框158中,判断word是否与模式38(数字模式4以一个数字结尾的模式)匹配。如果不匹配,则方法前进到框162。否则在框159判断串txt是不是“,”。如果不是则方法前进到框162,如果是则在框160检测txt1是否与模式37(即数字模式3以一个数字开始的模式)匹配。如果不匹配,方法前进到框162。如果在框158、159和160进行的检测的结果都是真,则在框161中串word被设置为word、txt和txt1的拼接,在这里i还被增二,然后前进到框162。
在框162中,判断是否还有标记剩下。如果没有,则方法通过连接点Q前进到框167。如果有剩下的标记,则方法在框163中将txt赋予下一个标记,并在框164中判断word是否匹配模式36(数字模式2以一个或者多个数字后接一个逗号结束的模式)。如果不匹配,则方法前进到框167,否则前进到框165,在这里判断txt是否匹配模式37(数字模式3)。如果模式37不与txt匹配,则方法前进到框167。如果模式匹配,则在框166中串word被设置为word和txt的拼接,在这里i还被增一,然后前进到框167。
在框167中,将变量inLoop重置为真,然后前进到框168,在这里判断变量firstI是否大于零并且变量inLoop是否为真。如果该判断为肯定的,则在框169中串txt被设置为firstI标记之前的标记,然后在框170中判断txt是否在前缀词典708中。如果框168中的检查的结果是否定的,则方法前进到框175。如果框170中的检查结果是肯定的,则在框171中,串word被设置为txt、空格和word的拼接,在这里firstI也被增一。然后方法前进到框168。如果框170中的检测的结果为否定的,则在框172中判断串txt是否与模式37匹配,并且与模式36或者26匹配,也就是判断下述条件是否成立txt=以一个数字开始、以一个或者多个数字后接一个逗号结束的模式,或者以一个开方括号后接一个或者多个数字结束的模式。
如果框172中的检测的结果为肯定的,则在框174中串word被设置为txt和word的拼接,并且变量firstI被增一。如果框172中的检测的结果为否定的,则在框173中变量inLoop被设置为假,方法退回框168。
当方法从框168到达框175时(变量firstI不大于零并且/或者变量inLoop为假),执行一系列检测。框175中的第一个检测是word是否匹配模式17(标点模式4以一个或者多个数字开始并以一个连字符结束的模式),如果不匹配,则在框176中检查word是否匹配模式18(标点模式5具有一个或者两个双连字符的模式)。如果这些检查中的任何一个为肯定的结果,则方法前进到框180。否则,在框177中,判断word长度(word length)是否大于零。如果不是,则方法前进到框180。否则在框178检查word是否在负面词典712中。如果在负面词典712中找到了word,则方法前进到框180,否则在框179中将word添加到一个化学片断向量(cFrag)。应当注意,向量是本发明的结构的优选实施例,但是也可以应用其它结构来保存识别的化学片断。该方法然后前进到框180,在这里,i被增一,然后前进到框101中循环的开头。
图3图解了用在图1中的combineWords例程。该方法用四个串作为输入s,t,p0和pE。串s和t是字符串,p0和pE可以被解释为匹配圆括号(方括号)。输入图示在框300中。在框301中,调用一个例程checkMatchingParens(在图2中描述)来检查串s是否具有匹配的开、闭圆括号(方括号)。在302检查结果match。如果match为真,则该方法在框309退出,返回一个空串。如果match为假,则在框304中检查t是否匹配模式20(标点模式7包含至少一个开圆括号的模式)。如果匹配,则该方法在框309中退出,返回空串。否则,在框305中,调用checkMatchingParens,以串s、一个空格和t的拼接作为第一输入。在框306中检查输出match。如果match为假,则在框309中该方法返回一个空串。如果match为真,则在框307中该例程将串s、空格和串t拼接起来,在框308中返回该新串。
图2图示了用在上面结合图3所述的combineWords函数中的checkMatchingParens函数的优选实施例。该函数checkMatchingParens的输入是三个串(s,p0和pe),其中第一串可以被解释为字符串,第二和第三串可以被解释为一组匹配的圆括号。当该串只有一个开圆括号而没有闭圆括号时,该方法返回假,否则返回真。在框201中,变量match被设为真。在框202中,判断输入的串s是否以p0开始。如果不是,则在框204,函数返回match的值(假)。否则,在框203判断串s是否包含串pE。如果不包含,则在框204返回match(真)。否则,在框205中将match设为假,并在框204返回该值。
图4图示了单词排除方法的一个优选实施例。输入是串word,如框400中所示。在框401中,判断word是否在负面词典712中。如果可以在负面词典找到该串,则在框403中返回假。如果word不在负面词典712中,则在框302返回真。
图5图示了前面几次提到的cleanUp例程的一个优选实施例。该方法以一个串为输入返回一个从中剥离了某些标点的串。在框500中给出输入的串s。在框501中,从s中将任何前导或者结尾的白空格(空白或者零字符)修剪掉。在框502,判断串s是否以一个″,″、一个″;″或者一个″.″结尾。如果检查的结果是肯定的,则在框503中将该串s的最后一个字符去除,并在框504中将该串s返回。否则该例程在框504中返回该串s(去除其中的白空格)。
图6图示了Combiner(Vector frag)例程的一个优选实施例。该方法用OffsetTokens(偏移标记)的向量frag作为输入(例如化学片断),并判断相邻的片断是否能够被组合起来以形成更长(更复杂)的化学片断。一个OffsetToken是一个包含一个文本串、一个表示该文本在文档中的开始位置的整数以及一个表示该文本在文档中的结束位置的整数的对象。在框601中,所有变量i被初始化为-1,在框602中i被增一。在框603中,串combo被设置为输入的相邻frag的第i个条目的文本。在框604中,变量currenti被设置为i。在框605中,判断当前片断是否是最后一个片断。如果是,则在框622中将串t设置为空串,然后前进到框607。否则在框606中将t设置为下一个片断(frag(i+1))的文本部分,然后前进到框607。在框607中判断串combo是否以作为遇到句子(句子部分)边界的指示的一个″;″、一个″,″或者一个″.″结尾。如果存在标点,则方法前进到框608,在这里从串combo剥离标点,然后前进到框609。在框609将combo串添加到向量c,这表明找到了最长的串。方法前进到框610,在这里判断当前索引变量currenti是否与索引变量i相同。如果不相同,则在框613中索引变量i被减一,然后前进到框611。如果i与currenti的值相同,则方法前进到框611,在这里判断是否有剩余的标记。如果没有剩余的标记,则在框612返回向量c,否则方法前进到框602。如果框607中的检查结果是否定的,则方法在框614中判断串combo是否以一个连字符结尾。如果该检查结果是否定的,则在框621中将串combo设置为combo、一个空格和串t的拼接,然后前进到框616。如果框614中的检查结果为肯定的,则该方法规定在框621中串combo被设置为combo和t的拼接,然后前进到框616。在框616中,检查是否i为零。这是用于开始循环的特殊处理。在i是零的情况下,在框617中将i增二,否则在框620中将i增一。在对i适当地增值后,方法前进到框618,在这里判断是否有剩余的片断。如果没有剩余的片断,则该方法在框612退出,返回向量c。否则,在框619中,串t被设置为frag的第i个元素的文本部分,然后通过连接点B前进到框602。
前面的说明以举例的非限制性的例子提供了发明人为实现本发明在目前能够想到的最佳的方法和设备的完整的说明。但是,对于本领域的普通技术人员来说,在结合附图和权利要求阅读了前述说明之后,很容易做出各种修改和变动。例如,可以使用比上面所述更多或者更少的模式,并且可以利用各种规则来管理这些模式的使用,就如图1和图3的逻辑流程图所反映的那样。但是,对本发明的教导的所有这样的以及类似的修改仍然会落在本发明的范围内。
还应理解,系统700可以在网络环境中实现,系统700的部件可以分布在多台计算机中。网络环境可以包括两台或者多台由局域网或者广域网(例如以太网、令牌网、电话网和因特网)连接起来的计算机,用户可以用用户计算机上的客户应用程序访问超媒体或者其它对象数据库。客户程序可以与在网络上的客户机或者另外的计算机(例如一台或者多台服务器)上的搜索服务器(例如超媒体对象数据库搜索系统)通信。为了处理来自用户的查询,搜索服务器可以访问数据库索引,该索引可以位于搜索服务器的同一台计算机上或者位于网络上的另一台计算机上。数据库中的文档对象可以位于网络上的任何计算机上。在本发明中,示于图7的某些功能单元和模块,比如标记处理单元705以及标记处理单元705的部件,可以位于两台或者多台计算机上,并可以用一个或者多个数据通信网络连接起来。所述标记化器702和标记处理电路705,以及/或者标记处理单元705和句子解析器714之间的一个或者多个连接也可以在数据通信网络,包括局域网和广域网比如因特网上实现。标记化器702的输入和来自句子解析器714的输出也可以用一个或者多个网络实现。用户可以通过网络比如因特网查询系统700,系统700可以构成基于网络的例如基于万维网的服务的一部分,所述服务例如是数据挖掘类型的服务。
另外,尽管这里所描述的方法和设备有一定的特定性,取决于用户的需要,本发明的实现可以有更多或者更少的特定性。
再者,本发明的部分特征的使用也可以有有益效果,而不需要对应地使用其它特征。因此,前述说明只能被视为对本发明的原理的说明性描述,并非对本发明的限制。
权利要求
1.一种处理文档的方法,包括将文档文本分割为多个句子;对于每一个句子,将相应的相关词类分配给单词,其中,该分配操作包括应用多个规则表达、规则和多个词典来识别化学名称片断,将识别的化学名称片断组合为完整的化学名称,并对该完整的化学名称分配一个词类;以及至少部分地根据所分配的词类,将所述句子解析为其组成部分。
2.如权利要求1所述的方法,其中,对所述完整的化学名称分配名词短语词类。
3.如权利要求1所述的方法,其中,所述多个词典包括通用化学前缀词典和通用化学后缀词典。
4.如权利要求1所述的方法,其中,所述多个词典包括一个非用词词典,以排除错误的化学名称片断。
5.如权利要求1所述的方法,还包括用一个非用词列表过滤所识别的化学名称片断,以排除错误的化学名称片断。
6.如权利要求1所述的方法,其中,还使用通用的化学单词结尾来进一步识别化学名称片断。
7.如权利要求1所述的方法,其中,所述规则表达和规则的应用导致根据上下文在化学名称片断之间保留或者移除标点字符。
8.如权利要求1所述的方法,其中,所述规则表达包括多个模式,其中的每一个单独的模式由字符、数字和标点中的至少一个构成。
9.如权利要求8所述的方法,其中,所述标点包括圆括号、方括号、连字符、冒号和分号中的至少一个。
10.如权利要求8所述的方法,其中,所述字符包括大写的C、O、R、N和H中的至少一个。
11.如权利要求8所述的方法,其中,所述字符包括小写的xy、ene、ine、yl、ane和oic中的至少一个的字符串。
12.如权利要求1所述的方法,包括一个初始化步骤,用于将文档标记化以提供一个标记序列。
13.一种处理文本文档的系统,包括第一单元,用于将文档文本分割为多个句子;第二单元,用于对每一个句子分配相应的相关词类给单词,所述第二单元包括多个子单元,用于应用多个规则表达、规则和多个词典以识别化学名称片断,将所识别的化学名称片断组合为完整的化学名称,并对完整的化学名称分配一个词类;以及第三单元,用于至少部分地根据所分配的词类将句子解析为多个组成部分。
14.如权利要求13所述的系统,其中,对所述完整的化学名称分配名词短语词类。
15.如权利要求13所述的系统,其中,所述多个词典包括通用化学前缀词典和通用化学后缀词典。
16.如权利要求13所述的系统,其中,所述多个词典包括一个非用词词典,以排除错误的化学名称片断。
17.如权利要求13所述的系统,所述第二单元还包括一个子单元,用于用一个非用词列表过滤所识别的化学名称片断,以排除错误的化学名称片断。
18.如权利要求13所述的系统,其中,还使用通用的化学单词结尾来进一步识别化学名称片断。
19.如权利要求13所述的系统,其中,所述规则表达和规则的应用导致根据上下文在化学名称片断之间保留或者移除标点字符。
20.如权利要求13所述的系统,其中,所述规则表达包括多个模式,其中的每一个单独的模式由字符、数字和标点中的至少一个构成。
21.如权利要求20所述的系统,其中,所述标点包括圆括号、方括号、连字符、冒号和分号中的至少一个。
22.如权利要求20所述的系统,其中,所述字符包括大写的C、O、R、N和H中的至少一个。
23.如权利要求20所述的系统,其中,所述字符包括小写的xy、ene、ine、yl、ane和oic中的至少一个的字符串。
24.如权利要求13所述的系统,包括一个标记化器,用于将文档标记化以提供一个标记序列。
25.一种计算机程序产品,用于以计算机可读的形式存储一组计算机程序指令,所述指令用于指令至少一台计算机来处理文本文档,包括向在所述文档中找到的单词分配相应的相关词类的指令,其中,所述用于分配词类的指令包括进行下述操作的指令应用多个规则表达、规则和多个词典来识别有机化学名称片断,将识别的化学名称片断组合为完整的有机化学名称,并对该完整的有机化学名称分配一个词类。
26.如权利要求25所述的计算机程序产品,其中,对所述完整的有机化学名称分配名词短语词类。
27.如权利要求25所述的计算机程序产品,其中,所述多个词典包括通用化学前缀词典和通用化学后缀词典。
28.如权利要求25所述的计算机程序产品,其中,所述多个词典包括一个非用词词典,以排除错误的化学名称片断。
29.如权利要求25所述的计算机程序产品,还包括用一个非用词列表过滤所识别的有机化学名称片断以排除错误的有机化学名称片断的指令。
30.如权利要求25所述的计算机程序产品,其中,还使用通用的化学单词结尾来进一步识别化学名称片断。
31.如权利要求25所述的计算机程序产品,其中,所述规则表达和规则的应用导致根据上下文在有机化学名称片断之间保留或者移除标点字符。
32.如权利要求25所述的计算机程序产品,其中,所述规则表达包括多个模式,其中的每一个单独的模式由字符、数字和标点中的至少一个构成。
33.如权利要求32所述的计算机程序产品,其中,所述标点包括圆括号、方括号、连字符、冒号和分号中的至少一个,所述字符包括大写的C、O、R、N和H中的至少一个,还包括包括小写的xy、ene、ine、yl、ane和oic中的至少一个的字符串。
34.如权利要求25所述的计算机程序产品,其中,所述分配词类的指令对从文档文本得到的标记序列进行操作。
35.一种系统,包括多台计算机,其中至少两台计算机通过数据通信网络连接起来,所述系统包括第一单元,用于将文档文本分割为多个句子;第二单元,用于对每一个句子分配相应的相关词类给单词,所述第二单元包括多个子单元,用于应用多个规则表达、规则和多个词典以识别化学名称片断,将所识别的化学名称片断组合为完整的化学名称, 并对完整的化学名称分配一个词类;以及第三单元,用于至少部分地根据所分配的词类将句子解析为多个组成部分。
36.如权利要求35所述的系统,其中,对所述完整的化学名称分配名词短语词类。
37.如权利要求35所述的系统,其中,系统的用户通过数据通信网络访问该系统。
全文摘要
本发明涉及识别文本文档中的有机化学名称的系统和方法,具体提供了识别技术术语的方法、系统和计算机程序产品。技术术语可以是化学名称,最好是有机化学名称。所述程序产品以计算机可读形式存储指令计算机处理文本文档的指令,包括向在文档中找到的单词分配词类的指令,后者包括进行下述操作的指令应用规则表达、规则和多典来识别有机化学名称片断,将识别的片断组合为完整的有机化学名称,并对其分配词类。规则表达包括多个各由字符、数字和标点中的至少一个组成的模式。标点可以包括至少一个圆括号、方括号、连字符、冒号和分号,字符可以包括至少一个大写C、O、R、N和H,还可包括小写的xy、ene、ine、yl、ane和oic中的至少一个的串。
文档编号G06F17/27GK1601520SQ20041008240
公开日2005年3月30日 申请日期2004年9月17日 优先权日2003年9月24日
发明者安娜·洛萨·科登, 詹姆斯·威廉·库珀 申请人:国际商业机器公司