CN109800412A - 一种中文分词和大数据信息检索方法及装置 - Google Patents
一种中文分词和大数据信息检索方法及装置 Download PDFInfo
- Publication number
- CN109800412A CN109800412A CN201811505375.8A CN201811505375A CN109800412A CN 109800412 A CN109800412 A CN 109800412A CN 201811505375 A CN201811505375 A CN 201811505375A CN 109800412 A CN109800412 A CN 109800412A
- Authority
- CN
- China
- Prior art keywords
- chinese
- word
- document
- information retrieval
- cutting
- 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
Landscapes
- Machine Translation (AREA)
Abstract
本发明实施例提供一种中文分词和大数据信息检索方法及装置,该中文分词方法包括:获取中文文档;基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。本发明实施例提供的一种中文分词和大数据信息检索方法及装置,能够高效的对中文进行分词,进而在此基础上实现大数据下的高效信息检索。
Description
技术领域
本发明涉及信息检索领域,尤其涉及一种中文分词和大数据信息检索方法及装置。
背景技术
从海量数据中实现高效的检索是目前很多行业的迫切需求,现有的大数据信息检索方法主要有NoSQL技术和全文检索技术。全文检索技术的出现,领导了信息检索领域的一场革命。相对于传统的索引检索,全文检索技术提供了一个更新、更强大的搜索功能。而利用Lucene技术可以为任意一个应用系统添加一个专属于其自身的捜索引擎,该搜索引擎不仅可以搜索到网页信息,还能搜索到系统内部的数据文档信息和数据库中的数据信息。
高效检索的前提是进行准确的分词,在自然语言处理技术中,中文处理技术比西文处理技术要落后很大一段距离,许多西文的处理方法中文不能直接采用,就是因为中文必需有分词这道工序。中文分词是其他中文信息处理的基础,中文分词的准确与否,常常直接影响到对搜索结果的相关度排序,而现有的Lucene技术对西方语言的分词效果远远优于对中文的分词效果。因此现在急需一种中文分词方法以及基于中文分词方法的信息检索方法及系统。
发明内容
本发明实施例为克服上述技术缺陷,提供一种中文分词和大数据信息检索方法及装置。
第一方面,本发明实施例提供一种中文分词方法,包括:
获取中文文档;
基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;
基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
第二方面,本发明实施例提供一种基于上述中文分词方法的大数据信息检索方法,包括:
接收查询请求,根据所述查询请求获取预处理后的信息检索文档;
对所述信息检索文档的西文文档分词得到西文分词,根据第一方面所述中文分词方法对所述信息检索文档的中文文档进行分词,得到中文分词;
将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
第三方面,本发明实施例提供一种中文分词装置,包括:
获取单元,用于获取中文文档;
切分单元,用于基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;
分词单元,用于基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
第四方面,本发明实施例提供一种基于上述中文分词方法的大数据信息检索装置,包括:
接收模块,用于接收查询请求,根据所述查询请求获取预处理后的信息检索文档;
分词模块,用于对所述信息检索文档的西文文档分词得到西文分词,根据第一方面所述中文分词方法对所述信息检索文档的中文文档进行分词,得到中文分词;
检索模块,用于将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
第五方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面或第二方面所述的方法。
第六方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如第一方面或第二方面所述的方法。
本发明实施例提供的一种中文分词和大数据信息检索方法及装置,能够高效的对中文进行分词,进而在此基础上实现大数据下的高效信息检索。
附图说明
图1为本发明实施例提供的一种中文分词方法的流程示意图;
图2为本发明实施例提供的一种大数据信息检索方法的流程示意图;
图3为本发明实施例提供的一种中文分词装置的结构示意图;
图4为本发明实施例提供的一种大数据信息检索装置的结构示意图;
图5为本发明实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
中文分词指的是将一个汉字序列切分成一个个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。
存在中文分词技术,是由于中文在基本文法上有其特殊性,具体表现在:
1.与英文为代表的拉丁语系语言相比,英文以空格作为天然的分隔符,而中文由于继承自古代汉语的传统,词语之间没有分隔。古代汉语中除了连绵词和人名地名等,词通常就是单个汉字,所以当时没有分词书写的必要。而现代汉语中双字或多字词居多,一个字不再等同于一个词。
2.在中文里,“词”和“词组”边界模糊。现代汉语的基本表达单元虽然为“词”,且以双字或者多字词居多,但由于人们认识水平的不同,对词和短语的边界很难去区分。
图1为本发明实施例提供的一种中文分词方法的流程示意图,如图1所示,包括:
步骤11,获取中文文档;
步骤12,基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;
步骤13,基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。
本发明实施例提供的中文分词方法,首先获取信息检索文档中的中文文档,然后基于双数组Trie树算法对中文文档进行切分。
双数组Trie(Double-ArrayTrie)是一种空间复杂度低的Trie树,应用于字符区间大的语言(如中文、日文等)分词领域,由两个整数线性数组构成,一个是base[],另一个是check[],base[]数组中的每个元素相当于Trie树中的1个节点,其值作为转移到下一个状态的基值,check[]的值是当前状态的前1个状态。设数组下标为i,如果base[i],check[i]均为0,表示该位置为空。如果base[i]为负值,表示该状态为词语。check值相当于检验值,用来检验本状态是否存在,例如在状态s,输入变量a,转移到状态t必须满足以下条件:t=base[s]+a,check[t]=s,即check[]数组记录着t状态从哪个状态转换而来。
双数组Trie(Double-Array Trie)结构是Trie结构的压缩形式,仅用两个线性数组来表示Trie树,该结构有效结合了数字搜索树(DigitalSearch Tree)检索时间高效的特点和链式表示的Trie空间结构紧凑的特点。双数组Trie的本质是一个确定有限状态自动机,每个节点代表自动机的一个状态,根据变量不同,进行状态转移,当到达结束状态或无法转移时,完成一次查询操作。在双数组所有键中包含的字符之间的联系都是通过简单的数学加法运算表示,不仅提高了检索速度,而且省去了链式结构中使用的大量指针,节省了存储空间。
举例来说明用双数组Trie构造分词算法词典的过程。假定词表中只有“啊,阿根廷,阿胶,阿拉伯,阿拉伯人,埃及”这几个词。
首先对词表中所有出现的10个汉字进行编码:啊-1,阿-2,唉-3,根-4,胶-5,拉-6,及-7,廷-8,伯-9,人-10。对于每一个汉字,需要确定一个base值,使得对于所有以该汉字开头的词,在双数组中都能放下。例如,现在要确定“阿”字的base值,假设以“阿”开头的词的第二个字序列码依次为a1,a2,a3……an,必须找到一个值i,使得check[i+a1],check[i+a2]……check[i+an]均为负数。一旦找到了这个i,“阿”的base值就确定为i。用这种方法构建双数组Trie(Double-ArrayTrie),经过四次遍历,将所有的词语放入双数组中,然后再遍历一遍词表,修改base值,本方法用负的base值表示该位置为词语。如果状态i对应某一个词,而且base=0,那么令双数组Trie中叶子节点的base=(-1)*i,如果base的值不是0,那么令可结束状态的base=(-1)*base,为了使这2种状态分明,可结束状态的base值不能等于其数组下标。得到双数组如下:
下标:1 2 3 4 5 6 7 8 9 10 11 12 13 14
base:-1 4 4 0 0 0 0 4 -9 4 -11 -12 -4 -14
check:0 0 0 0 0 0 0 2 2 2 3 8 10 13
词缀为:啊、阿、埃、阿根、阿胶、阿拉埃、阿根廷、阿拉伯、阿拉伯人。
用上述方法生成的双数组,将“啊”,“阿”,“埃”,“阿根”,“阿拉”,“阿胶”,“埃及”,“阿拉伯”,“阿拉伯人”,“阿根廷”均视为状态。每个状态均对应于数组的一个下标。例如设“阿根”的下标为i=8,那么check的内容是“阿”的下标,而base是“阿根廷”的下标的基值。“廷”的序列码为x=8,那么“阿根廷”的下标为base+x=base[8]+8=12。
得到中文字串后,基于双向最大匹配算法对中文字串进行匹配,得到切分后的中文分词。
双向最大匹配算法,包括正向逐字最大匹配算法和逆向逐字最大匹配算法,就是以最大匹配为原则、以双向的切分为方法进行汉字切分。最大匹配原则就是在词库中找到最长匹配字符串作为一个单词。例如“我出生在中华人民共和国”,以最大匹配原则进行分词,分词结果为“我”、“出生”、“在”、“中华人民共和国”,而不是“我”、“出生”、“在”、“中华”、“人民”、“共和国”。
正向逐字最大匹配算法是按照人的自然阅读顺序对一句话进行词库切分,即从前往后进行词匹配。如“中国的首都是北京”这句话,可以如下步骤进行切分:
(1):取出词库中以“中”开头的词;
(2):取出词库中以“中国”开头的词;
(3):取出词库中以“中国的”开头的词;
(4):第三步取词为空,所以分出词“中国”。
(5):对接下来的字符串重复(1)-(5)步骤,直到字符串扫描完毕。
分词完毕之后结果为:“中国”、“的”、“首都”、“是”、“北京”。
正向逐字最大匹配算法也有一定的缺点,例如用正向逐字最大匹配算法切分下面这句话:
“我出生在河北省会”,
按照正向逐字最大匹配为原则进行切分,结果为:“我”、“出生”、“在”、“河北省”、“会”。这显然是不对的。其实在汉语中这样的例子有很多,如:“在野生动物园”(在野、生动、物、园)、“技术和服务”(技术、和服、务)等。所以本发明实施例结合了逆向逐字最大匹配算法。
逆向逐字最大匹配算法在实现上来说和正向逐字最大匹配算法类似,只是词库是逆向词库,对于切分语句的切分顺序为从后往前切。还以“我出生在河北省会”为例,切分步骤如下:
(1):找出反向词库中以“会”为开头的词;
(2):找出反向词库以“会省”为开头的词;
(3):找出反向词库以“会省北”为开头的词;
(4):第三步取词为空,所以取词“会省”;
(5):对接下来的字符串重复(1)-(5)步骤,直到字符串扫描完毕。
分完词之后的结果为“会省”、“北河”、“在”、“生出”、“我”。对结果以及词进行翻转,则结果为“我”、“出生”、“在”、“河北”、“省会”。
可以看到逆向的分词结果较正向的分词结果更为准确。但是这个准确并非是分词算法上有了提高,仅仅是因为利用了汉语的习惯而已。既然使用了相同的算法,所以逆向切分的缺点跟正向的相同,如对“长春药店”就有可能分出“长”、“春药店”这样的词。
最大匹配算法流程为:
(1)初始化当前指针Pi指向所输入字符串的指定初始位置;
(2)计算当前指针Pi到字符串末端的字数(即未被切分字串的长度)n。如果n=1,设置m等于词典中最长词的字数,如果n<m,则令m=n;
(3)从当前指针Pi起取m个汉字作为词Wi,作出以下判断:
判断1:如果Wi确实是词典中的词,则在Wi后添加一个切分标志,转到判断3;
判断2:如果Wi不是词典中的词且Wi的长度大于1,将Wi从末端去掉一个字,转到判断1;否则(即Wi的长度等于1),在Wi后添加一个切分标志,将Wi作为单字词添加到词典中,执行判断3;
判断3:根据Wi的长度修改指针Pi的位置,如果Pi指向字符串尾端,转到步骤(4),否则,i=i+1,返回1;
(4)输出切分结果,结束分词过程。
本发明实施例采用双向最大匹配算法。双向最大匹配算法就是使用正向逐字最大匹配算法一次、逆向逐字最大匹配算法一次,从而提高了分词的准确性。
本发明实施例提供的中文分词方法,基于双数组Trie树算法和双向最大匹配算法,能够高效准确的对中文进行分词,直接影响到对搜索结果的相关度排序,进而在此基础上实现大数据下的高效信息检索。
在上述实施例的基础上,针对所述中文字串中的未登录词,所述方法还包括:
根据文本规则对所述未登录词进行分词,得到分词结果;
基于N-Gram算法,根据所述分词结果进行N-Gram统计,根据统计结果组成gram;
对所述gram进行频率统计,将符合频率阈值的gram进行停用词过滤,得到最终新词;
根据所述最终新词更新动态词典,所述动态词典用于存储所述未登录词。
所述方法还包括:
若所述动态词典的任一动态词在预设时间内查询命中,则更新所述动态词的生存时间;
否则,所述动态词失效。
N-gram是计算机语言学和概率论范畴内的概念,是指给定的一段文本或语音中N个项目(item)的序列。项目(item)可以是音节、字母、单词或碱基对。通常N-grams取自文本或语料库。
N=1时称为unigram,N=2称为bigram,N=3称为trigram,以此类推。
举例来说:将“informationretrieval”视为一段文本,它的5-grams的items依次为:
Infor,nform,forma,ormat,rmati,matio,ation,tion,ionr,onre,nret,retr,retri,etrie,triev,rieva,ieval
未登录词识别的方法为:
(1)首先根据文本规则(Text Normalization Analyzer,以下简称TN-Analyzer)对文本进行分词进行分词;
(2)得到的每一个分句的分词结果再进行N-Gram统计,注意这里不同词元不能跨越分句组成gram,实现的是基于分词结果的N-Gram算法;
(3)对所有gram进行频率统计,将符合频率阈值的gram进行停用词过滤得到最终的新词;
(4)发送给TN-Analyzer更新动态词典。
对于未登录词识别模块产生的动态词典而言,不断增加的新词会使它越来越大,所以动态词典中的关键词必须拥有一个静态词典中的词元没有的属性——生存时间。动态词初始生存时间为一个月,当查询时命中则更新生存时间,也就是说如果分词系统一个月没没有遇到该词,则认为该词失效,下次更新词典时删除。
本发明实施例提供的中文分词方法,基于双数组Trie树算法和双向最大匹配算法,能够高效准确的对中文进行分词,直接影响到对搜索结果的相关度排序,进而在此基础上实现大数据下的高效信息检索。
图2为本发明实施例提供的一种大数据信息检索方法的流程示意图,如图2所示,包括:
步骤21,接收查询请求,根据所述查询请求获取预处理后的信息检索文档;
步骤22,对所述信息检索文档的西文文档分词得到西文分词,根据所述中文分词方法对所述信息检索文档的中文文档进行分词,得到中文分词;
步骤23,将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
首先获取查询请求,根据查询请求获取预处理后的信息检索文档。
在所述获取预处理后的信息检索文档之前,所述方法还包括:
获取信息检索文档;
解析所述信息检索文档,将所述信息检索文档转化为Lucene支持的格式,得到所述预处理后的信息检索文档。
获取到信息检索文档后,对信息检索文档进行解析处理,将信息检索文档转化成Lucene支持的格式,为建立索引做好准备。Lucene中有一个Document类,Document对象封装了信息检索文档的文本信息,Lucene可以为Document对象建立索引。因此,不需要将非纯文本格式的文档转化成纯文本文挡,只需使用不同的工具和组件将送些文挡的文本内容提取出来,转化为Document对象即可。对于PDF文件可以使用PDFBox和xpd,Word文档可以使用POI工具包。通过相对应的文档解析,即可以获得信息检索文档的基本内容。
采用一个基于双数组Trie前缀匹配的全切分方法,在切分过程中保存一个Hit列表,表示当前存在的前缀状态,当移动一个字之后,将之前所有在Hit列表中的状态加上这个字进行状态转移,转移后的状态如果是某个词的结尾则输入该词到结果列表,如果该状态仍为其他状态的前缀,则在Hit列表中保留,否则从列表中删除。
针对检索对象中存在的大量中文,提出一种基于双数组Trie树实现的词典和基于规则的歧义消除,基于N-Gram算法识别并动态更新未登录词的中文分词算法。在匹配同时使用了逆向最大匹配法和正向最大匹配法相结合的方法,双向逐字匹配。
根据组成汉语的句子的词元的特征,针对一个句子片段的全切分路径,选取一条路径的规则如下,以下规则按顺序使用,前一条规则无法选定的情况下使用下一条规则:
(1)路径中词元跨度PathLen越大越好;
(2)词元个数N越少越好;
(3)定义路径的词元长度平均程度LenAgg,平均程度越大越好;
其中LenAgg计算公式为:
wi表示词典中的词。
(4)定义路径的词元位置权重LenWeight,词元位置权重越大越好。
其中LenWeight计算公式为:
未登录词识别的方法为:
(1)首先根据文本规则(Text Normalization Analyzer,以下简称TN-Analyzer)对文本进行分词进行分词;
(2)得到的每一个分句的分词结果再进行N-Gram统计,注意这里不同词元不能跨越分句组成gram,实现的是基于分词结果的N-Gram算法;
(3)对所有gram进行频率统计,将符合频率阈值的gram进行停用词过滤得到最终的新词;
(4)发送给TN-Analyzer更新动态词典。
对于未登录词识别模块产生的动态词典而言,不断增加的新词会使它越来越大,所以动态词典中的关键词必须拥有一个静态词典中的词元没有的属性——生存时间。动态词初始生存时间为一个月,当查询时命中则更新生存时间,也就是说如果分词系统一个月没没有遇到该词,则认为该词失效,下次更新词典时删除。
双向最大匹配算法,包括正向逐字最大匹配算法和逆向逐字最大匹配算法,就是以最大匹配为原则、以双向的切分为方法进行汉字切分。最大匹配原则就是在词库中找到最长匹配字符串作为一个单词。
查询请求主要包含两部分,一部分为查询词,另一部分为查询选项。其中查询词解析包含查询词的分词和查询类型的解析,将解析后的查询词构造成查询语法树。本发明实施例使用特定的符号支持丰富的查询类型,使用“+”或“-”支持布尔查询,通配符支持通配符查询,使用“~”支持模糊查询,使用“^”支持前缀查询。查询选项是指查询的数据类型和查询的审计日志的日期范围,默认情况下是检索所有门类和所有查询日期。
本发明实施例提供的基于上述中文分词方法的大数据信息检索方法,基于Lucene技术对西文分词,基于双数组Trie树算法和双向最大匹配算法,能够高效准确的对中文进行分词,直接影响到对搜索结果的相关度排序,进而在此基础上实现大数据下的高效信息检索。
在上述实施例的基础上,在接收查询请求之后,所述方法还包括:
若判断获知之前存在相同的查询请求,且所述查询请求的查询范围已缓存,则直接使用之前的查询结果作为此次信息检索的结果。
本发明实施例提供的信息检索方法,在接收到查询请求后,还能判断是否存在之前相同的查询请求,如果存在而且新的查询请求的翻页范围包含在缓存结果的范围中,则直接使用之前的结果。可使用Redis集群提供高可用的内存缓存服务,该集群能进行分布式部署,满足了高可用性和可扩展性的要求。
本发明实施例提供的基于上述中文分词方法的大数据信息检索方法,基于Lucene技术对西文分词,基于双数组Trie树算法和双向最大匹配算法,能够高效准确的对中文进行分词,直接影响到对搜索结果的相关度排序,进而在此基础上实现大数据下的高效信息检索。
图3为本发明实施例提供的一种中文分词装置的结构示意图,如图3所示,包括获取单元31、切分单元32和分词单元33,其中:
获取单元31用于获取中文文档;
切分单元32用于基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;
分词单元33用于基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
首先获取单元31获取中文文档,然后切分单元32基于双数组Trie树算法对中文文档进行切分。
双数组Trie(Double-ArrayTrie)是一种空间复杂度低的Trie树,应用于字符区间大的语言(如中文、日文等)分词领域,由两个整数数组构成,一个是base[],另一个是check[]。设数组下标为i,如果base[i],check[i]均为0,表示该位置为空。如果base[i]为负值,表示该状态为词语。check[i]表示该状态的前一状态,t=base[i]+a,check[t]=i。
最后,分词单元33基于双向最大匹配算法对中文字串进行匹配,得到切分后的中文分词。
双向最大匹配算法,包括正向逐字最大匹配算法和逆向逐字最大匹配算法,就是以最大匹配为原则、以双向的切分为方法进行汉字切分。最大匹配原则就是在词库中找到最长匹配字符串作为一个单词。正向逐字最大匹配算法其实就是按照人得自然阅读顺序对一句话进行词库切分,即从前往后进行词匹配。逆向逐字最大匹配算法在实现上来说和正向逐字最大匹配算法类似,只是词库是逆向词库,对于切分语句的切分顺序为从后往前切。
因为正向逐字最大匹配算法以及逆向逐字最大匹配算法的缺点,本发明实施例采用双向最大匹配算法。双向最大匹配算法就是使用正向逐字最大匹配算法一次、逆向逐字最大匹配算法一次。
本发明实施例提供的装置是用于执行上述方法实施例的,具体方法和流程参见上述方法实施例,此处不再赘述。
本发明实施例提供的中文分词装置,基于双数组Trie树算法和双向最大匹配算法,能够高效准确的对中文进行分词,直接影响到对搜索结果的相关度排序,进而在此基础上实现大数据下的高效信息检索。
图4为本发明实施例提供的一种大数据信息检索装置的结构示意图,如图4所示,包括接收模块41、分词模块42和检索模块43,其中:
接收模块41用于接收查询请求,根据所述查询请求获取预处理后的信息检索文档;
分词模块42用于对所述信息检索文档的西文文档分词得到西文分词,根据所述中文分词方法对所述信息检索文档的中文文档进行分词,得到中文分词;
检索模块43用于将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
首先接收模块41获取查询请求,根据查询请求获取预处理后的信息检索文档。
在所述获取预处理后的信息检索文档之前,所述方法还包括:
获取信息检索文档;
解析所述信息检索文档,将所述信息检索文档转化为Lucene支持的格式,得到所述预处理后的信息检索文档。
获取到信息检索文档后,对信息检索文档进行解析处理,将信息检索文档转化成Lucene支持的格式,为建立索引做好准备。Lucene中有一个Document类,Document对象封装了信息检索文档的文本信息,Lucene可以为Document对象建立索引。因此,不需要将非纯文本格式的文档转化成纯文本文挡,只需使用不同的工具和组件将送些文挡的文本内容提取出来,转化为Document对象即可。对于PDF文件可以使用PDFBox和xpd,Word文档可以使用POI工具包。通过相对应的文档解析,即可以获得信息检索文档的基本内容。
分词模块42采用一个基于双数组Trie前缀匹配的全切分方法,在切分过程中保存一个Hit列表,表示当前存在的前缀状态,当移动一个字之后,将之前所有在Hit列表中的状态加上这个字进行状态转移,转移后的状态如果是某个词的结尾则输入该词到结果列表,如果该状态仍为其他状态的前缀,则在Hit列表中保留,否则从列表中删除。
针对检索对象中存在的大量中文,分词模块42采用一种基于双数组Trie树实现的词典和基于规则的歧义消除,基于N-Gram算法识别并动态更新未登录词的中文分词算法。在匹配同时使用了逆向最大匹配法和正向最大匹配法相结合的方法,双向逐字匹配。
根据组成汉语的句子的词元的特征,针对一个句子片段的全切分路径,选取一条路径的规则如下,以下规则按顺序使用,前一条规则无法选定的情况下使用下一条规则:
(1)路径中词元跨度PathLen越大越好;
(2)词元个数N越少越好;
(3)定义路径的词元长度平均程度LenAgg,平均程度越大越好;
其中LenAgg计算公式为:
wi表示词典中的词
(4)定义路径的词元位置权重LenWeight,词元位置权重越大越好。
其中LenWeight计算公式为:
未登录词识别的方法为:
(1)首先根据文本规则(Text Normalization Analyzer,以下简称TN-Analyzer)对文本进行分词进行分词;
(2)得到的每一个分句的分词结果再进行N-Gram统计,注意这里不同词元不能跨越分句组成gram,实现的是基于分词结果的N-Gram算法;
(3)对所有gram进行频率统计,将符合频率阈值的gram进行停用词过滤得到最终的新词;
(4)发送给TN-Analyzer更新动态词典。
对于未登录词识别模块产生的动态词典而言,不断增加的新词会使它越来越大,所以动态词典中的关键词必须拥有一个静态词典中的词元没有的属性——生存时间。动态词初始生存时间为一个月,当查询时命中则更新生存时间,也就是说如果分词系统一个月没没有遇到该词,则认为该词失效,下次更新词典时删除。
双向最大匹配算法,包括正向逐字最大匹配算法和逆向逐字最大匹配算法,就是以最大匹配为原则、以双向的切分为方法进行汉字切分。最大匹配原则就是在词库中找到最长匹配字符串作为一个单词。
查询请求主要包含两部分,一部分为查询词,另一部分为查询选项。其中查询词解析包含查询词的分词和查询类型的解析,将解析后的查询词构造成查询语法树。检索模块43查询词的分词使用特定的符号支持丰富的查询类型,使用“+”或“-”支持布尔查询,通配符支持通配符查询,使用“~”支持模糊查询,使用“^”支持前缀查询。查询选项是指查询的数据类型和查询的审计日志的日期范围,默认情况下是检索所有门类和所有查询日期。
本发明实施例提供的基于上述中文分词方法的大数据信息检索装置,基于Lucene技术对西文分词,基于双数组Trie树算法和双向最大匹配算法,能够高效准确的对中文进行分词,直接影响到对搜索结果的相关度排序,进而在此基础上实现大数据下的高效信息检索。
图5为本发明实施例提供的一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和总线540,其中,处理器510,通信接口520,存储器330通过总线540完成相互间的通信。总线540可以用于电子设备与传感器之间的信息传输。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:获取中文文档;基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
或,接收查询请求,根据所述查询请求获取预处理后的信息检索文档;对所述信息检索文档的西文文档,根据Luccene技术进行分词得到西文分词,根据所述信息检索文档的中文文档得到中文分词;将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述实施例所提供的方法,例如包括:获取中文文档;基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
或,接收查询请求,根据所述查询请求获取预处理后的信息检索文档;对所述信息检索文档的西文文档,根据Luccene技术进行分词得到西文分词,根据所述信息检索文档的中文文档得到中文分词;将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
以上所述仅为本发明的优选实施例,并不用于限制本发明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充,但并不会偏离本发明的精神或者超越所附权利要求书定义的范围。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种中文分词方法,其特征在于,包括:
获取中文文档;
基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;
基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
2.根据权利要求1所述的方法,其特征在于,针对所述中文字串中的未登录词,所述方法还包括:
根据文本规则对所述未登录词进行分词,得到分词结果;
基于N-Gram算法,根据所述分词结果进行N-Gram统计,根据统计结果组成gram;
对所述gram进行频率统计,将符合频率阈值的gram进行停用词过滤,得到最终新词;
根据所述最终新词更新动态词典,所述动态词典用于存储所述未登录词。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述动态词典的任一动态词在预设时间内查询命中,则更新所述动态词的生存时间;
否则,所述动态词失效。
4.一种大数据信息检索方法,其特征在于,包括:
接收查询请求,根据所述查询请求获取预处理后的信息检索文档;
对所述信息检索文档的西文文档分词得到西文分词,根据权利要求1-3任一项所述中文分词方法对所述信息检索文档的中文文档进行分词,得到中文分词;
将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
5.根据权利要求4所述的方法,其特征在于,在所述获取预处理后的信息检索文档之前,所述方法还包括:
获取信息检索文档;
解析所述信息检索文档,将所述信息检索文档转化为Lucene支持的格式,得到所述预处理后的信息检索文档。
6.根据权利要求4或5所述的方法,其特征在于,在接收查询请求之后,所述方法还包括:
若判断获知之前存在相同的查询请求,且所述查询请求的查询范围已缓存,则直接使用之前的查询结果作为此次信息检索的结果。
7.一种中文分词装置,其特征在于,包括:
获取单元,用于获取中文文档;
切分单元,用于基于双数组Trie树算法对所述中文文档进行切分,得到中文字串;
分词单元,用于基于双向最大匹配算法对所述中文字串进行匹配,得到切分后的中文分词。
8.一种大数据信息检索装置,其特征在于,包括:
接收模块,用于接收查询请求,根据所述查询请求获取预处理后的信息检索文档;
分词模块,对所述信息检索文档的西文文档分词得到西文分词,根据权利要求1-3任一项所述中文分词方法对所述信息检索文档的中文文档进行分词,得到中文分词;
检索模块,用于将所述西文分词和所述中文分词构造成查询语法树,根据所述查询语法树和查询类型,进行信息检索。
9.一种电子设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811505375.8A CN109800412A (zh) | 2018-12-10 | 2018-12-10 | 一种中文分词和大数据信息检索方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811505375.8A CN109800412A (zh) | 2018-12-10 | 2018-12-10 | 一种中文分词和大数据信息检索方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109800412A true CN109800412A (zh) | 2019-05-24 |
Family
ID=66556552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811505375.8A Pending CN109800412A (zh) | 2018-12-10 | 2018-12-10 | 一种中文分词和大数据信息检索方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800412A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650839A (zh) * | 2021-01-12 | 2021-04-13 | 深圳市鹰硕技术有限公司 | 检索信息优化方法以及装置 |
CN113033193A (zh) * | 2021-01-20 | 2021-06-25 | 山谷网安科技股份有限公司 | 一种基于c++语言的混合型中文文本分词方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706807A (zh) * | 2009-11-27 | 2010-05-12 | 清华大学 | 一种中文网页新词自动获取方法 |
CN102467537A (zh) * | 2010-11-10 | 2012-05-23 | 腾讯科技(深圳)有限公司 | 删除词汇的方法和装置 |
CN102831194A (zh) * | 2012-08-03 | 2012-12-19 | 人民搜索网络股份公司 | 一种基于查询日志的新词自动查找系统和方法 |
CN102955825A (zh) * | 2011-08-30 | 2013-03-06 | 北京搜狗科技发展有限公司 | 一种更新输入法词库的方法及系统 |
CN102982099A (zh) * | 2012-11-05 | 2013-03-20 | 西安邮电大学 | 一种个性化并行分词处理系统及其处理方法 |
CN103198079A (zh) * | 2012-01-06 | 2013-07-10 | 北大方正集团有限公司 | 相关搜索的实现方法和装置 |
CN105279150A (zh) * | 2015-10-27 | 2016-01-27 | 江苏电力信息技术有限公司 | 一种基于lucene全文检索的中文分词方法 |
CN106294695A (zh) * | 2016-08-08 | 2017-01-04 | 深圳市网安计算机安全检测技术有限公司 | 一种面向实时大数据搜索引擎的实现方法 |
CN108228743A (zh) * | 2017-12-18 | 2018-06-29 | 深圳供电局有限公司 | 一种实时大数据搜索引擎系统 |
CN108388635A (zh) * | 2018-02-24 | 2018-08-10 | 杭州朗和科技有限公司 | 数据搜索方法、装置、介质和计算设备 |
-
2018
- 2018-12-10 CN CN201811505375.8A patent/CN109800412A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706807A (zh) * | 2009-11-27 | 2010-05-12 | 清华大学 | 一种中文网页新词自动获取方法 |
CN102467537A (zh) * | 2010-11-10 | 2012-05-23 | 腾讯科技(深圳)有限公司 | 删除词汇的方法和装置 |
CN102955825A (zh) * | 2011-08-30 | 2013-03-06 | 北京搜狗科技发展有限公司 | 一种更新输入法词库的方法及系统 |
CN103198079A (zh) * | 2012-01-06 | 2013-07-10 | 北大方正集团有限公司 | 相关搜索的实现方法和装置 |
CN102831194A (zh) * | 2012-08-03 | 2012-12-19 | 人民搜索网络股份公司 | 一种基于查询日志的新词自动查找系统和方法 |
CN102982099A (zh) * | 2012-11-05 | 2013-03-20 | 西安邮电大学 | 一种个性化并行分词处理系统及其处理方法 |
CN105279150A (zh) * | 2015-10-27 | 2016-01-27 | 江苏电力信息技术有限公司 | 一种基于lucene全文检索的中文分词方法 |
CN106294695A (zh) * | 2016-08-08 | 2017-01-04 | 深圳市网安计算机安全检测技术有限公司 | 一种面向实时大数据搜索引擎的实现方法 |
CN108228743A (zh) * | 2017-12-18 | 2018-06-29 | 深圳供电局有限公司 | 一种实时大数据搜索引擎系统 |
CN108388635A (zh) * | 2018-02-24 | 2018-08-10 | 杭州朗和科技有限公司 | 数据搜索方法、装置、介质和计算设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650839A (zh) * | 2021-01-12 | 2021-04-13 | 深圳市鹰硕技术有限公司 | 检索信息优化方法以及装置 |
CN113033193A (zh) * | 2021-01-20 | 2021-06-25 | 山谷网安科技股份有限公司 | 一种基于c++语言的混合型中文文本分词方法 |
CN113033193B (zh) * | 2021-01-20 | 2024-04-16 | 山谷网安科技股份有限公司 | 一种基于c++语言的混合型中文文本分词方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8745065B2 (en) | Query parsing for map search | |
US7424421B2 (en) | Word collection method and system for use in word-breaking | |
CN101464898B (zh) | 一种提取文本主题词的方法 | |
US8055498B2 (en) | Systems and methods for building an electronic dictionary of multi-word names and for performing fuzzy searches in the dictionary | |
CN107918604B (zh) | 一种中文的分词方法及装置 | |
CN101976253B (zh) | 一种中文变异文本匹配识别方法 | |
US8914385B2 (en) | Search device and search program | |
US20120130705A1 (en) | Text segmentation with multiple granularity levels | |
US20100235780A1 (en) | System and Method for Identifying Words Based on a Sequence of Keyboard Events | |
US20140298168A1 (en) | System and method for spelling correction of misspelled keyword | |
CN106557777B (zh) | 一种基于SimHash改进的Kmeans文档聚类方法 | |
CN102662936B (zh) | 融合Web挖掘、多特征与有监督学习的汉英未登录词翻译方法 | |
JP2001034623A (ja) | 情報検索方法と情報検索装置 | |
JP2005267638A (ja) | 改善されたスペルチェックのためのシステムおよび方法 | |
CN101794307A (zh) | 基于互联网分词思想的车载导航poi搜索引擎 | |
CN109918664B (zh) | 分词方法和装置 | |
Hull et al. | An integrated algorithm for text recognition: comparison with a cascaded algorithm | |
CN109800412A (zh) | 一种中文分词和大数据信息检索方法及装置 | |
CN112800769A (zh) | 命名实体识别方法、装置、计算机设备和存储介质 | |
WO2020037794A1 (zh) | 一种英文地名的索引建立方法及其查询方法和装置 | |
CN104331401A (zh) | 一种翻译方法及系统 | |
JPWO2009048149A1 (ja) | 電子文書の同等判定システムおよび同等判定方法 | |
CN107229611B (zh) | 一种基于词对齐的历史典籍分词方法 | |
JP4108337B2 (ja) | 電子ファイリングシステム及びその検索インデックス作成方法 | |
CN108776705B (zh) | 一种文本全文精确查询的方法、装置、设备及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |