本发明提供中文文本中的词分割。在一优选实施例中,一个词分割软件功能程序(“功能程序”)通过(1)估计输入的句子中的可能的字符组合并且舍弃不大可能的字符组合以提出该输入的句子中的各个词,(2)在词典中查找剩下的字符组合以确定它们是否构成词,以及(3)把确定为词的字符组合作为代表该输入句子的备择词法记录提交到一个自然语言分析程序,对诸如中文的不分割语言中的文本提供词分割。该分析程序生成一个表示该输入句子的语法结构的语法分析树,其只含有那些代表着确认为是该输入句子中的词的字符组合的词法记录。在把词法记录提交给该分析程序时,该功能程序对各词法记录加权,从而该分析程序在研究较短的字符组合之前先研究较长的字符组合,通常较长的字符组合比较短的字符组合更正确地表达对句子的分割。
为了便于舍弃不大可能代表该输入句子中的词的字符组合,该功能程序对词典中出现的每个字符在该词典中添加:(1)对所有不同词长组合的指示以及词中字符位置的指示,以及(2)当该字符作为一个词的开始时,对所有可跟随该字符的字符指示。该功能程序还添加(3)对多字符词的该多字符词内的子词是否是有活力的以及是否应予以研究的指示。在对句子进行处理中,该功能程序舍弃(1)其中具有用于未在该词典中出现的词长/位置组合中的任何字符的字符组合,以及(2)其中具有未列举成可能是第一字符的某第二字符的该第二字符的字符组合。该功能程序还舍弃(3)出现在对其不考虑子词的词中的字符组合。
以这种方式,该功能程序既使在该词典中查找的字符组合的数量最少又利用该句子的语法语境区分各构成有效词的备择的分割结果。
图1是最好在其上执行本功能程序的通用计算机系统的高层方块图。该计算机系统100包括中央处理器(CPU)110、各输入/输出部件120和计算机存储器(存储器)130。输入/输出部件中是存储部件121,例如硬盘机;计算机可读介质驱动机122,其可用于安装在计算机可读介质如CD-ROM上提供的包括着该功能程序的软件产品;以及网络连接件123,通过它该计算机系统100可和其它连接着计算机系统(未示出)通信。存储器130最好包括一个词分割功能程序131,用于辨别中文文本中出现的各个词,一个语法分析程序133,用于从代表自然语言文本中出现的词的词法记录生成代表自然语言文本中的语法结构的分析树,以及一个词法知识库132,用于由该分析程序构建用于分析树的词法记录时使用和用于由该功能程序辨别自然语言文本中出现的词时使用。尽管该功能程序最好实现在按如上说明的配置的计算机系统上,业内人士可理解它也可实现在具有不同配置的计算机系统上。
图2是一个总流程图,示出该功能程序优选操作的两个阶段。在步骤201,作为初始化阶段的一部分,该功能程序扩大词法知识库以包含其进行词分割使用的信息。下面连同图3更详细地讨论步骤201。简言之,在步骤201,该功能程序向词法知识库为该词法知识库中任何词中出现的字符添加条目。为每个字符添加的条目包括“字符位置”属性,其指示该字符在各词中出现的不同位置。用于每个字符的条目还包含“下个字符”属性,它指示从该当前字符开始的词的第二位置中出现的字符集。最后,该功能程序还对词法知识库中出现的每个词添加“不计部分”属性,它指示该词的字符序列是否还应考虑成一起构成该当前词的更小的一些词。
在步骤201后,该功能程序在步骤202中继续,即结束初始化阶段并开始词分割阶段。在词分割阶段中,该功能程序利用添加到词法知识库的信息进行中文文本的词分割。在步骤202,该功能程序接收用于词分割的中文文本句子。在步骤203,该功能程序把接收到的句子分割成其组成的词。后面连同图5更详细地讨论步骤203。简言之,该功能程序在词法知识库中查找该句中各字符的所有可能的相连组合的小片断。接着该功能程序向语法分析程序提交查找到的由词法知识库指示为是词的各字符组合。在确定该句的语法结构中,该分析程序辨别该句子的作者预定为构成该句中的各个词的各字符组合。在步骤203后,该功能程序在步骤202继续以接收下一个用于词分割的句子。
图3是一个流程图,示出为了在初始化阶段扩大词法知识库以包含用来进行词分割的信息由该功能程序优选执行的各步骤。这些步骤(a)为该词法知识库中的词里出现的字符向该词法知识库添加条目;(b)对该词法知识库中的字符条目添加“字符位置”和“下个字符”属性;(c)向该词法知识库中的词条目添加“不计部分”属性。
在步骤301-312,该功能程序循环通过该词法知识库中的每个词条目。在步骤302,该功能程序循环经过词中的每个字符位置。即,对于包含三个字符的词,该功能程序循环通过该词的第一、第二和第三字符。在步骤303,若当前字符位置上的字符在词法知识库中具有条目,则该功能程序在步骤305中继续,反之该功能程序在步骤304中继续。在步骤304,该功能程序向词法知识库添加一个用于该当前字符的条目。在步骤304后,该功能程序在步骤305中继续。在步骤305,该功能程序向存储在该词法知识库里该字符的条目里的“字符位置”属性添加一个有序对,以表示该字符可以出现在该当前词中出现的位置上的位置处。所添加的有序对具有格式(位置,长度),其中“位置”是该字符在该词中占据的位置,而“长度”是该词中的字符数量。例如,对词“委员会”中的字(符)“委”,该功能程序将为字符“委”在词法知识库里“字符属性”中存储的有序对列表里添加有序对(1,3)。若该有序对已经包含在用于该当前词的“字符位置”属性中,最好该功能程序不按步骤305中说明那样添加该有序对。在步骤306中,若在该当前的词还有要处理的其它字符,该功能程序在步骤302中继续以处理下个字符,反之该功能程序在步骤307中继续。
在步骤307中,若该词是单字符词,则该功能程序在步骤309中继续,反之该功能程序在步骤308中继续。在步骤308,该功能程序为该当前词的第一位置中的字符在词法知识库记录中的“下个字符”属性里的字符列表添加该当前词的第二位置上的一个字符。例如,对词“委员会”,该功能程序向为字符“委”的“下个字符”属性存储的字符表增加字符“员”。在步骤308后,该功能程序在步骤309中继续。
在步骤309,若该当前词含有其它较小的词,则该功能程序在步骤311中继续,反之该功能程序在步骤310中继续。后面连同图4更详细地讨论步骤309。简言之,该功能程序采用一些试探法确定某构成该当前词的某具体的字符串是否可在某语境下构成二个或更多的较小的词。
在步骤310,该功能程序在该词的词法知识库条目中为该词设定“不计部份”属性。设定“不计部分”属性表示,当该功能程序在输入文本的句子中遇到该词时,它不应再执行其它用来确定该词是否包含着较小的词的步骤,在步骤310后,该功能程序在步骤312中继续。在步骤311中,由于该当前词可以包含其它词,该功能程序清除该词的“不计部分”属性,从而在输入文本的句子中遇到该词时该功能程序着手调查该词是否包含更小的词。在步骤311后,该功能程序在步骤312中继续。在步骤312中,若在词法知识库中还有要处理的词,则该功能程序在步骤301中继续以处理下个词,反之终止这些步骤。
当该功能程序执行图3中示出的各步骤以通过向每个字符分配“字符位置”和“下个字符”属性扩大该词法知识库时,它按下面表5中示出那样向表3中示出的样本句子中出现的各字符分配这些属性。
字符 |
字符位置 |
下个字符 |
昨 |
(1,2)(1,3)(3,4) |
儿天晚 |
天 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4) |
安崩兵… |
下 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4) |
巴百班…午… |
午 |
(12,)(2,2)(2,3)(2,4) |
餐饭后… |
委 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(3,4)(4,4)(3,5) |
靡派屈…员… |
员 |
(1,2)(2,2)(2,3)(3,3)(2,4)(3,4)(4,4) |
额工司外 |
会 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4)(4,5) |
标餐操… |
在 |
(1,2)(2,2)(1,3)(2,3)(1,4)(2,4)(3,4)(4,4) |
案场朝… |
布 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4)(1,5)(2,5)(3,5)(4,5)(1,6)(2,6)(1,7) |
达店丁…宜… |
宜 |
(1,2)(2,2)(2,3)(3,3)(2,4)(3,4)(4,4)(3,6)(2,7) |
宾昌城… |
诺 |
(1,2)(2,2)(1,3)(2,3)(3,3)(2,4)(3,4)(4,4)(3,7) |
贝丁曼萨言 |
斯 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4)(1,5)(2,5)(3,5)(4,5)(5,5)(1,6)(3,6)(4,6)(5,6)(6,6)(4,7)(5,7)(6,7)(7,7) |
文德拉… |
艾 |
(1,2)(2,2)(1,3)(3,4)(4,4)(1,5)(5,7) |
比丁黎… |
利 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4)(2,5)(3,5)(4,5)(5,6)(6,7) |
薄比弊… |
斯 |
(1,2)(2,2)(1,3)2,3)(3,3)(1,4)(2,4)(3,4)(4,4)(1,5)(2,5)(3,5)(4,5)(5,5)(1,6)(3,6)(4,6)(5,6)(6,6)(4,7)(5,7)(6,7)(7,7) |
文德拉… |
讨 |
(1,2)(2,2)(1,3)(2,3)(1,4)(2,4) |
伐饭好价叫论人厌 |
论 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)(4,4) |
处点调… |
了 |
(1,2)(2,2)(1,3)(3,3)(1,4)(2,4)(3,4)(4,4) |
不结解… |
这 |
(1,2)(1,3)(1,4) |
边儿个… |
个 |
(1,2)(2,2)(1,3)(2,3)(3,3)(1,4)(2,4) |
别儿旧… |
问 |
(1,2)(2,2)(1,3)(2,3)(1,4)(3,4)(4,4) |
长答道…题 |
题 |
(1,2)(2,2)(2,3)(3,3)(2,4)(4,4) |
跋材词… |
表5:字符词法知识库条目从表5中可以看出,例如从字符“昨”的“字符位置”属性该字符可按字符数为2、3或4的多个词的第一字符出现。还可以从字符“昨”的“下个字符”属性中看出,在以该字符开始的词中,第二字符可以是“儿”、“天”或“晚”中之一。
图4是一个流程图,示出为确定具体的词是否可包含其它较小的词优选执行的各步骤。类似于英文,若从英文句子中去掉空格和标点符号,字符串“beat”可被解释为词“beat”或者为二个词“be”和“at”。在步骤401,某该词含有四个或更多的字(符),则该功能程序在步骤402继续以回送该词不包含其它词的结果,反之该功能程序在步骤403中继续。在步骤403,若该词的所有字符可构成单字符词,则该功能程序在步骤405中继续,反之该功能程序在步骤404中继续以返回该词不包含其它词的结果。在步骤405,若该词含有一个通常作为派生词缀的词,即前缀或后缀,则该功能程序在步骤406继续以回送该词不包含其它词的结果,反之该功能程序在步骤407继续。在步骤307,若该词中的一对相邻字符在它们相连地出现在该语言的文本中时通常是分开的,则该功能程序在步骤409中继续以回送该词可以含有其它词的结果,反之该功能程序在步骤408继续以返回该词不包含其它词的结果。
在下面的表6中示出确定具体词是否可含有其它较小的词的结果。
词 |
不计部分 |
昨天 |
设置 |
天下 |
清除 |
下午 |
设置 |
委员会 |
清除 |
委员 |
设置 |
布宜诺斯艾利斯 |
设置 |
讨论 |
设置 |
表6:词的词法知识库条目例如,可从表6看出,该功能程序把词“昨天”确定为不会含有别的词,而把词“天下”确定为可含有其它词。
图5是为把句子分割成其组成词由该功能程序优选执行的各步骤的流程图。这些过程生成一个确定该句中出现的该语言中的不同词的词列表。接着把该词列表提交给一个分析程序以辨别出该词列表中的句子作者想要组成该句子的词子集。
在步骤501中,该功能程序向该词列表添加该句中出现的多字符词。后面连同图6更详细地讨论步骤501。在步骤502中,该功能程序向该词列表添加该句中出现的单字符词。后面连同图9更详细地讨论步骤502。在步骤503,该功能程序生成多个词法记录,供词法分析程序为这些在步骤501和502中添加到该词列表的词使用。在步骤504,该功能程序对这些词法记录分配概率。词法记录的概率反映该词法记录是用于该句子的正确分析树中的一部分的似然性,并由该分析程序用来在分析处理中对各词法记录的应用排序。在分析处理期间该分析程序以它们概率的递减顺序应用这些词法记录。后面连同图10更详细地讨论步骤504。在步骤505,该功能程序利用该语法分析程序分析这些词法记录以便产生一个反映该句子的语法结构的分析树。该分析树把步骤503中生成的词法记录的一个子集作为它的各个叶。在步骤506,该功能程序把由为该分析树的各叶的词法记录代表的词确定为该句子的各个词。在步骤506后,终止这些步骤。
图6是一个流程图,表示为对该词列表添加多字符词该功能程序优选执行的各步骤。这些步骤利用分析该句子过程中该句内的当前位置来确定多字符词。这些步骤还利用如图4中示出由该功能程序添加到该词法知识库中的“字符位置”、“下个字符”和“不计部分”属性。依据第一优选实施例,该功能程序在执行图6中示出的各步骤期间根据以需要为基准从词法知识库检索这些属性。在第二优选实施例中,在执行图6中示出的各步骤之前全部预装入该句子中各字符的“下个字符”属性和/或“字符位置”的值。在会同第二优选实施例下,最好在存储器存储一个包含该句中出现的各个字符的“字符位置”属性的值的三维数组。该数组为该句某给定位置处的某字符指示该字符是否能在一给定长度的词中的某给定位置上。对这些属性的各个值的高速缓存允许在执行图6的各步骤中有效地访问它们。
在步骤601,该功能程序把位置设定在该句的第一字符处。在步骤602-614,该功能程序继续以重复步骤603-613直至该位置到达句子的结尾。
在步骤603-609,该功能程序循环通过从当前位置开始的每个词候选。最好功能程序以从当前位置起始的并为七个字符长的词候选开始,并且在每次迭代中,从该词候选的词尾去掉一个字符直至该词候选为二字符长。若从当前位置开始句中的剩余字符少于七个,该功能程序最好对那些在句子剩余不足够字符的词候选省略掉迭代。在步骤604,该功能程序为当前词候选检查构成该词候选的各字符的“下个字符”和“字符位置”属性有关的状态。后面会同图7更详细地讨论步骤604。若词候选满足“下个字符”和“下个位置”二个条件,则该功能程序在步骤605继续,反之该程序在步骤609中继续。在步骤605,该功能程序查找词法知识库中的该词候选以确定该词候选是否是一个词。在步骤606,若该词候选是一个词,则该功能程序在步骤607中继续,反之该程序在步骤609中继续。在步骤607,该功能程序把该词候选添加到该句中出现的词的列表中。在步骤608,若该词候选可包含其它词,即,若该词的“不计部分“属性是清除的,则该功能程序在步骤609继续,反之该程序在步骤611中继续。在步骤609,若存在待处理的其它词候选,则该功能程序在步骤603中处理下个词候选,反之该程序在步骤610中继续。在步骤610,该功能程序把当前位置朝向句子的结尾前进一个字符。在步骤610后,该功能程序在步骤614中继续。
在步骤611,若该词候选的最后一个字符和也是一个词的另一个词候选重叠,则该功能程序在步骤613中继续,反之该程序在步骤612中继续。后面连同图8更详细讨论步骤611。在步骤612,该功能程序把位置前移到句中该词候选的最后一个字符之后的字符上。在步骤612后,该功能程序在步骤614中继续。在步骤613中,该功能程序把位置前进到当前词候选的最后一个字符上。在步骤613后,该功能程序在步骤614中继续。在步骤614,若该位置不在句子的结束处,则该功能程序在步骤602中继续以考虑新的词候选组,反之结束这些步骤。
图7是一个流程图,示出为对词候选检查“下个字符”和“字符位置”属性状态由该功能程序优选执行的各步骤。在步骤701,若该词候选的第二字符在该词候选的第一字符的“下个字符”列表中,则该功能程序在步骤703中继续,反之该程序在步骤702中继续以回送二个状态都满足的结果。在步骤703-706该功能程序循环通过该词候选中的每个字符位置。在步骤704,若由当前位置和词候选的长度组成的有序对在当前字符位置上的字符的“字符位置”列表中的各有序对之中,则该功能程序在步骤706中继续,反之该程序在步骤705中继续以回送这二个状态都不满足的结果。在步骤706,若在该词候选中存在其它待处理的字符位置,则该功能程序在步骤703中继续以便处理该词候选中的下个字符位置,反之该程序在步骤707中继续以便回送该词候选满足二个状态的结果。
图8是一个流程图,示出为确定当前词候选的最后一个字符是否和另一个可能是词的词候选重叠由该功能程序优选执行的各步骤。在步骤801,若该词候选后面的字符在该词候选的最后一个字符的“下个字符”属性中的字符列表中,则该功能程序在步骤803中继续,反之该程序在步骤802中继续以便回送不存在重叠的结果。在步骤803,该功能程序在词法知识库中查找不带有它的最后一个字符的该词候选以确定该不带有其最后一个字符的词候选是否是一个词。在步骤804,若该不带有其最后一个字符的词候选是一个词,则该功能程序在步骤806中继续以便回送存在重叠的结果,反之该程序在步骤805中继续以回送不存在重叠的结果。
在下面的表7中示出对该例子执行图6中示出的各步骤。
编号 |
组合 |
字符位置 |
下个字符 |
查找? |
是一个词? |
1 |
昨天下午委员会 |
昨上失败 |
通过 |
不 |
不 |
2 |
昨天下午委员 |
昨上失败 |
通过 |
不 |
不 |
3 |
昨天下午委 |
昨上失败 |
通过 |
不 |
不 |
4 |
昨天下午 |
昨上失败 |
通过 |
不 |
不 |
5 |
昨天下 |
通过 |
通过 |
是 |
不 |
6 |
昨天 |
通过 |
通过 |
是 |
是 |
7 |
天下午委员会在 |
天上失败 |
通过 |
不 |
不 |
8 |
天下午委员会 |
天上失败 |
通过 |
不 |
不 |
9 |
天下午委员 |
天上失败 |
通过 |
不 |
不 |
10 |
下下午委 |
午上失败 |
通过 |
不 |
不 |
11 |
天下午 |
午上失败 |
通过 |
不 |
不 |
12 |
天下 |
通过 |
通过 |
是 |
是 |
13 |
下午委员会在布 |
下上失败 |
通过 |
不 |
不 |
14 |
下午委员会在 |
下上失败 |
通过 |
不 |
不 |
15 |
下午委员会 |
下上失败 |
通过 |
不 |
不 |
16 |
下午委员 |
通过 |
通过 |
是 |
不 |
17 |
下午委 |
通过 |
通过 |
是 |
不 |
18 |
下午 |
通过 |
通过 |
是 |
是 |
19 |
委员会在布宜诺 |
委上失败 |
通过 |
不 |
不 |
20 |
委员会在布宜 |
委上失败 |
通过 |
不 |
不 |
21 |
委员会在布 |
委上失败 |
通过 |
不 |
不 |
22 |
委员会讨 |
讨上失败 |
通过 |
不 |
不 |
23 |
委员会 |
通过 |
通过 |
是 |
是 |
24 |
委员 |
通过 |
通过 |
是 |
是 |
25 |
会在布宜诺斯艾 |
会上失败 |
失败 |
不 |
不 |
26 |
会在布宜诺斯 |
会上失败 |
失败 |
不 |
不 |
27 |
会在布宜诺 |
会上失败 |
失败 |
不 |
不 |
28 |
会在布宜 |
通过 |
失败 |
不 |
不 |
29 |
会在布 |
通过 |
失败 |
不 |
不 |
30 |
会在 |
通过 |
失败 |
不 |
不 |
31 |
在布宜诺斯艾利 |
在上失败 |
失败 |
不 |
不 |
32 |
在布宜诺斯艾 |
在上失败 |
失败 |
不 |
不 |
33 |
在布宜诺斯 |
在上失败 |
失败 |
不 |
不 |
34 |
在布宜诺 |
通过 |
失败 |
不 |
不 |
35 |
在布宜 |
通过 |
失败 |
不 |
不 |
36 |
在布 |
通过 |
失败 |
不 |
不 |
37 |
布宜诺斯艾利斯 |
通过 |
通过 |
是 |
是 |
38 |
讨论了这个问题 |
讨上失败 |
通过 |
不 |
不 |
39 |
讨论了这个问 |
讨上失败 |
通过 |
不 |
不 |
40 |
讨论了这个 |
讨上失败 |
通过 |
不 |
不 |
41 |
讨论了这 |
这上失败 |
通过 |
不 |
不 |
42 |
讨论了 |
通过 |
通过 |
是 |
不 |
43 |
讨论 |
通过 |
通过 |
是 |
是 |
44 |
了这个问题 |
了上失败 |
失败 |
不 |
不 |
45 |
了这个问 |
这上失败 |
失败 |
不 |
不 |
46 |
了这个 |
这上失败 |
失败 |
不 |
不 |
47 |
了这 |
这上失败 |
失败 |
不 |
不 |
48 |
这个问题 |
通过 |
通过 |
是 |
不 |
49 |
这个问 |
问上失败 |
通过 |
不 |
不 |
50 |
这个 |
通过 |
通过 |
是 |
是 |
51 |
个问题 |
通过 |
失败 |
不 |
不 |
52 |
个问 |
通过 |
失败 |
不 |
不 |
53 |
问题 |
通过 |
通过 |
是 |
是 |
表7:被研究的字符组合表7对由该功能程序研究的该样本句子的53种字符组合中的每个组合指出:“字符位置”检查的结果,“下个字符”检查的结果、该功能程序是否在词法知识库中查找该词以及词法知识库是否把该字符组合指示是一个词。
可以看出组合1-4在“字符位置”检查上失败,因为字“昨”的“字符位置”属性不包含有序对(1,7),(1,6),(1,5)或(1,4)。另一方面,对于组合5和6,“字符位置”和“下个字符”二项检查皆通过。从而该功能程序在词法知识库中查找组合5和6,并确定组合5不是词而组合6是词。在处理组合6后和确定从当前位置前进多远后,该功能程序确定设置了“不计部分”属性,但是词“昨天”和以字“天”开始的词候选重叠。从而该功能程序根据步骤613前进到组合6结束处的字“天”。在组合7-12中,只有组合12通过“字符位置”以及“下个字符”检查。从而查找组合12并确定为是一个词。在处理了组合12并确定从当前位置前进多远后,该功能程序确定由组合12构成的词的“不计部分”属性是清除的,从而从当前位置前进一个字符到达字“下”而不是前进到组合12之后的那个字符。
还可以看出组合18、24、37和43是词,它们的“不计部分”属性被设置并且在它们的最后一个字符上不和可能是词的任何词候选重叠。从而,在处理这些组合中的每个后,该功能程序根据步骤612从当前位置前进到字符组合后的那个字符,从而对这四个组合中的每个免掉对多达41个附加的不必要的处理。
还可以看出由组合23和50构成的词的“不计部分”属性是清除的。因此,根据步骤610在处理这些组合后该功能程序只把当前位置前移一个字符。
还可看出该功能程序不把双字组合30、36、47和52确定成构成词。从而,根据步骤610在处理这些组合后该功能程序只把当前位置前移一个字符。总之,该功能程序只对该样本句子中的112个可能组合中的14个组合进行查找。对于该功能程序查找到这14个组合,实际九个是真正的词。
如下面表8中所示,在会同表7说明的处理后,词列表包含由组合6、12、18、23、24、37、43、50和53构成的词。
编号 |
词 |
词类 |
6 |
昨天 |
名词 |
12 |
天下 |
名词 |
18 |
下午 |
名词 |
24 |
委员 |
名词 |
23 |
委员会 |
名词 |
37 |
布宜诺斯艾利斯 |
名词 |
43 |
讨论 |
动词 |
50 |
这个 |
代词 |
53 |
问题 |
名词 |
表8:具有多字符词的词列表
图9是一个流程图,表示为对该词列表添加单字符词该功能程序优选执行的各步骤。在步骤901-906,该功能程序从第一个字符到最后一个字符循环通过句中的每个字符。在步骤902,该功能程序根据词法知识库中的条目确定该字符是否包括单字符词,若不是该功能程序在不向词列表添加字符下于步骤906继续。若该字符包括单字符词,则该功能程序在步骤903继续,反之该继续在不对词列表添加该字符下在步骤906中继续。在步骤903,若该字符包含在一个不包含其它词的词中,即,已在该词列表中的其“不计部分”属性已设置的一个词中,该功能程序在步骤904中继续,反之该程序在步骤905中继续以把该字符添加到该词列表中。在步骤904中,若该字符包含在词列表中一个和该词列表中的另一个词重叠的词中,则该功能程序在不对该词列表添加该字符下在步骤906中继续,反之该程序在步骤905中继续。在步骤906中,若句中还有待处理的词,则该功能程序在步骤901中继续以处理句中的下一个字符,反之终止这些步骤。
下面的表9示出,在执行图9中示出的步骤中,该功能程序向该词列表添加单字符词54-61。
54 |
昨 |
词素 |
55 |
天 |
名词 |
12 |
天下 |
名词 |
56 |
下 |
名词(定位词) |
18 |
下午 |
名词 |
24 |
委员 |
名词 |
23 |
委员会 |
名词 |
57 |
会 |
名词 |
57 |
会 |
动词 |
58 |
在 |
动词 |
58 |
在 |
前置词 |
58 |
在 |
副词 |
37 |
布宜诺斯艾利斯 |
名词 |
43 |
讨论 |
动词 |
59 |
了 |
功能词 |
50 |
这个 |
代词 |
60 |
这 |
代词 |
61 |
个 |
名词(量词) |
53 |
问题 |
名词 |
表9:带有单字符词和多字符词的词列表
应理解,向词列表添加多字符词并接着向该词列表添加单字符表只是建立该词列表的一个示例方法。在一替代方法中,可通过先确定单字符词并接着再添加多字符词得到该词列表。对于首先确定单字符词,该方法类似于上面在图9中示出并说明的方法;但省掉步骤902和904。具体地,在步骤902中,该功能程序根据词法知识库中的条目确定字符是否构成单字符词。若字符构成单字符词,则该功能程序在步骤905中继续以把该字符添加到该词列表中,反之该功能程序在不对词列表添加该字符下在步骤906中继续。该功能程序通过历经步骤901、902、905和906循环处理句子中的每个字符以确定其是否是一个词。
在该替代方法,该功能程序接着处理该句子以确定多字符词,并把这样的词添加到该词列表中。该功能程序可利用上面根据图6说明的方法。然而,因为句子可能含有不包含其它词的多字符词,即,若对该多字符词设置着“不计部分”属性,则从词列表中删除或去掉那些组成该多字符词的单字符词是有好处的。从该词列表中去掉这些单字符词使分析程序133所需的分析为最小。
然而,若二个设定“不计部分”属性的多字符词重叠,则从词列表中去掉单字符词是复杂的。现说明一个一般性的例子。假定被研究的句子中出现字符串ABC,并且该句子可由它们的“不计部分”属性被设定的多字符词AB和BC构成。还假定A、B和C是单字符词。若简单地从词列表中去掉由词AB和BC复盖的所有单字符词会存在问题。具体地,若BC是句中正确的词会失掉词A。类似地,若AB是句中正确的词会去掉词C。在这二种情况下,不会语法分析该句子,因为通过该句的所有路径都是断开的。为了防止出现这种问题,与“不计部分”属性值无关地保留多字符词中的所有单字符词,但由重叠部分复盖的单字符词除外。在上面说明的该一般性句子中,在词列表中保留词A和C,但从词列表中去掉B因为它是该句的重叠部分。参照图8,若在该替代方法中该功能程序到达步骤802,会从该列表中去掉构成词候选的所有单字符词。若该功能程序代之到达步骤806,则会保留不重叠的单字符词,而去掉重叠部分。
在前面说明的方法中,通过确定词候选的最后一个字符的“下个字符”列表确定可能的重叠词(步骤801),并且确定不带有其最后一个字符的词候选是否是一个词(步骤804)。在一种替代方法中,可以通过确定和词列表一起提供给分析程序133的其它信息寻找重叠的词。具体地,除该词列表外,分析程序133接收该词列表中每个词的位置信息。对于表3中的例子,顺序地从1到22对每个字符编号。利用该位置信息,对该词列表中的每个词确定词的开始位置和结束位置。例如参照表9中辨别的词,用号码“6”代表的词应具有为1的开始字符位置和为2的结束字符位置,而用号码“12”代表的词应具有为2的开始字符位置和为3的结束字符位置。单字符词应具有和结束字符位置相等的开始字符位置。从而通过检查句中可能的相邻词的结束字符位置和开始字符位置可以方便地确定重叠的词。具体地,若句中某可能词的结束字符位置大于或等于句中下个可能词的开始字符位置,则存在重叠状态。
在对词列表添加多字符和单字符词并为这些词生成词法记录后,该功能程序向这些词法记录分配概率,在分析处理中为了在这些词法记录上对使用排序该分析程序利用这些概率。下面讨论的图10和图11,示出该功能程序使用的对词法记录分配概率的二种备择方法。
图10是一个流程图,示出为向从词列表中的各词生成的词法记录分配概率该功能程序根据第一方法优选执行的各步骤。该功能程序最好最终向每个词法记录设定一个为高概率值或为低概率值的概率,高概率值将使该分析程序在分析处理期间的早期考虑该词法记录,而低概率值将使该分析程序在分析处理中的后期考虑该词法记录。在步骤1001-1005中,该功能程序循环通过该词列表中的每个词。在步骤1002中,若当前词包含在词列表中一个更大的词中,则该功能程序在步骤1004中继续,反之该程序在步骤1003中继续。在步骤1003,该功能程序对该词法记录设置表示该词为高概率值的概率。在步骤1003后,该功能程序在步骤1005中继续。在步骤1004,该功能程序对该词法记录设置表示该词为低概率值的概率。在步骤1004后,该功能程序在步骤1005中继续。在步骤1005,若词列表中存在待处理的其它词,则该功能程序在步骤1001中继续以处理词列表中的下个词,反之则结束这些步骤。
下面的表10示出根据图10中示出的各步骤对该词列表中的每个词分配的概率值。通过检查这些概率可以看出,该功能程序向至少一个含有各个字符的词分配高概率值,从而在分析处理的早期中考虑至少一个的含有各个字符的词法记录。
6 |
昨天 |
名词 |
高 |
54 |
昨 |
词素 |
低 |
55 |
天 |
名词 |
低 |
12 |
天下 |
名词 |
高 |
56 |
下 |
名词(定位词) |
低 |
18 |
下午 |
名词 |
高 |
24 |
委员 |
名词 |
低 |
23 |
委员会 |
名词 |
高 |
57 |
会 |
名词 |
低 |
57 |
会 |
动词 |
低 |
58 |
在 |
动词 |
高 |
58 |
在 |
前置词 |
高 |
58 |
在 |
付词 |
高 |
37 |
布宜诺斯艾利斯 |
名词 |
高 |
43 |
讨论 |
动词 |
高 |
59 |
了 |
功能词 |
高 |
50 |
这个 |
代词 |
高 |
60 |
这 |
代词 |
低 |
61 |
个 |
名词(量词) |
低 |
53 |
问题 |
名词 |
高 |
表10:带有概率的词列表
图11是一个流程图,示出为向从词列表中的各词生成的词法记录分配概率该功能程序根据第二方法优选执行的各步骤。在步骤1101中,该功能程序使用该词列表辨别该句子中所有完全由词列表中的词组成的可能的句子分段。在步骤1102中,该功能程序选择一个或多个在步骤1101中辨别的并含有最少词的可能的句子分段。若多于一个的可能的句段具有最少数量的词,该功能程序选择每个这样的可能的句段。下面的表11示出从表9中示出的词列表生成的具有最少的词(9)的可能的句子分段。
昨天下午委员会在布宜诺斯艾利斯讨论了这个问题。
表11
在步骤1103中,该功能程序对选定的分段(组)中的各词的词法记录的概率设置高概率值。在步骤1104中,该功能程序对不在选定的分段(组)中的各词的词法记录的概率设置低概率值。在步骤1104后,结束这些步骤。
下面的表12示出根据图11中示出的步骤对该词列表中的每个词分配的概率值。通过检查这些概率可以看出,该功能程序向至少一个含有各个字符的词分配高概率,从而在分析处理的早期考虑至少一个的含有各个字符的词法记录
编号 |
词 |
词类 |
概率值 |
6 |
昨天 |
名词 |
高 |
54 |
昨 |
词素 |
低 |
55 |
天 |
名词 |
低 |
12 |
天下 |
名词 |
低 |
56 |
下 |
名词(定位词) |
低 |
18 |
下午 |
名词 |
高 |
24 |
委员 |
名词 |
低 |
23 |
委员会 |
名词 |
高 |
57 |
会 |
名词 |
低 |
57 |
会 |
动词 |
低 |
58 |
在 |
动词 |
高 |
58 |
在 |
前置词 |
高 |
58 |
在 |
付词 |
高 |
37 |
布宜诺斯艾利斯 |
名词 |
高 |
43 |
讨论 |
动词 |
高 |
59 |
了 |
功能词 |
高 |
50 |
这个 |
代词 |
高 |
60 |
这 |
代词 |
低 |
表12:带有概率的词列表
在本发明的一个广泛方面中,还可向词的重叠部分分配概率。在一般性的字符串ABC中统计数据可指示词AB和C的组合的概率可高于A和BC的组合。从而,分析程序133应首先考虑AB和C的组合,同时不应考虑A和BC的组合除非利用AB和C未找到成功的分析。统计数据还可能表示一个可能的组合AB和C,或者A和BC是不可能的。
为了对词的重叠对中的词分配相对概率或者去掉不可能的组合,把信息存储在词法知识库132中。具体地,在词法知识库132中其它列表可以和许多多字符词相关。这些列表包括:
(1)第一左状态列表-这种条目中的词应分配低概率若在句子中它的紧前面是该列表中的一个字符的话;
(2)第一右状态列表-这种条目中的词应分配低概率若在句子中它的紧后面是该列表中的一个字符的话;
(3)第二左状态列表-这种条目中的词应被忽略若在句子中它的紧前面是该列表中的一个字符的话。换言之,若词列表中的某个多字符词满足该条件,应把它从该词列表中去掉;以及
(4)第二右状态列表-这种条目中的词应被忽略若在句子中它的紧后面是该列表中的一个字符的话。换言之,若词列表中词满足该条件,应把它从该词列表中去掉。
请注意,并不是对词法知识库内中的每个多字符词都存在每个上述的表。换言之,词法知识库132内的一些多字符词可能不具有任何上述的表。而其它词会具有一个、一些或所有的列表。若需要,可以根据紧靠在前面或后面字符生成其它列表。例如,可生成列表以分配高概率。手工地把这些列表输入到词法知识库132中。
除了利用词法数据库进行分析以解决上面讨论的去歧义之外,还可以在语法分析之前和词法分析一起采用基于规则的去歧义分析。例如,若某句中呈现字符串ABCD,其中AB、BC和CD都可能是词,如果AB不和前面的词重叠、CD不和后面的词重叠、A或D中一个不是词而ABC和BCD都不是词,则可忽略掉词BC(从词列表中去掉)。
然而还应强调,在分析程序的解决分段不明的能力以及上面说明的词法去歧义之间在逻辑上不存在依从性。清除词法层上的词减少语法分析复杂性,但它并不总是成功分析句子的必要条件。只要句中的正确的词都在功能程序131提供的词列表中而且该词列表中的词汇数量不过多以至分析程序133负担过重,语法分析是会成功的。从而句子分析的成功(包括正确的词分割)不依赖于词法去歧义的完全成功,尽管后者可大大帮助前者。这允许独立地开发功能程序131和分析程序133,尽管在组成部分之间存在着相互影响。
图12是一个语法分析树图,示出由该分析程序生成的表示该样本句子的语法结构的分析树。可以看出该分析树是一个层次结构,以单个句子记录1231为它的头并以一些词法记录1201-1211为它的各个叶。该分析树还具有组合词法记录的中间语法记录1221-1227,它们各代表表示一个或多个词的较大语法结构中的一个词。例如,前置词短语记录组合代表一个前置词的词法记录1204和代表一个名词的词法记录1206。根据图5的步骤506,该功能程序把由该分析树中的词法记录1201-1211代表的词确定为该样本句子应分割成的词。该功能程序还可保留该语法分析树,以便在该句上进行其它自然语言处理。
尽管参照各优选实施例示出和说明了本发明,业内人士会理解,在不背离本发明的范围下在形式和细节上可做出各种改变和修改。例如,该功能程序的各个方面可应用于不同于中文的语言以进行词分割。另外,可应用本文中说明的技术的子集或超集合进行词分割。