CN110147433A - 一种基于字典树的文本模板提取方法 - Google Patents
一种基于字典树的文本模板提取方法 Download PDFInfo
- Publication number
- CN110147433A CN110147433A CN201910427851.7A CN201910427851A CN110147433A CN 110147433 A CN110147433 A CN 110147433A CN 201910427851 A CN201910427851 A CN 201910427851A CN 110147433 A CN110147433 A CN 110147433A
- Authority
- CN
- China
- Prior art keywords
- text
- template
- word
- sequence
- node
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/374—Thesaurus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
Abstract
本发明公开了一种基于字典树的文本模板提取方法,包括:从文本签名下的文件中获取文本;对文本进行分词处理和统计,获得词序列;基于文件中的文本数量和词序列的词数,确定每个文件的关键词列表;基于关键词列表对分词序列进行过滤,以获得每个文本的关键词序列;基于每个文本的关键词序列构建字典树,所述字典树中的节点值为模板频数;将字典树的节点压入堆节点,获得模板词序列;基于模板频数、模板词序列中的词数以及子节点的模板频数占父节点的模板频数的比例,提取文本模板;重复迭代执行上述步骤,直到满足预定条件时迭代结束,将提取的文本模板存入数据库。
Description
技术领域
本发明涉及自然语言处理技术领域,尤其涉及一种基于字典树的文本模板提取方法、文本模板提取方法、计算设备及存储介质。
背景技术
文本挖掘是近年来伴随着数据库的大量建立和互联网的应用而发展起来的一门技术。如何从海量的文本中提取需要的有价值的信息尤为重要。
文本挖掘主要应用于短信、聊天记录、微博、购物评论等领域。以短信为例,通信运营商、广告营销商、银行或个人均会通过短信的形式进行信息传输,短信的种类也有很多,例如验证码短信、业务通知短信、广告推送短信等。在用户接收的短信中,除了一些普通商业短信外,中奖、诈骗、传销等短信屡见不鲜,这不但影响正常短信的收发,也对用户造成干扰。因此短信分类具有重要的意义。
现有技术中通常采用文本与数据库匹配的方法对文本进行分类,但是由于数据库数据庞大,将文本与所有的文本模板进行匹配,无法满足对文本分类实时性的要求。
因此,需要一种文本模板提取方法,来提高文本模板提取的效率和准确度。
发明内容
为此,本发明提供了一种基于字典树的文本模板提取方法,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种基于字典树的文本模板提取方法,该方法适于在计算设备中执行,该方法包括:首先,从文本签名下的文件中获取文本。接着,对所述文本进行分词处理和统计,获得词序列。然后,基于文件中的文本数量和词序列的词数,确定每个文件的关键词列表。就可以基于关键词列表对词序列进行过滤,以获得每个文本的关键词序列。随后,基于文件中每个文本的关键词序列构建字典树,字典树中的节点值为模板频数。并将字典树的节点压入堆节点,获得模板词序列。最后,基于模板频数、模板词序列中的词数以及子节点的模板频数占父节点的模板频数的比例,提取文本模板。重复迭代执行获得词序列、确定关键词列表、获得关键词序列、构建字典树、获得模板词序列、提取文本模板的步骤,直到满足预定条件时迭代结束,将提取的文本模板存入数据库。
可选地,在上述方法中,预定条件包括不存在未提取文本模板的文本、提取的文本模板不再变化、迭代次数超过预定次数。
可选地,在上述方法中,将文本签名加入预先定义的词典中;将文本与所述词典进行匹配,得到词序列;以及统计文件中文本数量和词序列中的词数。
可选地,在上述方法中,将关键词列表中的词与词序列中的词进行匹配,将匹配成功的词作为关键词序列中的词。
可选地,在上述方法中,字典树包括根节点和至少一个子节点,每个子节点对应一个关键词,从根节点到任意一个子节点的路径上的所有关键词为一个模板。
可选地,在上述方法中,子节点保存匹配到该子节点的文本编号集合、文本编号集合的大小,模板频数为文本编号集合的大小。
可选地,在上述方法中,当某条文本的关键词序列中的词与子节点对应的词相匹配时,将该文本的文本编号加入文本编号集合中,并更新文本编号集合的大小;否则,在该子节点下增加新的子节点,新的子节点保存未匹配的文本编号。
可选地,在上述方法中,当子节点的模板频数占父节点的模板频数的比例小于预定比例,则将该子节点删除;比较各个子节点的模板频数和模板词序列中的词数,确定构成文本模板的词序列。
根据本发明另一个方面,提供了一种文本模板提取方法,该方法适于在计算设备中执行。该方法包括:提取文本的文本签名;从数据库中获取所述文本签名下已提取的文本模板;对文本和文本模板进行分词处理,得到文本词序列和文本模板词序列;将文本词序列与文本模板词序列进行匹配,如果匹配成功则输出与文本匹配的文本模板;如果未匹配成功则调用上述基于字典树的文本模板提取方法对未匹配的文本提取文本模板。
可选地,在上述方法中,基于正则表达式,提取位于文本前端或后端的文本签名。
可选地,在上述方法中,去除文本模板中的占位符后对文本模板进行分词处理。
可选地,在上述方法中,基于文本词序列与文本模板词序列之间的交集大小以及编辑距离,判断文本与文本模板之间的相似度,以得到匹配结果。
根据本发明另一个方面,提供了一种计算设备,包括一个或多个处理器;存储器;一个或多个程序,这一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序用于执行上述方法的指令。
根据本发明另一个方面,提供一种存储一个或多个程序的计算机可读存储介质,这一个或多个程序包括指令,当指令被计算设备执行时,使得计算设备执行如上所述的方法。
本方案首先将文本与已提取的文本模板进行匹配,如果匹配成功则输出文本对应的文本模板,如果未匹配成功,则对未匹配的文本构建字典树,提取其文本模板,并将提取的文本模板加入数据库中,以便后续模板匹配。本方案能够提高文本模板提取的准确性和效率。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明的一个实施例的计算设备100的构造示意图;
图2示出了根据本发明的一个实施例的文本模板提取方法200的示意性流程图;
图3示出了根据本发明的一个实施例的基于字典树的文本模板提取方法300的示意性流程图;
图4示出了根据本发明的一个实施例的构建字典树的示意图;
图5示出了根据本发明的一个实施例的构建字典树的示意图;
图6示出了根据本发明的一个实施例的遍历堆的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明的一个实施例的计算设备100的构造示意图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个程序122以及程序数据124。在一些实施方式中,程序122可以布置为在操作系统上利用程序数据124进行操作。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/0端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以是小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100可被配置为执行本发明的基于字典树的文本模板提取方法200和文本模板提取方法300。其中,计算设备100的一个或多个程序122包括用于执行根据本发明的200和300的指令。
在文本模板提取任务中,可以首先将文本与数据库中按照签名存储的已提取的文本模板进行匹配,如果匹配成功则可以确定该文本对应的文本模板,如果匹配失败则可以使用本发明提供的基于字典树的文本模板提取方法对未匹配的文本进行文本模板提取。
图2示出了根据本发明的一个实施例的文本模板提取方法200的示意性流程图。该方法可以在计算设备100中执行。如图2所示,在步骤S210中,提取文本的文本签名。
其中,可以基于正则表达式提取文本签名。例如在短信业务中,文本签名一般位于短信的前端或后端。当输入文本串为String str=″您的验证码是:1234【鸿联九五】″,正则表达式可以设置为String rgex=″【(.*?)】″;System.out.println(getSubUtil(str,rgex))。最后输出文本签名为“鸿联九五”。
随后在步骤S220中,从数据库中获取文本签名下已提取的文本模板。
根据本发明的一个实施例,可以通过登录redis客户端使用命令来连接和操作redis数据库,也可以通过密码验证的方式访问数据库。根据配置文件中指定的ip地址和端口号,获取该文本签名下已提取的文本模板。
其中,redis数据库是一个key-value键值对存储系统,能够支持键值对存储和数据结构存储,如列表、字典树等。为了保证效率,所有数据操作在内存中完成。可以将提取的文本模板存储在redis数据库中,可以通过python、Java、lua等任一编程接口访问数据库,获取文本模板。由于redis数据库可以用来做消息队列,可以通过侦听消息队列获取记录任务信息的json字符串,包括任务标识、redis数据库的ip地址、端口号、数据库号以及文本数量的信息等。将需要监听的对象封装在自定义的事件状态对象类中,需要在类中实例化监听对象。当监听到事件对象时,调用相应的方法进行处理。对于监听到的事件对象请求,首先需要检查json字符串的合法性。例如,可以将json字符串转换为json对象,如果转换成功,则表示json是合法的,反之则表示json数据有问题。然后,通过执行命令行消息的方式启动文本模板提取任务。在任务执行完毕后,可以通过读取redis数据库中记录的执行结果和错误信息,向消息队列写入任务回执。在异步并发任务执行过程中,可以使用信号量的方式来控制并发执行的任务数。
接着在步骤S230中,对文本和文本模板进行分词处理,得到文本词序列和文本模板词序列。
对于英文分词可以直接根据空格进行分词,而对于中文分词处理可以是基于字符串匹配的方法、基于理解的方法和基于统计的方法中任意一种,本方案对此不做限定。为了提高分词处理的效率,可以使用python分词工具,如结巴分词,对文本分词处理后获得文本词序列。其中可以使用自定义的词典,以便包含结巴分词词库里没有的词语。在本发明的一个实施方式中,可以将文本签名加入自定义词典中避免其被分割。
在对文本模板分词处理前,可以首先去除文本模板中的占位符。例如验证码的具体数值为可变词,可以将文本模板“验证码是[xxx]”中的占位符[xxx]去除。此外,python中的%s代表所有类型的占位符,例如“我的名字是%s,我的年龄是%s岁,我的身高是%s米”。可以将这些占位符去除后再对每条文本模板进行分词处理,得到文本模板词序列。
最后在步骤S240中,将文本词序列与文本模板词序列进行匹配,如果匹配成功则输出与文本匹配的文本模板。
由于数据库中的文本模板是按照签名分类存储的,因此对每条文本可以按照其签名去匹配数据库中的文本模板。根据本发明的一个实施例,可以首先对文本词序列和文本模板词序列取交集,当交集的大小相对于文本模板词序列的大小足够大时,可以认为这两条字符串有较大的可能匹配。然后可以使用编辑距离算法计算它们的编辑距离。其中编辑距离是指两个字符串之间由一个转为另一个所需的最少编辑操作次数,编辑操作可以包括将一个字符替换为另一个字符、插入一个字符、删除一个字符等。编辑距离越小,两个字符串的相似度越大。根据计算相似度判断文本与文本模板是否匹配。如果相似度超过预定阈值,可以认为两者匹配成功,则返回与文本匹配的文本模板。
最后在步骤S250中,如果未匹配成功则调用基于字典树的文本模板提取方法对未匹配的文本提取文本模板。
图3示出了根据本发明的一个实施例的基于字典树的文本模板提取方法300的示意性流程图。该方法适于在计算设备100中执行。如图3所示,方法300适于步骤S310,在步骤S310中,从文本签名下的文件中获取文本。
对于上述未匹配成功的文本按照其签名进行分开存储,存储在各自文本签名下的文件中。例如某条文本的文本签名为k,则将其存储在k.txt文件中。这样可以对同一文本签名下的文本进行批量处理,可以提高文本模板提取的效率。
随后在步骤S320中,对文本进行分词处理和统计,获得词序列。
例如可以使用基于字符串匹配的分词方法,按照一定的策略将文本字符串与自定义词典中的词进行匹配,若在词典中找到某个字符串,则匹配成功,识别出一个词。匹配分词方法可以分为正向匹配、逆向匹配和双向匹配,本方案对分词方法不做限定。可以将分词和文本签名结合起来,对分词结果进行检验、调整,从而提高分词的准确率。
随后在步骤S330中,基于文件中的文本数量和词序列的词数,确定每个文件的关键词列表。
通过对统计结果进行排序,只保留统计结果靠前的n个词。例如n=Iog2*(分词后的去重总词数),以便基于关键词列表对分词结果进行数据清洗。例如删去文本数量小于3的文本后取排序前50%的词作为优先处理的高频词。
随后在步骤S340中,基于关键词列表对词序列进行过滤,以获得每个文本的关键词序列。
可以将关键词列表中的词与词序列中的词进行匹配,将匹配成功的词作为关键词序列中的词。
接着在步骤S350中,基于文件中每个文本的关键词序列构建字典树,所述字典树中的节点值为模板频数。
其中,每个文件对应一棵字典树。字典树是一种树形结构,包括根节点、和至少一个子节点。可以将过滤后的每个文本的关键词序列依次放入字典树中进行路径构建和路径更新。除根节点外的每一个子节点记录一个词,从根节点到某一子节点路径上经过的词连接起来,为该节点对应的潜在的文本模板。此外,每个节点记录匹配到该节点的关键词的文本编号集合以及文本编号集合的大小。
在构建字典树时,先建立一个空的根节点,然后不断向里添加关键词,当关键词匹配时则更新原节点上的模板频数值,未匹配时继续向下添加新的子节点。也就是说,若两条文本是同一个模板,那么它们对应的“关键词”的位置偏差应该不会太大。故对于某条文本词序列中的词i,考虑其子节点可以是i+1,i+2,i+3三种可能,当一个新的文本词序列在这三个情况下都匹配不上时,可以认为它们只是有着相同前缀的不同文本,故应该在词i下增加一个新节点对应这个新的文本的下一个关键词,并且该新的子节点保存该文本的文本编号。最终,任意一条根节点到叶子节点的路径都对应一个可能的模板。
图4和图5分别示出了根据本发明的一个实施例的构建字典树的示意图。如图4所示,将文本编号为1,关键词序列为ABC的文本,插入字典树中。如图5所示,将文本编号为2,关键词序列为ACD的文本插入字典树中。其中,keyword为每个节点对应的关键词,list为适配到该节点的文本编号集合,listlen表示文本编号集合的大小,children为该节点的子节点集合。从任意一个节点到根节点的路径上的所有关键词可以看作一个潜在的文本模板。当某条文本编号的关键词与某个节点对应的词相匹配时,这条文本编号被加入该节点的文本编号集合list中,文本编号集合的大小listlen随之递增。
如图5所示,由于文本编号为2的关键词序列中词A与图4中已构建的字典树中的节点L1相匹配,故将文本编号2加入L1的文本编号集合中,并将L1文本编号集合的大小更新为2。关键词C与节点L3中词C相匹配,故将文本编号2加入L3的文本编号集合中,并将L3文本编号集合的大小更新为2。关键词C与节点L5中的词C相匹配,故将文本编号2加入L5的文本编号集合中,并将L5文本编号集合的大小更新为2。由于关键词D与已构建字典树中的任一节点中的词都不匹配,故增加新的节点。在L5节点下增加新的子节点L8,在L1节点下增加新的子节点L9,在节点L3下增加新的子节点L10,并更新L1、L3、L5中记录的子节点集合。
可以利用函数执行上述操作,例如,使用addchild函数插入新的子节点,使用addlist函数插入新的文本编号,使用getlistlen函数获取文本编号集合的长度,使用matchword将某条文本编号对应的词与节点中的词进行匹配。利用trans函数遍历字典树,使用heapsort函数遍历字典树并将字典树的节点插入堆。
随后在步骤S360中,将字典树中的节点压入堆节点,获得模板词序列。
其中,堆的大小在创建根节点时指定,例如指定为k=log10(文本数量)*10+c,c是一个常数。每个堆节点保存一个字典树节点,即选出字典树中前k大的节点。在将字典树的节点压入堆的同时,在堆节点中保存这个字典树节点到字典树根节点路径上的所有词,可以认为这个词序列为一个潜在的模板词序列。
具体地,从根节点开始遍历这个堆,对每个堆元素建立一个集合Si,内容为该模板适配的文本编号。对于每个文本编号维护一个assign[i]=k,k为该文本最后确定归属的模板编号,在遍历的过程中确保一个文本编号在所有集合Si中只出现一次,且所在的集合Sn满足assign[i]=n。实例化堆节点为根节点,遍历字典树,将字典树中的节点压入大小为k的堆,k就是一个对压缩比的假设,认为可以根据所有语料找出k组可能构成模板的高频词序列,其中k=log10(文本数量)*10+c,c是一个常数。最后留在堆中的每个节点对应一个潜在的模板词序列。
随后在步骤S370中,基于模板频数、模板词序列中的词数以及子节点的模板频数占父节点的模板频数的比例,提取文本模板。
首先可以对字典树进行剪枝,当子节点的模板频数占父节点的模板频数的比例小于预定比例,则将该子节点删除。然后,可以利用最小堆排序法筛选模板。最小堆排序法是使堆中最小元素值出现在根节点,例如,求一个序列中第K大的值,建立一个大小为K的堆,堆顶就是第K大的值。或者递归去除最顶元素,取前K个元素。按照最小堆的要求,将节点的数值进行排序,堆顶为最小的数。当新增加一个数被放置到堆顶时,如果此时不符合最小堆的特性,则将需要将这个数向下调整,直到找到合适的位置为止,使其重新符合最小堆的特性。堆的作用其实就相当于从字典树中选出覆盖文本数量较多的节点。
在使用最小堆方法对上述潜在的模板词序列进行筛选时,首先比较两个节点的节点值,即节点中文本编号集合的大小,去除节点值较小的节点。当两个节点的节点值相同时,比较两个节点对应的模板词序列的长度,去除词数较少的节点。具体遍历堆的过程可以如下:
1、先建立和堆等数量的空集合Si以及空数组assign,该数组的每一位激励第i条文本被分配的文本模板编号。
2、对堆的根节点,令S0=[根节点内容中包含的文本编号],并对所有i属于S0,assign[i]=0。
3、从根节点出发递归向堆底,每经过一个节点j,就令Sj=[j节点包含的文本编号中,还没有assign取值的编号,并对应赋值assign[]=j;然后对于已经有assign取值的编号i,比较assign[i]与j这两个点的模板长度,将i归于较长的那一方,若原值较短,则从原集合S中抹去。
4、堆遍历完毕后,将assign取值仍为空的文本编号集合消除,即为未匹配的文本,并认为这些模板在经过比较后被更具代表性的模板所取代。
在本发明的一个实现方式中,模板一般是每个与之匹配的文本或者说绝大多数与之匹配的文本都有的词,所以需要对构成文本模板的词序列做句频统计。例如,“先生”或者“女士”这样不会出现在同一条文本里的词,但是又不希望“x先生你好”和“x女士你好”变成两个模板,所以取句频>0.5,即一个文本文件中绝大多数文本都有的词。统计出句频大于0.5的候选词之后,可以随机取出来一条满足这个词序列的文本,并将不在候选词中的内容替换成占位符。
图6示出了根据本发明的一个实施例的遍历堆的示意图。其中,seq表示堆节点对应的词序列,value表示堆节点对于的词序列长度,triePtr表示堆节点对应的字典树节点。如图6所示,从S1开始遍历堆,在S1节点,词序列seq=”ACE”,triePtr指向的字典树节点含有4个文本,文本编号分别为1,2,5,7,故可以先给assign[1]、assign[2]、assign[5]、assign[7]赋值为1,表示它们可能是以S1堆节点的序列“ACE”为模板的文本。当遍历到S2时,triePtr指向的字典树节点同样含有4个文本1,2,5,7,检查它们的assign值为1,并且S1点的value=S2点的value,但是S1点的seq=“ACE”的长度比S2点的seq=“ACEF”要短,所以修改这四个点的assign值为2,此时assign[1]=assign[2]=assign[5]=assign[7]=2。当遍历到S3时,triePtr指向的字典树节点含有6个文本1,2,3,4,6,8,检查assign[1]=assign[2]=2,其余为0,再发现S2点的value=4<S3点的value=6,所以修改这两个点的assign值为3,其余四个为0的点直接赋值为3。此时assign[1]=assign[2]=assign[3]=assign[4]=assign[6]=assign[8]=3,assign[5]=assign[7]=2
经过上述遍历,可认为文本1,2,3,4,6,8属于同一个模板(临时编号为堆节点编号3)。文本5、7属于同一个模板(临时编号为堆节点编号2),不再有文本被分配堆节点编号1,故S1节点对应的词序列作废。在这个基础上,再对同一个临时编号下的所有文本统计词的句频,来确定最终的模板内容(堆节点的seq只是关键词序列,不能完全等价于模板)。
在本发明的一个实施例中,可以使用堆类函数执行上述操作,例如,使用pop函数弹出节点,使用addheap函数压入节点,使用pushup函数使节点上浮、pushdown函数使节点下沉,使用trans函数遍历堆并为文本分配模板。
最后在步骤S380中,重复迭代执行获得词序列、确定关键词列表、获得关键词序列、构建字典树、获得模板词序列、提取文本模板的步骤,直到满足预定条件时迭代结束,将提取的文本模板存入数据库。
在上述文本提取过程中,每次迭代分析是对于同一签名的文本,每次迭代输出本次提取的文本模板、剩余未匹配的文本以及变化后的文本模板编号。当本次迭代输出的结果满足预定条件之一时,迭代结束。其中预定条件可以包括不存在未提取文本模板的文本、提取的文本模板不再变化、迭代次数超过预定次数。并且,每次迭代的过程都会有一部分文本被分配到一个文本模板编号中。迭代结束后依然没有被分配文本模板编号的文本,即为未分配到文本模板的文本。可以为这些文本标注为0,并记录未匹配的文本数量。
提取文本模板完成后,可以将匹配结果以消息队列的方式写入redis数据库中,匹配结果可以包括未匹配的文本列表以及匹配失败的信息,与文本模板匹配的文本列表,运行过程中的错误信息等。
根据本发明的方案,首先将文本与已提取的文本模板进行匹配,如果匹配成功则输出文本对应的文本模板,如果未匹配成功,则对未匹配的文本构建字典树,提取其文本模板,并将提取的文本模板加入数据库中,以便后续模板匹配。本方案能够提高文本模板提取的准确性和效率。
A8、如A1所述的方法,其中,所述基于模板频数、模板词序列中的词数以及子节点的模板频数占父节点的模板频数的比例,提取文本模板的步骤包括:
当子节点的模板频数占父节点的模板频数的比例小于预定比例,则将该子节点删除;
比较各个子节点的模板频数和模板词序列中的词数,确定构成文本模板的词序列。
B10、如B9所述的方法,其中,所述提取文本签名的步骤包括:
基于正则表达式,提取位于文本前端或后端的文本签名。
B11、如B9所述的方法,其中,所述对文本模板进行分词处理的步骤包括:
去除文本模板中的占位符后,对文本模板进行分词处理。
B12、如B11所述的方法,其中,在所述将文本词序列与文本模板词序列进行匹配的步骤包括:
基于文本词序列与文本模板词序列之间的交集大小以及编辑距离,判断文本与文本模板之间的相似度,以得到匹配结果。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明所述的方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种基于字典树的文本模板提取方法,适于在计算设备中执行,所述方法包括:
从文本签名下的文件中获取文本;
对所述文本进行分词处理和统计,获得词序列;
基于文件中的文本数量和词序列的词数,确定每个文件的关键词列表;
基于关键词列表对词序列进行过滤,以获得每个文本的关键词序列;
基于文件中每个文本的关键词序列构建字典树,所述字典树中的节点值为模板频数;
将字典树的节点压入堆节点,获得模板词序列;
基于模板频数、模板词序列中的词数以及子节点的模板频数占父节点的模板频数的比例,提取文本模板;以及
重复迭代执行获得词序列、确定关键词列表、获得关键词序列、构建字典树、获得模板词序列、提取文本模板的步骤,直到满足预定条件时迭代结束,将提取的文本模板存入数据库。
2.如权利要求1所述的方法,其中,所述预定条件包括不存在未提取文本模板的文本、提取的文本模板不再变化、迭代次数超过预定次数。
3.如权利要求1所述的方法,其中,所述对文件中的文本进行分词处理和统计的步骤包括:
将文本签名加入预先定义的词典中;
将文本与所述词典进行匹配,得到词序列;以及
统计文件中文本数量和词序列中的词数。
4.如权利要求1所述的方法,其中,所述基于关键词列表对分词序列进行过滤,以获得每个文本的关键词序列的步骤包括:
将关键词列表中的词与词序列中的词进行匹配,将匹配成功的词作为关键词序列中的词。
5.如权利要求1所述的方法,其中,所述字典树包括根节点和至少一个子节点,每个子节点对应一个关键词,从根节点到任意一个子节点的路径上的所有关键词为一个模板。
6.如权利要求5所述的方法,其中,所述子节点保存匹配到该子节点的文本编号集合、文本编号集合的大小,所述模板频数为文本编号集合的大小。
7.如权利要求6所述的方法,其中,所述基于文件中每个文本对应的关键词序列构建字典树的步骤包括:
当某条文本的关键词序列中的词与子节点对应的词相匹配时,将该文本的文本编号加入文本编号集合中,并更新文本编号集合的大小;
否则,在该子节点下增加新的子节点,新的子节点保存未匹配的文本编号。
8.一种文本模板提取方法,适于在计算设备中执行,所述方法包括:
提取文本的文本签名;
从数据库中获取所述文本签名下已提取的文本模板;
对文本和文本模板进行分词处理,得到文本词序列和文本模板词序列;
将文本词序列与文本模板词序列进行匹配,如果匹配成功则输出与文本匹配的文本模板;
如果未匹配成功则调用权利要求1-7任意一项中所述的方法对未匹配的文本提取文本模板。
9.一种计算设备,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1-8所述方法中的任一方法的指令。
10.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当计算设备执行时,使得所述计算设备执行根据权利要求1-8所述的方法中的任一方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910427851.7A CN110147433B (zh) | 2019-05-21 | 2019-05-21 | 一种基于字典树的文本模板提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910427851.7A CN110147433B (zh) | 2019-05-21 | 2019-05-21 | 一种基于字典树的文本模板提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110147433A true CN110147433A (zh) | 2019-08-20 |
CN110147433B CN110147433B (zh) | 2021-01-29 |
Family
ID=67592656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910427851.7A Active CN110147433B (zh) | 2019-05-21 | 2019-05-21 | 一种基于字典树的文本模板提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110147433B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110738202A (zh) * | 2019-09-06 | 2020-01-31 | 平安科技(深圳)有限公司 | 字符识别方法、装置及计算机可读存储介质 |
CN111159251A (zh) * | 2019-12-19 | 2020-05-15 | 青岛聚好联科技有限公司 | 一种异常数据的确定方法及装置 |
CN113569027A (zh) * | 2021-07-27 | 2021-10-29 | 北京百度网讯科技有限公司 | 一种文档标题处理方法、装置及电子设备 |
CN113836917A (zh) * | 2021-09-28 | 2021-12-24 | 广州华多网络科技有限公司 | 文本分词处理方法及其装置、设备与介质 |
CN113971210A (zh) * | 2021-12-27 | 2022-01-25 | 宇动源(北京)信息技术有限公司 | 一种数据字典生成方法、装置、电子设备及存储介质 |
CN116383655A (zh) * | 2023-04-07 | 2023-07-04 | 北京百度网讯科技有限公司 | 样本生成方法、模型训练方法、文本处理方法及装置 |
CN116662476A (zh) * | 2023-08-01 | 2023-08-29 | 凯泰铭科技(北京)有限公司 | 基于数据字典的车险案件压缩管理方法及系统 |
CN116934195A (zh) * | 2023-09-14 | 2023-10-24 | 海信集团控股股份有限公司 | 一种商品信息查验方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101067808A (zh) * | 2007-05-24 | 2007-11-07 | 上海大学 | 文本关键词的提取方法 |
CN102129440A (zh) * | 2010-01-13 | 2011-07-20 | 腾讯科技(北京)有限公司 | 信息定向推送方法和系统 |
CN102129422A (zh) * | 2010-01-14 | 2011-07-20 | 富士通株式会社 | 模板提取方法和装置 |
CN103020052A (zh) * | 2011-09-20 | 2013-04-03 | 北京百度网讯科技有限公司 | 一种识别搜索需求的方法和装置 |
CN104298732A (zh) * | 2014-09-29 | 2015-01-21 | 中国科学院计算技术研究所 | 一种面向网络用户的个性化文本排序及推荐方法 |
CN105045888A (zh) * | 2015-07-28 | 2015-11-11 | 浪潮集团有限公司 | 一种用于hmm的分词训练语料标注方法 |
CN105488025A (zh) * | 2015-11-24 | 2016-04-13 | 小米科技有限责任公司 | 模板构建方法和装置、信息识别方法和装置 |
CN106502995A (zh) * | 2016-11-30 | 2017-03-15 | 福建榕基软件股份有限公司 | 一种层级信息智能识别方法及装置 |
CN107203526A (zh) * | 2016-03-16 | 2017-09-26 | 高德信息技术有限公司 | 一种查询串语义需求分析方法及装置 |
CN108334491A (zh) * | 2017-09-08 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 文本分析方法、装置、计算设备及存储介质 |
CN109670163A (zh) * | 2017-10-17 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 信息识别方法、信息推荐方法、模板构建方法及计算设备 |
CN109740165A (zh) * | 2019-01-09 | 2019-05-10 | 网易(杭州)网络有限公司 | 字典树构建方法、语句搜索方法、装置、设备及存储介质 |
-
2019
- 2019-05-21 CN CN201910427851.7A patent/CN110147433B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101067808A (zh) * | 2007-05-24 | 2007-11-07 | 上海大学 | 文本关键词的提取方法 |
CN102129440A (zh) * | 2010-01-13 | 2011-07-20 | 腾讯科技(北京)有限公司 | 信息定向推送方法和系统 |
CN102129422A (zh) * | 2010-01-14 | 2011-07-20 | 富士通株式会社 | 模板提取方法和装置 |
CN103020052A (zh) * | 2011-09-20 | 2013-04-03 | 北京百度网讯科技有限公司 | 一种识别搜索需求的方法和装置 |
CN104298732A (zh) * | 2014-09-29 | 2015-01-21 | 中国科学院计算技术研究所 | 一种面向网络用户的个性化文本排序及推荐方法 |
CN105045888A (zh) * | 2015-07-28 | 2015-11-11 | 浪潮集团有限公司 | 一种用于hmm的分词训练语料标注方法 |
CN105488025A (zh) * | 2015-11-24 | 2016-04-13 | 小米科技有限责任公司 | 模板构建方法和装置、信息识别方法和装置 |
CN107203526A (zh) * | 2016-03-16 | 2017-09-26 | 高德信息技术有限公司 | 一种查询串语义需求分析方法及装置 |
CN106502995A (zh) * | 2016-11-30 | 2017-03-15 | 福建榕基软件股份有限公司 | 一种层级信息智能识别方法及装置 |
CN108334491A (zh) * | 2017-09-08 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 文本分析方法、装置、计算设备及存储介质 |
CN109670163A (zh) * | 2017-10-17 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 信息识别方法、信息推荐方法、模板构建方法及计算设备 |
CN109740165A (zh) * | 2019-01-09 | 2019-05-10 | 网易(杭州)网络有限公司 | 字典树构建方法、语句搜索方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
钟静晨: ""电商商品评价情感分析系统研究"", 《万方学位论文数据库》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110738202A (zh) * | 2019-09-06 | 2020-01-31 | 平安科技(深圳)有限公司 | 字符识别方法、装置及计算机可读存储介质 |
CN111159251A (zh) * | 2019-12-19 | 2020-05-15 | 青岛聚好联科技有限公司 | 一种异常数据的确定方法及装置 |
CN113569027A (zh) * | 2021-07-27 | 2021-10-29 | 北京百度网讯科技有限公司 | 一种文档标题处理方法、装置及电子设备 |
CN113569027B (zh) * | 2021-07-27 | 2024-02-13 | 北京百度网讯科技有限公司 | 一种文档标题处理方法、装置及电子设备 |
CN113836917A (zh) * | 2021-09-28 | 2021-12-24 | 广州华多网络科技有限公司 | 文本分词处理方法及其装置、设备与介质 |
CN113836917B (zh) * | 2021-09-28 | 2023-07-18 | 广州华多网络科技有限公司 | 文本分词处理方法及其装置、设备与介质 |
CN113971210A (zh) * | 2021-12-27 | 2022-01-25 | 宇动源(北京)信息技术有限公司 | 一种数据字典生成方法、装置、电子设备及存储介质 |
CN116383655A (zh) * | 2023-04-07 | 2023-07-04 | 北京百度网讯科技有限公司 | 样本生成方法、模型训练方法、文本处理方法及装置 |
CN116383655B (zh) * | 2023-04-07 | 2024-01-05 | 北京百度网讯科技有限公司 | 样本生成方法、模型训练方法、文本处理方法及装置 |
CN116662476A (zh) * | 2023-08-01 | 2023-08-29 | 凯泰铭科技(北京)有限公司 | 基于数据字典的车险案件压缩管理方法及系统 |
CN116934195A (zh) * | 2023-09-14 | 2023-10-24 | 海信集团控股股份有限公司 | 一种商品信息查验方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110147433B (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147433A (zh) | 一种基于字典树的文本模板提取方法 | |
US11227118B2 (en) | Methods, devices, and systems for constructing intelligent knowledge base | |
CN110232183B (zh) | 关键词提取模型训练方法、关键词提取方法、装置及存储介质 | |
CN107679144A (zh) | 基于语义相似度的新闻语句聚类方法、装置及存储介质 | |
JP2020520492A (ja) | 文書要約自動抽出方法、装置、コンピュータ機器及び記憶媒体 | |
WO2022134421A1 (zh) | 基于多知识图谱的智能答复方法、装置、计算机设备及存储介质 | |
CN104142909A (zh) | 一种汉字注音方法及装置 | |
CN109885828A (zh) | 基于语言模型的词语纠错方法、装置、计算机设备及介质 | |
CN107169021A (zh) | 用于预测应用功能标签的方法和设备 | |
TW201804341A (zh) | 字串的分詞方法、裝置及設備 | |
CN110069769B (zh) | 应用标签生成方法、装置及存储设备 | |
US20150169676A1 (en) | Generating a Table of Contents for Unformatted Text | |
CN110427453B (zh) | 数据的相似度计算方法、装置、计算机设备及存储介质 | |
CN112101042A (zh) | 文本情绪识别方法、装置、终端设备和存储介质 | |
CN110489730A (zh) | 文本处理方法、装置、终端及存储介质 | |
CN113688617A (zh) | 一种生成表格页面的方法及计算设备 | |
CN109359176A (zh) | 数据提取方法、装置、计算机设备和存储介质 | |
CN110263345B (zh) | 关键词提取方法、装置及存储介质 | |
CN111310453A (zh) | 一种基于深度学习的用户主题向量化表示方法和系统 | |
CN112087473A (zh) | 文档下载方法、装置、计算机可读存储介质和计算机设备 | |
CN113486169B (zh) | 基于bert模型的同义语句生成方法、装置、设备及存储介质 | |
JPWO2011070979A1 (ja) | 辞書作成装置、単語収集方法、及び、プログラム | |
CN114840642A (zh) | 事件抽取方法、装置、设备及存储介质 | |
CN114741489A (zh) | 文档检索方法、装置、存储介质以及电子设备 | |
CN110879699A (zh) | 领域专用语言dsl的图形化处理方法和设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |