CN103052951B - 字符串生成方法和系统 - Google Patents

字符串生成方法和系统 Download PDF

Info

Publication number
CN103052951B
CN103052951B CN201180037655.0A CN201180037655A CN103052951B CN 103052951 B CN103052951 B CN 103052951B CN 201180037655 A CN201180037655 A CN 201180037655A CN 103052951 B CN103052951 B CN 103052951B
Authority
CN
China
Prior art keywords
character string
orderly
frequency
search
context
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180037655.0A
Other languages
English (en)
Other versions
CN103052951A (zh
Inventor
海野裕也
坪井祐太
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103052951A publication Critical patent/CN103052951A/zh
Application granted granted Critical
Publication of CN103052951B publication Critical patent/CN103052951B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了一种技术,通过该技术可以适当地概括并且在有限范围内显示用于搜索的结果的外围上下文。对于字符串C={c1,...,cn}的所有上下文,字符串s所覆盖的表面积由以s为前缀的c的数目和s的长度的乘积来限定。另外,对于所有上下文的集合,在具有最多K个字符且长度小于或等于L的字符串集合中,在未选择属于另一字符串的部分字符串的条件下获得使覆盖的总表面积最大的字符串集合。根据本发明,可通过对从所有上下文的单词查找树创建的频率有序上下文树的动态编程来有效解决这一问题。根据本发明的另一发现,当利用动态编程获得最大表面时,通过估计可通过搜索获得的表面面积的上限,可以从搜索中修剪大量项,由此可以加速处理。另外,通过创建频率有序后缀树,其中按照出现频率排列用于文本的后缀树的子节点,可以加速搜索并且获得最大表面积。

Description

字符串生成方法和系统
技术领域
本发明主要涉及一种用于搜索自然语言文本中的字符串的技术,并且具体地涉及一种用于显示搜索结果的技术。
背景技术
在搜索文本中的字符串时,在命中周围的上下文字符串提供有用信息。例如,当搜索发现文档中的单词“button”时,可以基于字符串“isclicked”和“ispressed”中的哪个字符串跟随“button”来校验文档中的措词的一致性。也可以校验是否给予特定英文专有名词定冠词。与命中周围的上下文字符串有关的信息在其它搜索(比如搭配(collocation)和人名搜索)中也是重要的。
已知一种对搜索项周围的字符串排序和显示的常规技术KWIC(上下文中的关键字)。
例如,在使用KWIC来搜索“ボタン”(button,按钮)时显示的所有上下文字符串可以如下:
ボタンが大きㄑて...
ボタンが赤い...
ボタンという表...
ボタンに書いてあ...
ボタンをクリツクしたら...
ボタンをクリツクして下...
ボタンをクリツクしよう...
ボタンをクリツクできな...
ボタンをクリツクできま...
ボタンをクリツク...
ボタンを押したら...
ボタンを押しては...
ボタンを押せませ...
ボタンを押そうと...
然而KWIC的缺点在于如果发现太多命中则不能一眼看出整个趋势。
在MasatoYamamoto、KumikoTanaka及HiroshiNakagawa的“KIWI:AMultilingualUsageConsultationToolbasedonInternetSearching”,AnnualMeetingofTheAssociationforNaturalLanguageProcessing,2005和公布的第2004-164133号未审查的专利申请中公开的技术提出了这样一种扩展KWIC方法,该方法实现了对待显示的上下文字符串的重要性水平的测量。然而,该扩展方法仍然具有以下缺点,即不能选择多个上下文字符串的最优组合并且会显示大量相似文本片段。
[引用列表]
[专利文献]
[专利文献1]公布的第2004-164133号未审查的专利申请
[非专利文献]
[非专利文献1]MasatoYamamoto,KumikoTanaka,HiroshiNakagawa,“KIWI:AMultilingualUsageConsultationToolbasedonInternetSearching”,AnnualMeetingofTheAssociationforNaturalLanguageProcessing,2005
发明内容
[本发明要解决的问题]
因此,本发明的目的是提供一种用于使得能够将在搜索结果周围的上下文字符串在有限范围中适当地聚集在一起并且显示这些上下文字符串的技术。
[用于解决问题的手段]
根据本发明,首先,在上下文字符串C的整个集合{c1,...,cn}中,字符串s所覆盖的面积由以s作为前缀的元素c的数目与s的长度的乘积来限定。
本发明是这样一种技术,其用于在长度小于或者等于L、最大数目为K的字符串的集合中,在不应选择另一字符串的子字符串这一约束下,确定作为一个整体而覆盖上下文字符串的整个集合中的最大面积的字符串。根据本发明的一个方面,可以使用对频率有序上下文树(頻度順文胍木)的动态编程来高效地解决问题,该频率有序上下文树是整个上下文的单词查找树。
根据本发明的另一方面,当通过动态编程来确定最大面积时,估计可以通过搜索来获得的上限面积以实现搜索的实质修剪,由此加速过程。
另外,按照出现频率顺序排列文档的后缀树中的子节点以构建频率有序后缀树,由此实现更快搜索和最大面积的确定。
上文描述的过程不仅可以自然地应用于在后的上下文而且可以应用于在前的上下文。另外,该过程适用于分析任何语言(比如英文)的数据和具有时间的时间串,因为未使用单词分离。
[本发明的优点]
本发明提供了一种用于压缩和显示搜索结果以使得在有限区域中提供尽可能多的信息的技术。此外,可以通过使用动态编程来加速该技术所需的计算。
附图说明
图1是用于实现本发明的硬件配置的框图;
图2是用于实现本发明的功能配置的框图;
图3图示了用于构建频率有序后缀树的过程的流程图;
图4是图示了示例性的频率有序后缀树和示例性的频率有序上下文树的图;
图5是图示了用于搜索频率有序后缀树数据的过程的图;
图6图示了搜索和用于搜索最优上下文的整个过程的流程图;
图7图示了使用动态编程的搜索过程的流程图;
图8图示了使用具有修剪的动态编程的搜索过程的流程图;
图9图示了使用具有修剪的动态编程的搜索过程的流程图;
图10图示了用于重建最大面积节点集合的过程的流程图;
图11是图示了KWIC的不可逆压缩显示的示例的图;并且
图12是图示了根据典型常规技术的上下文显示和根据本发明一个实施方式的技术的上下文显示之间的比较的图。
具体实施方式
将关于附图描述本发明的实施方式。除非另有明示,相似标号贯穿附图表示相似对象。应当理解,下文是对本发明示例实施方式的描述而并非旨在将本发明局限于关于实施方式描述的细节。
参照图1,图示了用于实施根据本发明的一个实施方式的系统配置和处理的计算机硬件的框图。在图1中,CPU104、主存储器(RAM)106、硬盘驱动器(HDD)108、键盘110、鼠标112和显示器114连接到系统总线102上。CPU104优选地基于32位或者64位架构,并且可以是来自InterCorportation(因特尔公司)的Pentium(商标)4、Core(商标)2、Duo或者Xeon(商标)或者来自AdvancedMicroDevices,Inc.(AMD公司)的Athlon(商标)。主存储器106优选地具有2GB或者更大的容量。硬盘驱动器108优选地具有320GB或者更大的容量,以便可以存储用于搜索的大量文本数据和频率有序后缀树数据。
虽然未具体描绘,但是操作系统预先存储于硬盘驱动器108中。操作系统可以是与CPU104兼容的任何操作系统,比如来自MicrosoftCorportation(微软公司)的Linux(商标)、Windows(商标)7、WindowsXP(商标)或者Windows(商标)2000或者来自AppleComputer,Inc.(苹果公司)的MacOS(商标)。
进一步存储于硬盘驱动器108中的是:待搜索的文本数据;频率有序后缀树生成模块,其根据文本数据生成频率有序后缀树数据;频率有序后缀树生成模块所生成的频率有序后缀树数据;字符串搜索模块,其基于用户指定的关键字,使用本发明的技术来发现上下文字符串并且以压缩显示形式输出字符串;以及GUI模块,用于在显示器114上显示从字符串搜索模块输出的字符串。后文将参照图2中的功能框图进一步具体描述这些数据和模块。
键盘110和鼠标112用于启动从硬盘驱动器108加载到主存储器106中并且在显示器114上显示的操作系统或者程序(未描绘),并且用于输入待搜索的字符。
显示器114优选地例如是具有任何分辨率的液晶显示器,比如XGA(1024×768分辨率)或者UXGA(1600×1200分辨率)。
将参照图2中的功能框图描述用于本发明的处理的功能单元。文本文件202是存储于硬盘驱动器108中的块文件,并且优选地包含自然语言文本数据。
频率有序后缀树构建模块204读出文本文件202并且在硬盘驱动器108中将其存储为频率有序后缀树数据206。后文将参照图3中的流程图进一步具体描述由频率有序后缀树构建模块204执行的过程。
字符串搜索模块208包括与作为本发明的主题的处理有关的功能。字符串搜索模块208基于用户输入的关键字搜索上下文字符串,并且基于上下文字符串计算和提供压缩的显示字符串。后文将参照图6和后续图中的流程图进一步具体描述由字符串搜索模块208执行的过程。
GUI模块210具有向字符串搜索模块208提供用户使用键盘110和鼠标112来输入的字符串的功能以及在显示器114上显示从字符串搜索模块208输出的上下文字符串的功能。
可以采用现有的编程语言,比如C、C++、C#或者Java(商标),来编写频率有序后缀树构建模块204、字符串搜索模块208和GUI模块210。GUI模块210优选地被编程为调用由操作系统提供的API函数,以读取用户输入的字符串或者在显示器114上显示输出的上下文字符串。
将参照图3中的流程图描述频率有序后缀树构建模块204所执行的用于生成和输出频率有序后缀树数据的过程。应当理解,该过程落入常规技术的范围内并且未构成本发明的特征。
频率有序后缀树是针对文档中的所有后缀构造的单词查找树。所有后缀是文档中的每个位置处的字符串及每个位置之后的字符串的集合。因而,长度为n的文档具有n个后缀。按照叶子总数的降序对字典树的每个节点的子节点进行排序。通过按字母顺序而不是按照叶子总数对节点排序来生成常规后缀树。频率有序后缀树的大小是O(n),O(n)与后缀树的大小相同并且最多为2n个节点。
频率有序后缀树构建模块204在图3的步骤302读取文本文件202并且在步骤304构建后缀数组。可以例如使用在GeNong、SenZhang和WaiHongChan的“TwoEfficientAlgorithmsforLinearSuffixArrayconstruction”,IEEETransactionsonComputers,2008中描述的技术来执行该过程。
在步骤306,频率有序后缀树构建模块204计算最大前缀长度。例如在以下文献中描述的技术可以用于该过程:ToruKasai、GunhoLee、HirokiArimura、SetsuoArikawa以及KunsooPark的“Linear-TimeLongest-Common-PrefixComputationinSuffixArraysandItsApplications”,InProceedingsof12thAnnualSymposiumonCombinatorialPatternMatching,pp.181-192,2001。
在步骤308,频率有序后缀树构建模块204将按后序的第一节点分配给n。例如在ToruKasai、GunhoLee、HirokiArimura、SetsuoArikaway以及KunsooPark的“Linear-TimeLongest-Common-PrefixComputationinSuffixArraysandItsApplications”,InProceedingsof12thAnnualSymposiumonCombinatorialPatternMatching,pp.181-192,2001中描述后缀数组中的后序遍历。
在步骤310,频率有序后缀树构建模块204确定n是否为按后序的最后一个节点;如果是这样,则频率有序后缀树构建模块204结束该过程。
否则,频率有序后缀树构建模块204继续步骤312,在步骤312中,频率有序后缀树构建模块204按照频率顺序对n的子节点排序。在步骤314,频率有序后缀树构建模块204向文件输出n的子节点,该文件作为频率有序后缀树数据206存储于硬盘驱动器108中。
在步骤316,以n旁边的节点来代替n,然后该过程返回到在步骤310的确定。
图4(a)图示了这样构建的示例性频率有序后缀树的树结构。在图4中,比如“ボ”和“タ”的字符是频率有序后缀树的节点,并且在每个节点上方出现的数字指示出现次数。具体在图4中用标号402标注的区域代表用于“ボタン”的频率有序上下文树。一旦为待搜索的给定文本文件构建了频率有序后缀树并且在硬盘驱动器108中存储了该频率有序后缀树,除非改变文本文件,否则频率有序后缀树可以任何次数重用于搜索而无需重新构建。
图4(b)图示了示例性的频率有序上下文树。通过用特定关键字搜索频率有序后缀树而在主存储器或者硬盘驱动器108上动态生成频率有序上下文树。对以这一方式动态生成的频率有序上下文树执行后文将描述的本发明的动态编程。
除了由于未按字母顺序排列子节点而使得对频率有序后缀树的搜索需要为线性搜索之外,可以用与对后缀树的搜索相似的方式执行对频率有序后缀树的搜索。这里,在数据结构中依次排列子节点,从而可以通过以与查询长度成比例的次数进行随机访问来完成搜索。以在搜索结束时发现的节点为根的子树将是频率有序上下文树。
图5图示了用于搜索作为图3中的过程的结果而构建的频率有序后缀树数据206的过程。该过程优选地实施为search(),search()是作为字符串搜索模块208的子例程的函数之一。
在图5中的函数“search”的流程图中,s表示查询字符串。在步骤502,用根节点(ROOT)代替n。在步骤504,设置p=0。在步骤506,关于是否p=|s|进行确定,其中|s|是s的长度。如果p=|s|,则函数“search”返回n、然后结束。
如果p不等于|s|,则该过程继续步骤508,其中关于是否n=null(空)进行确定。如果n=null,则函数“search”返回n、然后结束。
如果n不为null,则该过程继续步骤510,在步骤510中执行c=get_char(n)。这里,get_char(n)返回节点n的字符。
在步骤512,关于是否s[p]=c进行确定。这里,s[p]是字符串s中的第p个字符。如果s[p]=c,则在步骤514递增p,使得p=p+1,并且在步骤516按照n=chd(n),以chd(n)来代替n,chd(n)是n的第一子节点。然后,该过程返回到步骤506。
如果在步骤512中s[p]不等于c,则在步骤518按照n=sib(n),以n的下一兄弟节点sib(n)来代替n。然后,该过程返回到步骤508。在执行search(s)之后,在主存储器106或者硬盘驱动器108上构建频率有序后缀树的以返回值n为根的子树,以作为如图4(b)所示的频率有序上下文树。
图6图示了由字符串搜索模块208执行的搜索和用于搜索最优上下文的整个过程的流程图。
字符串搜索模块208调用图5的流程图中所示的函数“search(s)”并且在步骤602向n返回结果。这里,s是用户通过GUI模块210输入的查询字符串。
字符串搜索模块208在步骤604确定n是否为null,并且如果是这样则在步骤606输出关于尚未发现命中的指示,然后结束该过程。字符串搜索模块208通过向GUI模块210提供消息以允许GUI模块210在显示器114上显示该消息来做到这一点。
如果字符串搜索模块208在步骤604确定n不为null,则字符串搜索模块208在步骤608执行使用动态编程来执行搜索过程。在这一实施方式中,字符串搜索模块208可以具有后文将关于图7中的流程图描述的动态编程的函数f(n,k)和/或后文将关于图9中的流程图描述的具有修剪的动态编程的函数g(n,K,0)作为一个或者多个子例程。这里,K是所选择的字符串的最大数目。在这一步骤中,在步骤602对由search(s)构建的频率有序上下文树应用动态编程。
涉及到修剪过程的函数g(n,K,0)由于具有修剪的过程而比函数f(n,k)更适合于大型频率有序上下文树的搜索。因而,如果频率有序上下文树大于预定大小,则字符串搜索模块208可以使用g(n,K,0);否则字符串搜索模块208可以使用f(n,k)。
在步骤608执行f(n,k)和g(n,K,0)之一之后,字符串搜索模块208在步骤610使用函数r以重建针对(n,K)返回最大值的节点。后文将参照图10中的流程图具体描述函数r的过程。
一旦已经以这一方式获得与节点对应的字符串,字符串搜索模块208便在步骤612向GUI模块210提供字符串以允许GUI模块210在显示器114上显示字符串。
下文将描述本发明的动态编程的过程。在描述该过程之前,将先限定本发明中的术语“面积”和面积最大化。
这里假设在具有最多K行和L个字符的显示区域中显示上下文本符串的压缩。令C={c1,...,cn}作为n个上下文字符串的集合,并且令S={s1,...,sm}作为m个字符串的集合。这里m≤K、len(s)≤L并且len(s)是字符串s的长度。
还假设集合S中的给定的字符串不是另一字符串的前缀。做出该假设以便防止相似子串(比如“を”、“を使う”和“を使うとき”)出现。
因此,其中S覆盖C的面积A(S,C)由以下等式限定:
[表达式1]
A ( S , C ) = Σ s ∈ S CP ( s , C ) * len ( s )
这里,CP(s,C)返回C中其前缀为字符串s的元素数目,并且len(s)返回s的长度。这里将获得的是如下S,该S针对给定的C最大化该面积、即,argmaxsA(S,C)。
然而,通常存在用于S的大量候选对象。因此,动态编程用来在本发明中高效地计算S。
在上文给定的限定下,将参照图7的流程图描述f(n,k)的过程。这里,f(n,k)是如下函数,该函数返回可以在从节点n及其子节点和兄弟节点之中选择最大数目为k的节点时获得的最大面积。
对于变量a,在步骤702设置a=0。在步骤704关于是否n=null进行确定。如果n=null,则函数f()返回a,然后结束。
如果n不为null,则该过程继续步骤706,其中关于是否已经针对(n,k)完成该过程进行确定。如果完成,则函数f()在步骤708返回在针对(n,k)的先前过程中获得的值,然后结束。
如果尚未执行针对(n,k)的过程,则通过ss=f(sib(n),k-1)递归地调用f(),并且在步骤710以返回值代替ss。这里,sib(n)是n的下一兄弟节点。
在步骤712,以通过a=s(n)+ss计算出的值来代替a。这里,s(n)是上文限定的由节点n覆盖的面积。在步骤712中的计算结果由*A表示。
在步骤714,设置c=0,然后在将c递增1之时重复从步骤716至714的序列,直至在步骤716确定c>k。
具体而言,在步骤718,以通过cs=f(chd(n),c)计算出的值来代替cs,其中chd(n)是节点n的第一子节点。
在步骤720,以通过ss=f(sib(n),k-c)计算出的值来代替ss。
在步骤722,以通过a=max(a,cs+ss)计算出的值来代替a。在步骤722中的计算结果由*B表示。
在步骤724,c被递增为c=c+1。然后,该过程返回到在步骤716的确定。重复循环直至在步骤716为c>k,然后在步骤726假设针对(n,k)的过程完成。函数f()返回a,然后结束。
将参照图8和图9的流程图描述具有修剪的动态编程的函数g(n,k,m)的过程。关于图7描述的函数f搜索提供最大值的组合。函数g在进行中的搜索中提供最大值,并且如果发现即使继续该过程的其余步骤仍然不能达到最大值,则函数g可以中断该过程。为此,估计真实最大值的上限,并且当在进行中的搜索中未发现上限超过最大值时,则中止搜索。为了高效修剪,需要尽可能早地发现真实最大值,并且需要高效地计算与真实最大值尽可能接近的上限值。
优选地,应当按照升序为用于函数的c值定值,因为按照经验,当c较小时可能提供最佳值。
上限u(n,k)可以是返回大于或等于真实最大值f(n,k)的值的任何函数。例如,可以使用探试法,在该探试法中,设置当节点的k个兄弟节点的长度(包括该节点在内)已经达到最大长度时的值或者在k、k+1、...时计算出的无论哪个最小的上限作为上限。这里可以确定是否已经达到真实最大值的上限,因为子节点是按照出现频率的顺序排列的。另外,可以实现高效率,因为计算复杂性不依赖于命中数目。
基于这些假设,配置具有修剪的动态编程的函数g(n,k,m)的过程。
在步骤802,针对变量a设置a=0。在步骤804,关于是否n=null进行确定。如果n=null,则函数g()返回a,然后结束。
在图8中,如果n不为null,则该过程继续步骤806,其中关于是否已经针对(n,k)执行该过程进行确定。如果已经针对(n,k)执行该过程,则在先前过程中针对(n,k)获得的值被用作a,并且函数g()在步骤808返回a,然后结束。
另一方面,如果尚未针对(n,k)执行该过程,则在步骤812关于是否u(n,k)≤m进行确定。如果是这样,则在步骤810设置upper(n,k)=u(n,k)。然后,函数g()返回a并且结束。这里,upper(n,k)是关于图7描述的函数f(n,k)的上限并且是二维数组,在该二维数组中,每个元素由系统初始化成假设为∞的值。此外,u(n,k)是适当函数,其中u(n,k)≥f(n,k),后文将参照图9的流程图描述该函数的例子。如果在步骤812确定u(n,k)大于m,则ss=g(sib(n),k-1,m-s(n))递归地调用g(),并且在步骤814用它的返回值代替ss。这里,如前文描述的那样,sib(n)是n的下一兄弟节点,并且s(n)是由节点n覆盖的面积。
在步骤816,计算a=max(m,s(n)+ss),并且以计算出的值代替a。该值被暂时存储为*A。
在步骤818,设置c=0。然后,重复从步骤820至832的序列直至c超过k(c>k)。
具体而言,在步骤822,以通过su=u(sib(n),k-c)计算出的值代替su。在步骤824,cs=g(chd(n),c,a-su)递归地调用g(f),并且以计算出的值代替cs。
在步骤826,关于是否cs≤a-su进行确定。如果不是,则该过程继续步骤828,其中以通过ss=g(sib(b),k-c,a-cs)计算出的值代替ss。在步骤830,以通过a=max(a,cs+ss)计算出的值代替a。该值被暂时存储为*B。然后,在步骤832将c递增为c=c+1,然后该过程返回到步骤820。
如果在步骤826确定cs≤a-su,则该过程直接继续步骤832,其中将c递增为c=c+1,然后该过程返回到步骤820。
如果在步骤820确定c>k,则在步骤834关于是否a≤m进行确定。如果是这样,则在步骤836设置upper[n,k]=m,然后函数g()返回a并且结束。
如果在步骤834确定a≤m,则假设估计(n,k)并且在步骤840设置upper[n,k]=a。然后,函数g()返回a并且结束。
将参照图9的流程图描述从函数g()调用的函数u(n,k)的过程。在步骤902,在步骤902设置变量v=0,在步骤904设置变量m=n,并且在步骤906设置变量i=1。
在步骤908关于是否i>k进行确定。如果不是,则在步骤910以通过v=v+count(m)*L计算出的值代替v。这里,L是最大字符串长度,并且count(m)是m的出现次数。然后在步骤912中按照m=sib(m)将m替换为下一兄弟节点。然后在步骤914递增i为i=i+1,并且该过程返回到步骤908。
如果在步骤908确定i>k,则该过程继续步骤916,其中以k’代替k,然后在步骤918关于是否k′>K进行确定。这里,K是选择的字符串的最大数目。
如果在步骤918确定k′不大于K,则在步骤920以通过v=min(v,upper[n,k′])计算出的值代替v。然后,递增k’为k′=k′+1,并且该过程返回到步骤918。
因此重复步骤920和步骤922,并且当在步骤918确定k′>K时,函数u()返回v并且结束。
函数u(n,k)是返回大于或等于函数f(n,k)的上限的值的函数,即条件u(n,k)≥f(n,k)总是成立。无论何时满足条件,本发明的算法都正常地工作。值u(n,k)-f(n,k)越小,修剪就越高效地工作。也就是说,只要u的值满足条件,u的值越小越好。修剪在u的值等于真实最大值f(n,k)时最有效。
upper[n,k]保持先前计算的上限。upper[n,k]的初始值如上文描述的那样为∞,这意味着条件upper[n,k]≥f(n,k)总是成立。也就是说,使用上限来设计u。
由于k是所选择的行数,所以f(n,k)的值随着k的增加而增加。因而,如果k<k′,则f(n,k)<f(n,k′)。因此,f(n,k)<f(n,k′)≤upper[n,k′]。也就是说,upper[n,k′]满足f(n,k)的上限的条件。由于k可以取的最大值为K,所以k’在k与K之间(包括k和K)的值之中的最小upper[n,k′]被用作函数u(n,k)的输出。
可以认为upper[n,k]将最小。然而,由于计算顺序,所以先针对k的更大值计算上限也是有可能的。重用计算的结果。
参照图10的流程图,下文将描述函数r的过程。该过程是图6的流程图中的步骤,该步骤使用函数r以重建针对(n,k)返回最大值的节点。函数r的自变量是节点n和整数k。
在步骤1002,关于是否n=null进行确定。如果是这样,则函数r立即结束。
在步骤1004,关于(n,k)是否在*A中最大进行确定。如果在动态编程中使用图7中的函数f(n,k),则该确定意味着将在步骤712的计算结果和在步骤722的计算结果进行比较并且根据在步骤712的计算结果计算最大值。如果在具有修剪的动态编程中使用图8中的函数g(n,k,m),则该确定意味着将在步骤816的计算结果和在步骤830的计算结果进行比较并且根据在步骤816的计算结果计算最大值。
如果在步骤1004确定(n,k)在*A中最大,则在步骤1006中向节点集合添加n,并且r(sib(n),k-1)在步骤1008递归地调用r(),然后函数r结束。
如果在1004确定(n,k)在*A中并非最大,则该过程继续步骤1010,其中关于(n,k)是否在*B中最大进行确定。如果在动态编程中使用图7中的函数f(n,k),则该确定意味着将在步骤712的计算结果和在步骤722的计算结果进行比较并且根据在步骤722的计算结果计算最大值。如果在具有修剪的动态编程中使用图8中的函数g(n,k,m),则该确定意味着将在步骤816的计算结果和在步骤830的计算结果进行比较并且根据在步骤830的计算结果计算最大值。
如果在步骤1010确定(n,k)在*B中最大,则在步骤1012中递归地调用r(chd(n),c),并且r(sib(n),k-c)在步骤1014递归地调用r(),然后函数r结束。这里,c是为了随后在步骤722产生a的最大值而在图7中的流程图的步骤714初始化的值或者为了随后在步骤830产生a的最大值而在图8中的流程图的步骤818初始化的值。
如果在1010确定(n,k)在*B中并非最大,则函数r立即结束。在图6中的步骤612向GUI模块210提供以这一方式重建的节点并且将其显示在显示器114上。
图11图示了根据本发明的技术,在K=3的极小面积中压缩的、在“背景技术”部分给出的KWIC范例的显示示例。可见,即使K=3,仍然提供KWIC范例的、由短语“ボタンをクリツクし...”、“ボタンをクリツクでき”和“ボタンを押...”代表的良好编译。
图12图示了根据“背景技术”部分描述的一种典型常规技术使用查询“デ一タベ一ス”的搜索结果与根据本发明的技术使用相同查询的搜索结果之间的比较。在该示例中,将后缀字符串的最大长度L设置成10(L=10),并且显示k(=10)个频繁出现的字符串。显示的数字(比如“22:”)指示出现的频率。
本发明的技术将字符串(比如“デ一タベ一ス·サ一バ一を起動”(启动数据库服务器)和“デ一タベ一ス·サ一バ一が停止する”(关闭数据库服务器)作为字符串“デ一タベ一スサ一バ一”(数据库服务器)共同地计数。因此,可以容易地标识频繁出现的上下文字符串。对照而言,在常规技术中,频繁出现的单词的出现总数更小,因为它们中的一些未被计算在内。在最坏情况下,不能发现频繁出现的上下文字符串。
在使用近20MB的数据来进行的实验中,尤其是使用具有修剪的动态编程的实施方式已经实现比无修剪的动态编程快20倍的最大搜索速度。
另外,预先构建频率有序后缀树与在使用N-gram索引来搜索之后构建频率有序上下文树相比提高了搜索效率。因此,本发明的技术可以应用于大规模数据。
本发明可以有利地用于确保措词的一致性或者用于搜索手册和商业文档中的单词使用例子。
一些现有文本挖掘程序使用显示前K个频繁出现单词的算法。这样的算法具有的问题在于它们的逐个单词检索未必符合用户的兴趣。本发明使得能够显示适当地代表某一上下文的前K个可变长度字符串。因此,本发明也适用于文本挖掘程序。
尽管已经在上文描述的实施方式中构建频率有序后缀树,但是也可以通过反转文档来构建后缀树。在该情况下,可以将在先上下文字符串聚集在一起。例如,可以向查询“server”返回如“mailserver”、“NFSserver”和“Webserver”一样的字符串。
具体过程包括在文档反转时构建频率有序后缀树、反转查询字符串、搜索提供最大面积的上下文集合并且反转地显示搜索的结果。
尽管已经描述本发明的实施方式,但是应当理解可以在任何计算机硬件和平台中实现本发明。本领域技术人员将清楚,本发明除了日文之外也适用于任何语言。
[符号描述]
102系统总线
104CPU
106主存储器
108硬盘驱动器
110键盘
112鼠标
114显示器
202文本文件
204频率有序后缀树构建模块
206频率有序后缀树数据
208字符串搜索模块
210GUI模块

Claims (8)

1.一种字符串生成方法,用于通过在计算机上的处理来生成待显示的字符串,所述方法包括以下步骤:
将待搜索的文档配置为频率有序后缀树数据;
基于关键字搜索该文档以检索包括n个元素c的上下文字符串C,所述n个元素c包括所述关键字,其中n是大于或者等于1的整数;以及
获得字符串s的集合,所述字符串s的集合在显示的字符串的最大数目少于或者等于K的条件下最大化面积之和,其中K是大于或者等于1的整数,其中所述面积中的每个面积是如下面积,在该面积中,字符串s覆盖所述上下文字符串C,所述面积由C的以s作为前缀的元素c的数目与s的长度的乘积来限定。
2.根据权利要求1所述的方法,其中获得s的集合的所述步骤基于动态编程。
3.根据权利要求2所述的方法,其中所述动态编程是对从所述频率有序后缀树的搜索结果获得的频率有序上下文树数据的动态编程。
4.根据权利要求3所述的方法,其中所述动态编程包括修剪过程,在所述修剪过程中,在对所述频率有序上下文树数据的进行中的搜索中提供最大值,并且如果上限未达到所述最大值,则放弃所述进行中的搜索。
5.一种字符串生成系统,用于通过在计算机上的处理来生成待显示的字符串,所述系统包括:
用于将待搜索的文档配置为频率有序后缀树数据的装置;
用于基于关键字搜索文档以检索包括n个元素c的上下文字符串C的装置,所述n个元素c包括所述关键字,其中n是大于或者等于1的整数;以及
用于获得字符串s的集合的装置,所述字符串s的集合在显示的字符串的最大数目少于或者等于K的条件下最大化面积之和,其中K是大于或者等于1的整数,其中所述面积中的每个面积是如下面积,在该面积中,字符串s覆盖所述上下文字符串C,所述面积由C的以s作为前缀的元素c的数目与s的长度的乘积来限定。
6.根据权利要求5所述的系统,其中用于获得s的集合的所述装置基于动态编程。
7.根据权利要求6所述的系统,其中所述动态编程是对从所述频率有序后缀树的搜索结果获得的频率有序上下文树数据的动态编程。
8.根据权利要求7所述的系统,其中所述动态编程包括修剪过程,在所述修剪过程中,在对所述频率有序上下文树数据的进行中的搜索中提供最大值,并且如果上限未达到所述最大值,则放弃所述进行中的搜索。
CN201180037655.0A 2010-08-06 2011-07-11 字符串生成方法和系统 Expired - Fee Related CN103052951B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010177996 2010-08-06
JP2010-177996 2010-08-06
PCT/JP2011/065802 WO2012017782A1 (ja) 2010-08-06 2011-07-11 文字列生成方法、プログラム及びシステム

Publications (2)

Publication Number Publication Date
CN103052951A CN103052951A (zh) 2013-04-17
CN103052951B true CN103052951B (zh) 2016-01-06

Family

ID=45556879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180037655.0A Expired - Fee Related CN103052951B (zh) 2010-08-06 2011-07-11 字符串生成方法和系统

Country Status (7)

Country Link
US (1) US8954402B2 (zh)
EP (1) EP2602724A4 (zh)
JP (1) JP5337308B2 (zh)
KR (1) KR101498396B1 (zh)
CN (1) CN103052951B (zh)
CA (1) CA2804514A1 (zh)
WO (1) WO2012017782A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150161266A1 (en) * 2012-06-28 2015-06-11 Google Inc. Systems and methods for more efficient source code searching
CN103390044B (zh) * 2013-07-19 2017-02-08 百度在线网络技术(北京)有限公司 一种连锁类兴趣点数据识别方法及装置
US9824160B2 (en) * 2014-06-02 2017-11-21 SynerScope B.V. Computer implemented method and device for accessing a data set
CN108073679B (zh) * 2017-11-10 2021-09-28 中国科学院信息工程研究所 一种串匹配场景下随机模式串集合生成方法、设备和可读存储介质
CN109189828A (zh) * 2018-08-16 2019-01-11 国云科技股份有限公司 一种基于复杂网络的业务部门间数据价值评估的方法
US11106642B2 (en) * 2018-12-26 2021-08-31 Io-Tahoe LLC. Cataloging database metadata using a probabilistic signature matching process
CN114402312A (zh) * 2019-09-30 2022-04-26 富士通株式会社 模式搜索程序、模式搜索装置以及模式搜索方法
CN112966505B (zh) * 2021-01-21 2021-10-15 哈尔滨工业大学 一种从文本语料中提取持续性热点短语的方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101194256A (zh) * 2004-11-12 2008-06-04 谷歌公司 具有表意文字和音标字符的语言的自动输入完成的方法和系统
CN101388030A (zh) * 2007-09-14 2009-03-18 数据连接有限公司 数据库和数据库处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124199B2 (en) * 2001-12-28 2006-10-17 Autodesk, Inc. Turn restriction handling enhancement
US7269548B2 (en) * 2002-07-03 2007-09-11 Research In Motion Ltd System and method of creating and using compact linguistic data
JP2004164133A (ja) 2002-11-11 2004-06-10 Hiroshi Nakagawa 抽出装置、用例検索装置、ならびに、プログラム
JP2005222263A (ja) * 2004-02-05 2005-08-18 Hitachi Ltd 用語閲覧型情報アクセス支援システム
US7461056B2 (en) * 2005-02-09 2008-12-02 Microsoft Corporation Text mining apparatus and associated methods
JP2007213157A (ja) * 2006-02-07 2007-08-23 Just Syst Corp 用例文検索装置および用例文検索方法
JP5434408B2 (ja) * 2009-05-15 2014-03-05 富士通株式会社 携帯型情報処理装置、コンテンツ再生方法およびコンテンツ再生プログラム
WO2010139277A1 (en) * 2009-06-03 2010-12-09 Google Inc. Autocompletion for partially entered query

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101194256A (zh) * 2004-11-12 2008-06-04 谷歌公司 具有表意文字和音标字符的语言的自动输入完成的方法和系统
CN101388030A (zh) * 2007-09-14 2009-03-18 数据连接有限公司 数据库和数据库处理方法

Also Published As

Publication number Publication date
KR20130108537A (ko) 2013-10-04
US20120036149A1 (en) 2012-02-09
CN103052951A (zh) 2013-04-17
CA2804514A1 (en) 2012-02-09
KR101498396B1 (ko) 2015-03-03
JPWO2012017782A1 (ja) 2013-10-03
EP2602724A1 (en) 2013-06-12
WO2012017782A1 (ja) 2012-02-09
JP5337308B2 (ja) 2013-11-06
EP2602724A4 (en) 2016-08-17
US8954402B2 (en) 2015-02-10

Similar Documents

Publication Publication Date Title
CN103052951B (zh) 字符串生成方法和系统
CN109635273B (zh) 文本关键词提取方法、装置、设备及存储介质
US10409911B2 (en) Systems and methods for text analytics processor
Schnabel et al. Flors: Fast and simple domain adaptation for part-of-speech tagging
US20080319987A1 (en) System, method and program for creating index for database
Gawrychowski Pattern matching in Lempel-Ziv compressed strings: fast, simple, and deterministic
US7676358B2 (en) System and method for the recognition of organic chemical names in text documents
US20100114560A1 (en) Systems and methods for evaluating a sequence of characters
CN111611452B (zh) 搜索文本的歧义识别方法、系统、设备及存储介质
EP3598321A1 (en) Method for parsing natural language text with constituent construction links
JP5678896B2 (ja) 要求抽出システム、要求抽出方法および要求抽出プログラム
KR20130137048A (ko) 사전 생성 장치, 사전 생성 방법 및 사전 생성 프로그램을 기억하는 컴퓨터 판독 가능 기록 매체
CN110826321A (zh) 合同文件风险校验方法、装置、计算机设备以及存储介质
CN112560489A (zh) 一种基于Bert的实体链接方法
Onyenwe et al. Toward an effective igbo part-of-speech tagger
Zheng et al. Character-based parsing with convolutional neural network
WO2022134824A1 (en) Tuning query generation patterns
US11842152B2 (en) Sentence structure vectorization device, sentence structure vectorization method, and storage medium storing sentence structure vectorization program
JP5362649B2 (ja) 文字列ベクトル変換装置、文字列ベクトル変換方法、プログラム、及びプログラムを格納したコンピュータ読み取り可能な記録媒体
Xuan Bach et al. UDRST: A novel system for unlabeled discourse parsing in the RST framework
JP2004206659A (ja) 読み情報決定方法及び装置及びプログラム
Homenda et al. Syntax and Semantics-Based Decision-Making
Uneson When errors become the rule: Twenty years with transformation-based learning
JP3585944B2 (ja) データ処理方法及びその装置
Ekbal et al. Supervised machine learning approach for bio-molecular event extraction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160106

Termination date: 20200711

CF01 Termination of patent right due to non-payment of annual fee