CN102043775A - 一种用于信息检索的任意大小n-gram频率统计方法及其装置 - Google Patents
一种用于信息检索的任意大小n-gram频率统计方法及其装置 Download PDFInfo
- Publication number
- CN102043775A CN102043775A CN2009100445470A CN200910044547A CN102043775A CN 102043775 A CN102043775 A CN 102043775A CN 2009100445470 A CN2009100445470 A CN 2009100445470A CN 200910044547 A CN200910044547 A CN 200910044547A CN 102043775 A CN102043775 A CN 102043775A
- Authority
- CN
- China
- Prior art keywords
- gram
- index
- text
- frequency
- elongated
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于文本检索的任意大小n-gram频率统计方法及其装置,包括:文本预处理单元,将给定的文本和字符串进行2-gram切分和编码;变长二级索引结构,通过遍历文本将所出现的2-gram位置信息进行编码保存至二级变长索引中;任意n-gram频率统计单元,通过对二级索引的检索,得到相关2-gram的位置值集合,通过对有序位置值集合的并集或交集运算,实现对任意n-gram位置信息的计算和频率统计。使用本发明实施例的方法或装置可以用较小的时间、空间代价高效地实现对任意n-gram位置信息的计算和频率统计。从而解决了现有n-gram统计方法中,不能对任意n-gram进行统计以及效率较低的问题。
Description
技术领域
本发明一般地涉及信息检索中的n-gram频率统计技术,尤其设计出一种在给定文本和字符串中任意长度n-gram出现频率的快速统计方法和装置。
技术背景
N-gram是信息检索中常用的一种语言模型。它通过对长度为n的连续字串进行计算来完成检索过程。计算过程中,连续字串在语言现象中的出现频率至关重要。在n-gram中,1-gram、2-gram、3-gram被应用得最多。究其原因,是因为它们消耗的计算机资源在可被接受的范围之内。通常,对于n-gram的计算都是基于索引的。就中文而言,GB2312-80字符集中包含了汉语中常用汉字6763个,则为了保证查找效率,1-gram的索引入口数量为6763,2-gram的索引入口数量为67632=45738169,3-gram使用的索引入口数量多达67633≈288giga。依照这种规律以几何级数递增下去,更大的n值消耗的计算机资源是惊人的。因此任意大小的n-gram很少被应用。然而,在通过n-gram模型对语言文字进行处理时,n越大,供语言模型参考的上下文就越多,其优势是越明显,在某些应用环境下,必须对大n-gram进行统计计算。
现有的解决该问题的方法包括两类:对索引进行压缩;对一定范围内的n值进行处理。
在真实的语言现象中,很多字符之间不存在搭配关系。在构建索引时,如果考虑到所有理论上的可能性,随着n增大,数据稀疏的情况越来越严重,系统资源浪费惊人。对索引进行压缩就是基于这样一种思路,即去除掉那些不可能出现的字符搭配情况,尽可能消除数据稀疏的现象。
这种方法的缺点在于:
1、这种方法虽然在一定程度上对n值增大后的索引空间增速有所改善,但这种改善是有限的,不能对任意大小的n值进行处理。同时,压缩和解压缩的过程也会降低系统效率。
2、所有语言文字处理的本质都是对文字符号编码的处理。在构建索引时,编码的连续性对于检索效率有非常大的影响,而索引压缩破坏了这种连续性。因此,检索效率不高。
对一定范围内的n值进行处理,具有代表性的方法是Suffix Array。该方法通过如下步骤对n-gram进行统计:
1、将整个文本视为一个字符串,以每个字符作为起点,以文本结束位置作为终点,提取子串;
2、对所子串进行排序;
3、统计排序后相邻子串之间的最长相同前缀长度,并记录下来;
4、通过比较n值和所记录的最长前缀的长度,若前缀长度大于n,则对应的n-gram频率加1,如此进行下去,直到得出最终的统计值。
该方法的局限性在于:
1、对文本进行预处理时,需要进行排序操作。若语料库规模大,则排序时间较长。若对语料库进行扩充,则需要重新排序;
2、它可以处理比较大的n值,但无法处理任意大小的n值。n值由保存相邻子串最长相同前缀的单元大小决定,例如当保存共同前缀长度的单元为1字节,则它能统计的n-gram最大为28-1=255。
发明内容
有鉴于此,本发明实施例提供了一种能对任意大小n-gram进行频率统计的方法,克服了现有n-gram频率统计方法的时间复杂度高,不能对任意n值进行统计的缺陷。
本发明实施例是通过以下技术方案实现的:
文本预处理;
构建变长二级变长索引,保存和检索给定文本和字符串中的2-gram位置值;
基于2-gram的任意n-gram频率统计。
本发明实施例还提供一种任意大小n-gram频率统计装置,包括:文本预处理模块,索引生成模块,频率计算模块。其中:
文本预处理模块,切分给定的文本和字符串,得到2-gram,将2-gram中的汉字(GB2312-80)映射到从0开始的连续整数空间;
索引生成模块,将得到的2-gram位置值信息存储到变长二级变长索引中;
频率计算模块,根据不同的n值,对n-gram进行2-gram切分。从索引中检索相关2-gram位置值列表,通过并集或交集运算得到其位置值列表,从而得到其使用频率。
由上述本发明例的具体技术实施方案可以看出,本发明实施例对n-gram的统计都是建立在2-gram索引基础之上的。在变长二级变长索引中保存给定文本和字符串中所有出现过的2-gram的入口,消除了很大一部分数据稀疏的情况,节省了存储空间。同时,相邻索引入口对应的汉字编码的连续性得到了保证,可以实现对2-gram的高效检索。
任意n-gram的统计值计算,通过对索引中相关2-gram位置值的交集运算来完成。根据编码规则,所有的位置值在索引中是升序排列的。利用这一特点,可以进行高效率的集合交集运算,以此来实现对任意n-gram统计值的高效计算。
附图说明
图1为本发明实施例预处理流程图
图2为本发明实施例位置值编码图
图3为本发明实施例单级变长索引生成流程图
图4为本发明实施例二级变长索引生成流程图
图5为本发明实施例单级变长索引生成示意图
图6为本发明实施例二级变长索引示意图
具体实施方式
为使本发明的目的、技术方案和优点更加清晰,下面结合附图对本发明实施例所提出的技术方案进行详细说明。
本发明实施例的第一步即文本预处理,参照图1包括如下步骤:
S102:对于给定的文本和字符串,对于其中由GB2312-80中包含的汉字(6763个,占使用率的99.99%)所组成的汉字串,切分成2-gram形式。对于其它任何GB2312-80汉字之外的字符,一律忽略。即本发明例中所处理的2-gram所包含的汉字都是GB2312-80中的汉字。
S104:对给定文本和字符串中的每一个位置赋予一个唯一的编码(64位),如图2所示。
S106:将2-gram中的汉字,根据其在GB2312-80中的编码顺序,映射到[0,6762]空间中。例如,某汉字的双字节内码C=C1C2,其中C1为区码,C2为位码。则映射函数为:
参照图2,对于每个2-gram出现在文件中的位置进行编码。以2-gram中第一个汉字所在位置作为2-gram的位置值。位置值由64位二进制组成。
其中,文件编号从0开始,每读取一个文件,即赋予其一个整数编号,并将文件名与整数的对应关系保存于一个向量中。32位文件编号,意味着最多可表示232(4294967294)个文件。
行号一共20位,文本中的每一个自然段视为一行。20位行号即表示所处理的文本中,每个文本最多可容纳220(1048576)个自然段。
列号一共12位,表示文本的每一行中,最多可容纳212(4096)个字符。
特点:
1、以上编码规模,可以容纳目前的任何一个语料库。
2、64位编码在系统中实际上以一个64位无符号整数保存。通过位运算进行编码和解码。同时,64位整数的大小也代表了不同位置在给定文本和字符串中的先后关系。
参照图3,构建单级变长索引。单级变长索引长度随汉字编码大小变化而改变,每个待处理汉字对应单级变长索引中的一个位置。单级变长索引基本结构为一维向量(变长数组),初始长度为0。其引生成规则如下:
步骤1:对于待处理汉字,根据内码c,计算其映射值h(c);
步骤2:若索引结构长度小于h(c)+1,则在索引末尾追加单元,直至索引长度等于h(c)+1为止,此时索引中最后一个单元即为该汉字对应的位置,回到步骤1;
步骤3:若索引结构长度大于等于h(c)+1,则索引中下标值为h(c)的位置即为该汉字对应的位置;
步骤4:回到步骤1。
如图4所示,在单级变长索引中,依次插入“们”、“好”二字的对应位置。
步骤1:初始状态下,单级变长索引长度为0。按照映射规则,“们”字的内码为C3C7,“好”字的内码为BAC3,h(C3C7)=1824,h(BAC3)=974。
步骤2:“们”字内码映射值为1824>0-1(0为当前长度),则对于长度为0的单级变长索引,连续插入1825个单元,最后一个单元(下标为1824)即为“们”所对应的单元。
步骤3:“好”字的内码映射值为974<1825-1(1825为当前长度),此时不需要在单机索引末尾追加单元。索引中下标为974的单元即为“好”字对应的单元。
采用如上结构的单级变长索引,有如下优点:
1、高效的查找。在汉字内码与索引结构中的入口逻辑地址之间建立起了简单的哈希函数映射对应关系,可以实现在0(1)的时间效率内实现对单个汉字的查找;
2、单级变长索引的长度由所处理的汉字的最大内码决定。在实际应用中,GB2312-80中的汉字,常用的只是少部分,且集中在内码值较低的部分,即单级变长索引的实际长度小于6763,同时保证了给定文本和字符串中所出现汉字在索引中的连续性。
参照图5的流程,可构造二级变长索引。二级变长索引由单级变长索引组成。其中,第一、二级变长索引分别对应2-gram的两个汉字。
参照图6,以2-gram“你好”为例,“你”对应第一级索引,“好”对应第二级变长索引。其中,第一级索引结构数量为1,第二级变长索引数量为第一级索引中非空单元的数量。
采用上述二级变长索引结构,可以在0(1)的时间效率内,实现对2-gram的查找。
采用上述结构的二级变长索引,其优点在于:
1、二级变长索引由单级变长索引构成,单级变长索引在保证0(1)的查找效率的基础上尽可能地缩短了长度;
2、由于单级变长索引可以在0(1)的时间效率内对单个汉字进行查找,由此构建而成的二级变长索引则可保证在0(1)时间效率内对给定文本和字符串中所出现的2-gram进行查找操作;
3、由此构造而成的二级变长索引,其索引入口数量远小于67632,其实际大小由当前所处理的给定文本和字符串规模决定。
n-gram频率的统计
本发明例的主要特点就是可针对任意的n值进行n-gram统计。对于任意的n-gram统计,都是基于2-gram索引进行的。对于n的取值,分三种情况对待:
1、n=1,即统计1-gram的出现频率。
例如,计算“你”字出现的频率,只需获取“你”字出现的位置列表即可。如图6所示,首先在第一级索引中,根据“你”字内码找到对应的位置,即可获取该字对应的所有二级变长索引。将所有对应的二级变长索引所指向的位置值列表求并集,即可得到“你”字在给定文献和字符串中的所有位置列表。如图6所示。
2、n=2,即统计2-gram的出现频率。
例如,计算“你好”的出现频率,只需获取“你好”对应的位置列表即。首先通过“你”字的内码映射值在第一级索引中找到对应位置,再从对应的二级变长索引中找到“好”字的对应位置,即可得到“你好”的位置列表。如图6所示。
3、n>2,即n取1,2之外的任意值时,长度为n的连续汉字串在语料库中的出现频率。对于长度为n的连续字串a1a2......an,处理过程依照如下步骤进行:
步骤1:对长度为n的字串进行连续2-gram切分,得到a1a2,a2a3,......,an-1an;
步骤2:分别对每个2-gram,根据前面所述方法得到它们的位置值列表P(a1a2),P(a2a3),...,P(ak-1ak),共计n-1个位置值列表。其中 即为P(aiai+1)在给定文本和字符串中的位置值列表。
步骤3:对于n-1个位置值列表,按照其包含位置值的数量多少,升序排列,得到n-1个位置值列表顺序如下:P′1,P′2,…P′n-1。
步骤4:对于所得到的列表顺序,从左至右进行交集运算,即:
P(a1a2…an)=P′1∩P′2∩…∩P′n-1
对于交集运算,定义如下:
例如,计算3-gram“你们好”的出现频率,按照如下步骤进行:
步骤1:对“你们好”进行2-gram切分,得到对应的2-gram“你们”、“们好”。
步骤2:通过前面所述方法,通过二级变长索引分别得到“你们”、“们好”的位置值列表。
步骤3:对于n=3,切分后的2-gram只有两个,无需排序。
步骤4:对获取到的两个位置值列表进行交集运算,即可得到“你们好”的位置值列表。
综上所述,本发明实施例提供了一种基于2-gram的任意n-gram统计方法和装置,能对给定文本和字符串中的任意长度的n-gram进行检索和统计。本方法能对2-gram索引中的数据稀疏情况进行有效地改善,同时索引的构造方法简单,检索的时间复杂度低。通过利用有序数据集合交集运算高效的特点实现对于任意长度的n-gram进行统计。使用本发明实施例的装置,可以有效地解决任意n-gram统计上的难题,并实现高效率的计算。
以上所述,仅为本发明较佳的具体实施方式。但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种用于信息检索的任意大小n-gram频率统计方法及其装置,其特征在于,包括:
文本预处理单元:对于给定的文本和字符串,对其进行2-gram切分和编码;
索引单元:将所得2-gram在文本中的位置信息保存到二级变长索引中,以保证对2-gram高效率的存储和检索;
n-gram频率计算单元:在0(1)的时间效率内检索2-gram在给定文本和字符串中的位置信息,计算得到任意长度n-gram统计信息。
2.如权利要求1中所述文本预处理单元,其特征在于,所有属于GB2312-80字符集的汉字根据其内码利用hash函数映射到从0开始的连续整数空间中;
3.如权利要求1中所述文本预处理单元,其特征在于,所有2-gram的位置编码包含了其所在的文件名、文件中的行、列信息,为唯一编码。
4.如权利要求1中所述的索引单元,其特征在于,二级变长索引结构中,每一级索引结构分别对应2-gram中的前后两个汉字;
5.如权利要求1中所述的索引单元,其特征在于,二级变长索引结构中每一级索引结构的长度都是根据当前所处理过的给定文献或字符串中所包含汉字不同而改变的,其当前最大长度取决于对应的2-gram中相应汉字编码对应的最大映射值;
6.如权利要求1中所述索引单元,其特征在于,每一级索引结构中的每个入口位置所对应的逻辑地址都唯一对应了一个GB2312-80字符集中的一个汉字编码,根据汉字编码可以在0(1)的时间效率内定位到对应的位置;
7.如权利要求1中所述n-gram频率计算单元,其特征在于,对于N取任意值(N≠2),可通过求并集(N=1)和交集(N>2)获取对应的地址列表。对于N=2,则可直接获取其地址列表。
8.如权利要求7中所述装置,其特征在于,所有直接获取的位置值列表,其位置值都是升序排列的。
9.如权利要求7中所述装置,其特征在于,交集运算充分利用了位置值升序排列的特性。
10.一种N-gram频率计算装置,其特征在于,包括:文本预处理模块、索引生成模块、频率计算模块,其中:
文本预处理模块,切分给定的文本和字符串,得到2-gram,将2-gram中的两个汉字汉字(GB2312-80)分别映射到从0开始的连续整数空间;
索引生成模块,将得到的2-gram位置值信息保存到二级变长索引中;
频率计算模块,根据不同的n值,用不同的方法计算得到其位置值列表,获取频率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100445470A CN102043775A (zh) | 2009-10-16 | 2009-10-16 | 一种用于信息检索的任意大小n-gram频率统计方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100445470A CN102043775A (zh) | 2009-10-16 | 2009-10-16 | 一种用于信息检索的任意大小n-gram频率统计方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102043775A true CN102043775A (zh) | 2011-05-04 |
Family
ID=43909918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100445470A Pending CN102043775A (zh) | 2009-10-16 | 2009-10-16 | 一种用于信息检索的任意大小n-gram频率统计方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102043775A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064844A (zh) * | 2011-10-20 | 2013-04-24 | 北京中搜网络技术股份有限公司 | 索引装置、索引方法、检索装置、检索方法和检索系统 |
CN112417812A (zh) * | 2020-11-26 | 2021-02-26 | 新智认知数据服务有限公司 | 地址标准化方法、系统及电子设备 |
-
2009
- 2009-10-16 CN CN2009100445470A patent/CN102043775A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064844A (zh) * | 2011-10-20 | 2013-04-24 | 北京中搜网络技术股份有限公司 | 索引装置、索引方法、检索装置、检索方法和检索系统 |
CN112417812A (zh) * | 2020-11-26 | 2021-02-26 | 新智认知数据服务有限公司 | 地址标准化方法、系统及电子设备 |
CN112417812B (zh) * | 2020-11-26 | 2024-05-17 | 新智认知数据服务有限公司 | 地址标准化方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100476800C (zh) | 一种切分索引分词的方法及系统 | |
US7031910B2 (en) | Method and system for encoding and accessing linguistic frequency data | |
EP3238344B1 (en) | Lossless reduction of data by deriving data from prime data elements resident in a content-associative sieve | |
CN107153647B (zh) | 进行数据压缩的方法、装置、系统和计算机程序产品 | |
CN102024047B (zh) | 数据检索方法及装置 | |
Hsu et al. | Space-efficient data structures for top-k completion | |
CN106202172B (zh) | 文本压缩方法及装置 | |
CN104778158A (zh) | 一种文本表示方法及装置 | |
CN102103416B (zh) | 一种汉字输入方法和装置 | |
González González et al. | A compressed text index on secondary memory | |
CN100476824C (zh) | 存储元素的方法与系统及查找元素的方法与系统 | |
Sirén | Sampled longest common prefix array | |
CN102799590A (zh) | 嵌入式电子产品字库、字库生成方法及字库查找方法 | |
Hahn | A new technique for compression and storage of data | |
CN102043775A (zh) | 一种用于信息检索的任意大小n-gram频率统计方法及其装置 | |
Navarro et al. | Faster top-k document retrieval in optimal space | |
Azad et al. | An efficient technique for text compression | |
Lea | Text compression with an associative parallel processor | |
CN105938469B (zh) | 编码存储方法、文本存储数据结构以及文本压缩存储和统计输出方法 | |
WO2010043117A1 (zh) | 一种数字编码方法及其应用 | |
CN103761270B (zh) | 一种串数据词典的有序构造及检索方法 | |
Watanabe et al. | A succinct n-gram language model | |
Klein | Space-and time-efficient decoding with canonical huffman trees | |
Feigenblat et al. | Linear time succinct indexable dictionary construction with applications | |
US11397712B2 (en) | Rapid and robust predicate evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110504 |