基于trie和LCS算法的文献分类方法和系统与流程

文档序号:17264437发布日期:2019-03-30 09:54阅读:227来源:国知局

本发明涉及文献分类技术领域,具体是一种基于trie和lcs算法的文献分类方法和系统。



背景技术:

现有技术中没有采用lcs用来分类的文献纪录,以2018年最新的一篇文献“薛炜明,侯霞,李宁,一种基于word2vec的文本分类方法,[j]北京信息科技大学学报,p71-75,vol.33no.1,feb.2018”为参照,文中采用中文新闻文本分类语料,共包含文本2615篇,分为9类,f值最高为89.48%。文中给出的参照方法的效果为,改进的knn的f值为84.15%,传统的knn分类的f值为74.39%,但是该分类方法没有百万量级语料的验证结果。申请号为201510685864.6,专利名称为“确定文本串公共子序列的方法和设备”提供了一种用于在多个文本串中确定最长公共子序列的方法,其中包括将多个文本串分别转换为词序列;对词序列进行分类;以及在每一类中进行最长公共子序列运算,节省lcs运算所需的时间,快速计算lcs,而没有涉及用lcs进行文本快速分类的方法。

以字典为代表的规则分类方法具有语义明确、操作简单的特点,但是有几点困难难以克服:(1)没有字典只有语料的情况,比如问答系统中,问句意图的确认。问句意图的确认本质上是一个句子分类问题,但是由于问句不是书面语言,其表达方式、语序、用词等都不一定规范,很难找到一副分类字典来很好地覆盖所有的现实情况。比如faq问题列表里的问句为“川22井在哪个层?”,而现实中问句为“川22井停在哪个层”;(2)字典太长,但语料一般使用简称的情况,比如“山东美陵化工设备股份有限公司临淄污水净化分公司齐都污水处理厂”,在语料中一般只出现“齐都污水处理厂”这个简称,而“山东美陵化工设备股份有限公司临淄污水净化分公司”几个字一般就省略了。再比如,一般情况下“ab有限责任公司”只采用“ab”简称,而“有限责任公司”省略;(3)字典具有总分结构的特征词,而语料只有部分词的情况。例如字典为“c.i.酸性黄220等36种金属络合型酸性染料”,“不带防寒衬里的工业及职业用棉制男成人长裤、马裤”,“下扬子黄桥、大丰、句容、常州等地区”,“中、下扬子地区”、“中国中、东部地区”、“丙烷等碳同位素”、“常州等地区”;(4)字典具有同名的情况,比如”cf-11(一氟一氯甲烷)”、“三聚氰胺甲醛胶(密胺甲醛树脂、密胺树脂)“、“三(2-氯乙烯基)胂”、“tnt(2,4,6-三硝基甲苯、梯恩梯)”、“三亚亚龙湾开发股份有限公司(亚龙湾污水处理厂)”、“中国平煤神马集团平顶山朝川焦化有限公司(原名:平顶山煤业集团朝川焦化有限公司)”等;(5)中英文混合的情况,英文自带分词空格,而中文分词往往是按照最小粒度进行分割的,而这个最小粒度组合成表达语义的长词时往往会有歧义,尤其在文本有噪声的情况下,比如从pdf转换来的文本。比如“rub'aikhali盆地”、“msc2&msc1界面”等;

总之,字典匹配只有在词的意义独立且唯一的情况下才适用,在遇到字典具有复杂语义的情况下,基于字典匹配的规则方法将会失灵,而复杂语义的字典在现实中是一种更为普遍的存在,因此,需要一种更为有效地方法来解决具有复杂语义字典的规则分类问题。



技术实现要素:

本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。

本发明还有一个目的是提供一种基于trie和lcs算法的文献分类方法和系统,其省略了分词过程,减少了理解歧义,降低了外部噪声的干扰;以稳定的字符串为特征,可以得到和查字典相同的准确度,降低了对上下文的依赖;让计算机对复杂语义进行分析,减少了人的干扰,降低了人的劳动强度;本发明的方法具有普遍性,对于多语言甚至非文字语言如声音的处理,照样适用。为了实现根据本发明的这些目的和其它优点,提供了一种基于trie和lcs算法的文献分类方法,包括以下步骤:

步骤一、预编初始分类字典和初始排除字典,初始分类字典中编排多个类,每个类中设置至少一个字符串,初始排除字典中设置至少一个不属于初始分类字典中的字符串;

步骤二、将初始分类字典中的每一个字符串扩展得到扩展字符串,根据初始排除字典对得到的扩展字符串过滤后构建字典树,其中,扩展字符串包括将每一个字符串分割形成的字符个数为1到n的子字符串,n为对应的字符串的字符总个数;

步骤三、读取待分类文献,调用字典树查找待分类文献中的每一个句子中出现的所有的字符串,对于一个句子,取其中含有的属于初始分类字典中的最长的字符串作为最长公共子序列,最长公共子序列及其对应的类作为该一个句子的最终字符串及最终类,将一篇文献中出现频率最多的最终类作为其所属的类,完成对待分类文献的分类。

优选的是,还包括:

步骤四、步骤三中读取待分类文献后,调用字典树查找待分类文献中的每一个句子中出现的所有字符串,并将新出现的不属于初始排除字典且不同于初始分类字典中的字符串及其对应的类加入到初始分类字典中,形成新的分类字典,将新出现的不属于初始分类字典且不同于初始排除字典中的字符串加入到初始排除字典中,形成新的排除字典。

优选的是,步骤二具体包括以下过程:

s1、根据初始排除字典对每一个字符串以及得到的扩展字符串进行过滤,除去与初始排除字典中相同的字符串,得到每一个字符串的候选字符串,将每一个字符串的候选字符串构造前缀树,前缀树中从根节点到某一节点的路径上经过的字符连接起来的字符串,若属于初始分类字典中,则将从该根节点到该某一节点的路径上经过的所有字符进行标记;

s2、在每一个字符串的候选字符串构造的前缀树中,将具有公共前缀的前缀树融合形成字典树。

优选的是,在步骤三中,读取待分类文献,调用字典树查找待分类文献中的每一个句子中出现的所有字符串,查找时,对于一个句子,顺序判断该一个句子中的第一个字符至最后一个字符是否属于字典树,且是否被标记,若第一个字符至最后一个字符均属于字典树,且均被标记,则输出从第一个字符至最后一个字符的形成的所有的字符串,若其中某一个字符串不属于字典树、或该某一个字符串属于字典树但未被标记,则不输出从第一个字符至该某一个字符的字符串,从输出的所有的字符串中取最长的字符串作为最长公共子序列。

优选的是,步骤三中待分类文献包括待分类文献的标题或正文或标题与正文的组合。

优选的是,字符串包括全部由中文字组成的形式、或全部由英文字母组成的形式、或中文字和英文字母组合的形式,且字符串由多个字符组成,一个字符为一个中文字或一个英文字母。

本发明还提供一种基于trie和lcs算法的文献分类系统,包括:

初始分类字典模块,其用于预先编排多个类,每个类中设置至少一个字符串;

初始排除字典模块,其用于预先设置至少一个不属于初始分类字典中的字符串;

字典树模块,其用于将初始分类字典模块中的每一个字符串扩展得到扩展字符串,根据初始排除字典模块对得到的扩展字符串过滤后构建字典树,其中,扩展字符串包括将每一个字符串分割形成的字符个数为1到n-1的子字符串,n为对应的字符串的字符总个数;

文件处理模块,其用于读取待分类文献,调用字典树查找待分类文献中的每一个句子中出现的所有字符串,对于一个句子,取其中含有的属于初始分类字典中的最长的字符串作为最长公共子序列,最长公共子序列及其对应的类作为该一个句子的最终字符串及最终类,将一篇文献中出现频率最多的最终类作为其所属的类,完成对待分类文献的分类;

输出文件模块,其用于输出待分类文献和其所属的类。

优选的是,所述文件处理模块含有生语料模块,生语料模块用于将待分类的文献按照语料格式读入,语料格式包括待分类文献的id、标题、正文。

本发明至少包括以下有益效果:

本发明表达意图的核心单元不是字符而是字符串;要寻找一个句子和已知参照物如句子、短语、词语等最匹配的表达是两者之间的最长公共子序列,即lcs(longestcommonstring)。lcs可以是词、词组、短语等这些人能解读的字符串,也可以是人无法解读但是计算机可以解读的字符串,而这样的字符串代表了一种潜在的表达习惯,是人自己可能都未发现的。本发明对于中文和英文文献单独成篇的语料,或者中英文混合成篇的语料,不进行分词处理,生语料或者字典进行trie-lcs运算,也即先将字典扩展为所有可能的字符串集合,构成字典树,即trie;然后采用树搜索的方法查找每篇文献的最长字符串集合,以集合中的最长公共子序列对应的分类为该文献语料的最终分类;对于计算得到的字符串,如果和字典不一致,则可以作为候选特征词,为未来人工修正特征词字典准备素材。

本发明省略了分词过程,减少了理解歧义,降低了外部噪声的干扰;本发明以稳定的字符串为特征,可以得到和查字典相同的准确度,降低了对上下文的依赖;让计算机对复杂语义进行分析,减少了人的干扰,降低了人的劳动强度;本发明的方法具有普遍性,对于多语言甚至非文字语言如声音的处理,照样适用。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

具体实施方式

下面结合实施例对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

本发明提供了一种基于trie和lcs算法的文献分类方法,包括以下步骤:

步骤一、预编初始分类字典和初始排除字典,初始分类字典中编排多个类,每个类中设置至少一个字符串,初始排除字典中设置至少一个不属于初始分类字典中的字符串;对于一个字符串是属于初始分类字典还是属于初始排除字典,是人为预先挑选设定的,一般情况下初始排除字典中主要设置了无实际分类意义的字符串,比如“怎么样”、“好不好”或大量的停用词,初始分类字典中的类也是人为设定的,一般都是以正常的逻辑思维来考量字符串所表达的语意而进行设定,比如预先编排的类别有“经济类”,字符串“经济发展”根据其表达的语意归属到“经济类”;

步骤二、将初始分类字典中的每一个字符串扩展得到扩展字符串,根据初始排除字典对得到的扩展字符串过滤后构建字典树,过滤主要是除去扩展字符串中的无实际分类意义的字符串,其中,扩展字符串包括将每一个字符串分割形成的字符个数为1到n的子字符串,n为对应的字符串的字符总个数;1到n的子字符串是对扩展得到的扩展字符串按照字符的个数进行的归纳,实际运行中,对每一个字符串进行扩展处理时,对于一个字符串,首先分别以该一个字符串的每一个字符作为起始字符,按照该一个字符串的读法顺序逐次增加长度扩展至该一个字符串的终止字符,增加长度时是后次在前次的基础上增加一个字符,得到该一个字符串的所有的扩展字符串,同理得到了所有的字符串的扩展字符串;

步骤三、读取待分类文献,调用字典树查找待分类文献中的每一个句子中出现的所有的字符串,对于一个句子,取其中含有的属于初始分类字典中的最长的字符串作为最长公共子序列,最长公共子序列及其对应的类作为该一个句子的最终字符串及最终类,将一篇文献中出现频率最多的最终类作为其所属的类,完成对待分类文献的分类。比如仅以待分类文献的标题进行分类为例,标题为一个完整的句子“解读北京楼市调控新政策”,其包含了如下字符串:

①解读北京楼市调控新政策;

②读北京楼市调控新政策;

③北京楼市调控新政策;

④京楼市调控新政策;

⑤楼市调控新政策;

⑥市调控新政策;

⑦调控新政策;

⑧控新政策;

⑨新政策;

⑩政策;

策。

假如③⑤⑦⑩都是属于初始分类字典中的字符串,而③是最长的字符串,所以将③作为最长公共子序列,也称为最终字符串,把③在初始分类字典中对应的类作为该待分类文献所述的类。

如果,以待分类文献的正文进行分类,待分类文献的正文中一般会包括多个句子,先对每个句子按照如上对标题进行分类的原理找到每一个句子的最终字符串以及对应的最终类,将出现的最多的那一个最终类作为待分类文献的类。

在另一技术方案中,还包括:

步骤四、步骤三中读取待分类文献后,调用字典树查找待分类文献中的每一个句子中出现的所有字符串,并将新出现的不属于初始排除字典且不同于初始分类字典中的字符串及其对应的类加入到初始分类字典中,形成新的分类字典,将新出现的不属于初始分类字典且不同于初始排除字典中的字符串加入到初始排除字典中,形成新的排除字典。对于不属于初始排除字典且不同于初始分类字典的字符串是人为判断的,并人为将满足条件的字符串对应划分到初始分类字典中的各个类别中,形成新的分类字典;对于不属于初始分类字典且不同于初始排除字典中的字符串也是人为判断的,加入到初始排除字典中,形成新的排除字典。

在另一技术方案中,步骤二具体包括以下过程:

s1、根据初始排除字典对每一个字符串以及得到的扩展字符串进行过滤,除去与初始排除字典中相同的字符串,得到每一个字符串的候选字符串,将每一个字符串的候选字符串构造前缀树,前缀树中从根节点到某一节点的路径上经过的字符连接起来的字符串,若属于初始分类字典中,则将从该根节点到该某一节点的路径上经过的所有字符进行标记;过滤时首先默认去掉数字字符串,再按照初始排除字典过滤,降低后续的搜索查找时间。标记时一般在从该根节点到该某一节点的路径上经过的所有字符的word属性中均标记为“是字符串”。s2、在每一个字符串的候选字符串构造的前缀树中,将具有公共前缀的前缀树融合形成字典树。对于一个字符串,其本身是一棵小的前缀树,该一个字符串中的任何一个节点上的字符,都有可是其他字符串的某一个节点上的字符,这样就找到了两个字符串的公共前缀,将两颗前缀树融合成一棵树,最终形成了庞大的字典树。

在另一技术方案中,在步骤三中,读取待分类文献,调用字典树查找待分类文献中的每一个句子中出现的所有字符串,查找时,对于一个句子,顺序判断该一个句子中的第一个字符至最后一个字符是否属于字典树,且是否被标记,若第一个字符至最后一个字符均属于字典树,且均被标记,则输出从第一个字符至最后一个字符的形成的所有的字符串,若其中某一个字符串不属于字典树、或该某一个字符串属于字典树但未被标记,则不输出从第一个字符至该某一个字符的字符串,从输出的所有的字符串中取最长的字符串作为最长公共子序列。比如一个字符串“社会经济发展”,其中,若“社”到“展”的全部字符均属于字典树,且均被标记,则输出“社”、“社会”、“社会经”、“社会经济”、“社会经济发”、“社会经济发展”,若“济”不属于字典树、“展”属于字典树但未被标记,则输出“社”、“社会”、“社会经”、“社会经济发”,不输出“社会经济”和“社会经济发展”。

在另一技术方案中,步骤三中待分类文献包括待分类文献的标题或正文或标题与正文的组合。

在另一技术方案中,字符串包括全部由中文字组成的形式、或全部由英文字母组成的形式、或中文字和英文字母组合的形式,且字符串由多个字符组成,一个字符为一个中文字或一个英文字母。

本发明还提供一种基于trie和lcs算法的文献分类系统,包括:

初始分类字典模块,其用于预先编排多个类,每个类中设置至少一个字符串;初始排除字典模块,其用于预先设置至少一个不属于初始分类字典中的字符串;

对于一个字符串是属于初始分类字典还是属于初始排除字典,是人为预先挑选设定的,一般情况下初始排除字典中主要设置了无实际分类意义的字符串,比如“怎么样”、“好不好”或大量的停用词,初始分类字典中的类也是人为设定的,一般都是以正常的逻辑思维来考量字符串所表达的语意而进行设定,比如预先编排的类别有“经济类”,字符串“经济发展”根据其表达的语意归属到“经济类”;

字典树模块,其用于将初始分类字典模块中的每一个字符串扩展得到扩展字符串,根据初始排除字典模块对得到的扩展字符串过滤后构建字典树,其中,扩展字符串包括将每一个字符串分割形成的字符个数为1到n的子字符串,n为对应的字符串的字符总个数;过滤主要是除去扩展字符串中的无实际分类意义的字符串,对于原有的属于初始分类字典中的每一个字符串进行再次验证,确保均不属于初始排除字典;1到n的子字符串是对扩展得到的扩展字符串按照字符的个数进行的归纳,实际运行中,对每一个字符串进行扩展处理时,对于一个字符串,首先分别以该一个字符串的每一个字符作为起始字符,按照该一个字符串的读法顺序逐次增加长度扩展至该一个字符串的终止字符,增加长度时是后次在前次的基础上增加一个字符,得到该一个字符串的所有的扩展字符串,同理得到了所有的字符串的扩展字符串;

文件处理模块,其用于读取待分类文献,调用字典树查找待分类文献中的每一个句子中出现的所有字符串,对于一个句子,取其中含有的属于初始分类字典中的最长的字符串作为最长公共子序列,最长公共子序列及其对应的类作为该一个句子的最终字符串及最终类,将一篇文献中出现频率最多的最终类作为其所属的类,完成对待分类文献的分类;

输出文件模块,其用于输出待分类文献和其所属的类。

在另一技术方案中,所述文件处理模块含有生语料模块,生语料模块用于将待分类的文献按照语料格式读入,语料格式包括待分类文献的id、标题、正文。

实施例1

以待分类文献的标题进行分类为例按照上述方法分类如下:

假设待分类文献的标题为“论education对一个国家经济发展的重要性”;

假设初始分类字典中预先设置了类别及部分字符串,如下:

“经济类”,其包含的字符串为:“社会经济发展”;

“教育类”,其包含的字符串为:“highereducation123”;

“政治类”,其包含的字符串为:“会务事宜的安排”;

假设初始排除字典中预先设置了部分字符串,如:、“的”、“一个”、“怎么样”;

将初始分类字典中的每一个字符串扩展得到扩展字符串,“经济类”中“社会经济发展”中:

“社”的扩展字符串为:“社”、“社会”、“社会经”、“社会经济”、“社会经济发”、“社会经济发展”;

“会”的扩展字符串为:“会”、“会经”、“会经济”、“会经济发”、“会经济发展”;

“经”的扩展字符串为:“经”、“经济”、“经济发”、“经济发展”;

“剂”的扩展字符串为:“济”、“济发”、“济发展”;

“发”的扩展字符串为:“发”、“发展”;

“展”的扩展字符串为:“展”;

“教育类”中的“highereducation123”,以及“政治类”中的“会务事宜的安排”根据如上规律进行扩展。

根据初始排除字典对每一个字符串以及得到的扩展字符串过滤,过滤时首先设置默认去掉数字字符串“123”,再根据初始排除字典去掉“的”;

分别对初始分类字典中的每一个类中的每一个字符串构建各自的前缀树,比如“社会经济发展”的前缀树为从“社”到“会”到“经”到“济”到“发”到“展”;“会务事宜安排”的前缀树为从“会”到“务”到“事”到“宜”到“安”到“排”。从“社”到“展”以及从“会”到“排”之间的所有的字符的word属性中标记为“是字符串”;

对所有的前缀树进行融合处理得到完整庞大的字典树,比如“社会经济发展”和“会务事宜安排”在“会”处融合,形成从“社”到“会”到“经”到“济”到“发”到“展”,同时从“会”到“务”到“事”到“宜”到“安”到“排”。

读取待分类文献的标题“论education对一个国家经济发展的重要性”,其包含了如下共23个字符串:

论education对一个国家经济发展的重要性

education对一个国家经济发展的重要性

ducation对一个国家经济发展的重要性

ucation对一个国家经济发展的重要性

cation对一个国家经济发展的重要性

ation对一个国家经济发展的重要性

tion对一个国家经济发展的重要性

ion对一个国家经济发展的重要性

on对一个国家经济发展的重要性

n对一个国家经济发展的重要性

对一个国家经济发展的重要性

一个国家经济发展的重要性

个国家经济发展的重要性

国家经济发展的重要性

家经济发展的重要性

经济发展的重要性

济发展的重要性

发展的重要性

展的重要性

的重要性

重要性

要性

性;

以上字符串中,education和经济发展共13个字符均是被字典树标记过的字符,最终输出的字符串为如下:

e

ed

edu

educ

educa

educat

educati

educatio

education

education对一个国家经

education对一个国家经济

education对一个国家经济发

education对一个国家经济发展

以上共13个字符串中,字符串“education”为属于初始分类字典中的最长公共子序列,“education”属于“教育类”,则待分类文献归属到“教育类”。

此外,根据需要人为将出现的“重要性”加入到初始排除字典中,形成新的排除字典,人为将出现的“国家经济发展的重要性”加入到初始分类字典中,形成新的分类字典。新的分类字典和新的排除字典可用于作为下一次文献分类时的初始字典,新的分类字典在构造新的字典树时会经过新的排除字典进行过滤。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1