System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 字词频度统计方法及装置制造方法及图纸_技高网

字词频度统计方法及装置制造方法及图纸

技术编号:40047189 阅读:4 留言:0更新日期:2024-01-16 20:38
本发明专利技术涉及一种字词频度统计方法及装置,属于信息处理及数据统计的技术领域,该发明专利技术的方法包括步骤:设置一个链表数组结构保存的索引表,用于保存字词集中每一字词条目在整个语料库中的出现次数;通过哈希函数计算每一字词条目的码值,将其作为结构化搭建索引表时的数组下标地址;读取整个语料库,使用与前述相同的哈希函数规则计算每一文本字串的码值,并将其与索引表中对应数组元素所指示一个链表内各结点保存的字词条目进行对比,若相同则其对应的统计次数加1;最后根据索引表中各链表结点数据导出字词频度统计结果。本发明专利技术适用于文字教学、字词检索等相关技术领域中尤其是在大语料库、较多字词统计条目数量情形下字词频度统计的应用场景。

【技术实现步骤摘要】

本专利技术涉及一种字词频度统计方法及装置,属于信息处理和数据统计的。


技术介绍

1、对字词频度的统计分析,尤其是在中文环境中,通过揭示汉语词汇的各种统计特性,可以使人们对每个汉字或词语在实际应用中的地位有一个比较清楚的认识,对于社会各个方面的汉语使用都具有很大的指导作用。比如,在少儿的语文教育、特殊人群的语言学习或者针对外国人的汉语教学中,课程要完成一定数量的字词教学任务,那么在一定的时期内应该完成哪些中文字词的学习才能达到预期效果,以解决最常用文字的阅读和使用,最大可能地掌握语言驾驭能力具有显而易见的作用;再如,在现代海量文本信息的处理中,为提高中文语境中字词检索的效率,往往也需要对中文字词的频度进行精准地统计,以便进一步生成相应的词云图、频率表等数据分析结果,这对于基于文本的全文检索效率以及互联网搜索引擎的检索效率均具有重大意义。以上举例的情景中,这就必须运用字词频度的统计成果作指导,增加其科学性和实用性,避免主观臆测。我国也早在20世纪20年代就进行过汉语词汇的统计研究,自70年代末以来,我国开始利用计算机进行汉语词汇的自动统计和分析,而且统计单位也从单字扩展到了词语,大大地提高了统计的效率和规模,将汉语词汇统计研究提高到一个新的水平,还以此为基础编制了各种频率词典、词表,并对现代汉语的常用字、常用词、构词规则等进行了多方面的研究。总之,在文本语料信息海量的情况下,如何以较少的算力资源消耗、快速获取字词频度统计结果是一项非常重要的工作。

2、目前,对于给定的字词集和语料库,统计字词集中每一单字和词语在整个语料库内所有文档文本中的出现次数,通常的技术解决思路是,将字词集中的每个单字和词语线性化地排列为相应条数的记录,然后针对字词集中的每个单字或词语,在语料库内的所有文档文本中检索其出现次数,最后汇总数据,导出作为统计对象的、字词集中每个单字或词语在整个语料库中出现次数的报表。为实现上述方案思路,一种典型的字词频度统计方法是,字词集所涉及的所有字词条目及其统计次数分别以字串数组和整型数组的线性结构存储,在进行字词频度的统计时,依次读取字串数组中存储的每一数组元素,即作为统计对象的字词集中的每一字词条目,并且对于每一字词条目,都需要遍历整个语料库中所有的文档文本一次,通过与文档文本内的字串进行对比的方法,统计出作为统计对象的一个字词条目在语料库中的出现总次数,直至字词集中的所有字词条目在整个语料库中各自出现总次数统计完毕,并将之记录在整型数组的对应位置作为任务输出结果,整型数组中每一数组元素分别代表字串数组对应位序存储的一个字词条目的出现次数,显然上述技术方案所消耗的时间复杂度t(m*n)=o(m*n),这里的m、n分别代表语料库和字词集的规模大小(下同),由于语料库的规模m和字词集的规模n通常都较大,因此字词频度统计的工作将十分繁重。作为本领域技术人员很容易想到的一种优化方案是,字词集所涉及的所有字词条目在字串数组中以字典顺序排列,在进行字词频度的统计时,在语料库中的所有文档文本内,由文档文本的首字符开始,依次读取各字符位置开始且不同长度的多个不同字串,然后针对所读取的每一个字串,均遍历整个字词集以读取其中的所有字词条目,当所读取的一个文档字串与字词集中的某个单字或词语匹配时,则该单字或词语对应的统计总次数加1,最终语料库中的所有文档文本读取完毕,字词频度统计工作也完成,由于在遍历字词集时,其中的所有字词条目以字典顺序方式排列,在字词集中完全可以采取折半查找的方式进行匹配运算,这使得字词频度统计的整体效率有了提升,该进一步优化的技术解决方案所消耗的时间复杂度从而由t(m*n)=o(m*n)降低为t(m*n)=o(m*log2n)。但其中的问题是,在实践中为了避免字词频度统计结果的片面性,语料库的规模m必须要远大于字词集的规模n,因此上述优化方案对于字词频度统计的效率改善非常有限。导致现有技术中前述两种典型解决方案效率不尽人意的原因,可以归结为字词集中各单字和词语存储结构的设计上,若能对其作出合理布局并针对性地采取更加合理的算法,字词频度统计效率仍存在较大的提高空间,这也正是提出本专利技术技术方案的出发点所在。


技术实现思路

1、本专利技术所要解决的技术问题是,对于给定的语料库和字词集,尤其是在二者数量规模较大的情况下,如何以较高的效率,统计字词集中每一字词条目在整个语料库中各自出现的总次数,其目的是在字词频度统计的
提供一种较为满意的技术解决方案,以便进一步地将其应用于文字教学、字词检索等的相关

2、为了解决上述提出的技术问题,本专利技术提供了一种字词频度统计方法和装置,并采取如下技术方案:

3、第一方面,本专利技术提供了一种字词频度统计方法,统计字词集中每一个字词条目在整个语料库中各自出现的总次数,所述方法包括:

4、步骤s1:设置一个链表数组结构存储的索引表index[],其中每个数组元素均对应存储一个线性链表的头指针并初始化取值为null,所述线性链表内的各结点均包括用于存储所述字词集中所述一个字词条目的字串s、用于存储所述一个字词条目在所述整个语料库中出现次数的数值t和当前结点之后继结点存储位置的指针n这三个域;

5、步骤s2:针对所述字词集中的所述每一个字词条目,首先利用哈希函数计算其码值c1,然后新创建一个结点并将该结点的字串域s赋值为所述一个字词条目、数值域t赋值为0,最后将该结点插入由数组元素index[c1]所指示的一条线性链表中,所述哈希函数为c1=hash(u1,u2,u3……ui),式中c1为非负整数,i为所述一个字词条目构成中的字符数量,i的最大值即所述字词集中每一字词条目内字符构成数量的最大值记为l,u1、u2、u3……ui为所述一个字词条目内依次构成中各字符表示的二进制unicode编码中部分数位所对应的数值;

6、步骤s3:扫描所述整个语料库中每一文件的文本,针对其中连续字符构成数量不超过所述l的所有文本字串,首先利用与前面相同的哈希函数规则,计算这些文本字串的非负整数码值c2,然后针对其中每一文本字串及其对应计算的码值c2,均依次读取数组元素index[c2]所指示一个线性链表中的各结点,若结点中s域内的字串与该每一文本字串对比完全相同,则该结点中的t域数值增加1;

7、步骤s4:针对所述索引表index[]中各非null值数组元素所指示的线性链表,依次读取并输出其中每一结点内的s域字串和t域数值,其中s域字串构成作为频度统计对象的所述一个字词条目,t域数值对应构成其在所述整个语料库中出现的总次数。

8、优选地,所述索引表index[]的下标编址范围为0~65535,所述c1和所述c2均为大于等于0且小于65536的整数,所述步骤s2中二进制unicode编码中部分数位所对应的数值为所述二进制unicode编码中低16位所对应的数值。

9、优选地,所述c1=hash(u1,u2,u3……ui)的计算规则是c1=u1+u2+u3+……+ui,并且当由该计算规则所计算产生的结本文档来自技高网...

【技术保护点】

1.一种字词频度统计方法,统计字词集中每一个字词条目在整个语料库中各自出现的总次数,其特征在于,所述方法包括:

2.根据权利要求1所述的字词频度统计方法,其特征在于,所述索引表Index[]的下标编址范围为0~65535,所述C1和所述C2均为大于等于0且小于65536的整数,所述步骤S2中二进制Unicode编码中部分数位所对应的数值为所述二进制Unicode编码中低16位所对应的数值。

3.根据权利要求2所述的字词频度统计方法,其特征在于,所述C1=Hash(U1,U2,U3……Ui)的计算规则是C1=U1+U2+U3+……+Ui,并且当由该计算规则所计算产生的结果值大于或等于2^16时,则C1调整取值为所述结果值的二进制数值表示中低16位数所对应的数值。

4.根据权利要求2所述的字词频度统计方法,其特征在于,所述C1=Hash(U1,U2,U3……Ui)的计算规则是C1=|U1-U2-U3-……-Ui|,或者C1=|Ui-Ui-1-Ui-2-……-U1|,并且当由该计算规则所计算产生的结果值大于或等于2^16时,则C1调整取值为所述结果值的二进制数值表示中低16位数所对应的数值。

5.根据权利要求1-4中任意一项所述的字词频度统计方法,其特征在于,所述步骤S2中将该结点插入由数组元素Index[C1]所指示的一条线性链表中,其插入方法是,先将该结点中的N指针域赋值为数组元素Index[C1]的数值,然后将数组元素Index[C1]的数值更新为该结点在新创建时所产生的自身保存位置的指针数值。

6.根据权利要求1-4中任意一项所述的字词频度统计方法,其特征在于,在所述步骤S2和所述步骤S3中,还包括字符编码形式转换的子步骤:在利用所述哈希函数计算所述每一个字词条目的码值C1之前以及在利用所述哈希函数计算所述其中每一文本字串的码值C2之前,将所述每一个字词条目和所述其中每一文本字串中所涉各字符的编码,由其他非Unicode形式的编码转化为Unicode形式的编码。

7.根据权利要求1-4中任意一项所述的字词频度统计方法,其特征在于,在所述步骤S4中,还包括计算字词条目频度百分数的子步骤:针对所述字词集中的所述每一个字词条目,将其在所述整个语料库中的出现总次数,除以所述整个语料库中的字符总数,以计算出字词集中每一个字词条目在整个语料库中出现频度的百分数。

8.一种字词频度统计装置,统计字词集中每一个字词条目在整个语料库中各自出现的总次数,其特征在于,所述装置包括:

9.根据权利要求8所述的字词频度统计装置,其特征在于,在所述模块M2和所述模块M3中,还包括字符编码形式转换的子模块,用于:在利用所述哈希函数计算所述每一个字词条目的码值C1之前以及在利用所述哈希函数计算所述其中每一文本字串的码值C2之前,将所述每一个字词条目和所述其中每一文本字串中所涉各字符的编码,由其他非Unicode形式的编码转化为Unicode形式的编码。

10.根据权利要求8所述的字词频度统计装置,其特征在于,在所述模块M4中,还包括计算字词条目频度百分数的子模块,用于:针对所述字词集中的所述每一个字词条目,将其在所述整个语料库中的出现总次数,除以所述整个语料库中的字符总数,以计算出字词集中每一个字词条目在整个语料库中出现频度的百分数。

...

【技术特征摘要】

1.一种字词频度统计方法,统计字词集中每一个字词条目在整个语料库中各自出现的总次数,其特征在于,所述方法包括:

2.根据权利要求1所述的字词频度统计方法,其特征在于,所述索引表index[]的下标编址范围为0~65535,所述c1和所述c2均为大于等于0且小于65536的整数,所述步骤s2中二进制unicode编码中部分数位所对应的数值为所述二进制unicode编码中低16位所对应的数值。

3.根据权利要求2所述的字词频度统计方法,其特征在于,所述c1=hash(u1,u2,u3……ui)的计算规则是c1=u1+u2+u3+……+ui,并且当由该计算规则所计算产生的结果值大于或等于2^16时,则c1调整取值为所述结果值的二进制数值表示中低16位数所对应的数值。

4.根据权利要求2所述的字词频度统计方法,其特征在于,所述c1=hash(u1,u2,u3……ui)的计算规则是c1=|u1-u2-u3-……-ui|,或者c1=|ui-ui-1-ui-2-……-u1|,并且当由该计算规则所计算产生的结果值大于或等于2^16时,则c1调整取值为所述结果值的二进制数值表示中低16位数所对应的数值。

5.根据权利要求1-4中任意一项所述的字词频度统计方法,其特征在于,所述步骤s2中将该结点插入由数组元素index[c1]所指示的一条线性链表中,其插入方法是,先将该结点中的n指针域赋值为数组元素index[c1]的数值,然后将数组元素index[c1]的数值更新为该结点在新创建时所产生的自身保存位置的指针数值。

6.根据权利要求1-4中任意一项所述的字词频度统计方法...

【专利技术属性】
技术研发人员:汉京宁李祥军易斌李乾
申请(专利权)人:江苏瑞宁信创科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1