CN109783607B - 一种在任意文本中匹配识别海量关键词的方法 - Google Patents
一种在任意文本中匹配识别海量关键词的方法 Download PDFInfo
- Publication number
- CN109783607B CN109783607B CN201811558241.2A CN201811558241A CN109783607B CN 109783607 B CN109783607 B CN 109783607B CN 201811558241 A CN201811558241 A CN 201811558241A CN 109783607 B CN109783607 B CN 109783607B
- Authority
- CN
- China
- Prior art keywords
- text
- character
- word stock
- matching
- keywords
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种在任意文本中匹配识别海量关键词的方法,包括针对海量关键词库的优化处理、匹配扫描算法的优化,该方法有效解决了在任意的一段文本数据中,快速、精确地识别出存在哪些指定的关键词,而且适用于关键词的数量非常庞大的场景,可以精准且快速的给出识别的关键词、在文本中的位置、以及匹配到的次数。
Description
技术领域
本专利涉及到信息处理技术,尤其是在征信/信用领域的计算机信息处理。
背景技术
针对征信/信用领域的计算机信息处理系统中,有一类文本数据的处理需求,需要在任意的一段文本数据中,快速、精确地识别出存在哪些指定的关键词,而关键词的数量非常庞大(千万到亿数量级的),因此,一般通用的敏感词过滤算法(如DFA、Aho-Corasick算法、正则表达式等)无法适用于此场景下。
现有的通用的敏感词过滤算法DFA/Aho-Corasick算法主要的问题是,因为需要事先将所有关键词构造为字典树(状态迁移表),当存在海量的关键词时,字典树的规模将会变得大到不可接受,内存中无法容纳。
正则表达式的方案效率本身比较低,而且需要进行多次匹配,更加不适合于海量的关键词的情形。
全文检索算法也不适用与本方案针对的场景,全文检索通常是少量(一个或几个)的关键词的检索,一般以原始文本的预处理/分词为主,无法用于海量的关键词的高效检索。
发明内容
发明目的:本发明用以解决如何在任意的一段文本数据中,快速、精确地识别出存在哪些指定的关键词,而且适用于关键词的数量非常庞大的场景。
技术方案:为实现上述发明目的,本发明可采用以下技术方案:
一种在任意文本中匹配识别海量关键词的方法,包括以下步骤,
(1)、关键词库设立:
建立一级词库,把原始词库作为二级词库,用以减少一级词库中的词条数量,使一级词库能直接装载到计算机内存中;
(2)、关键词的匹配和识别,包括:
(2.1)、输入文本X,并定位到文本X的起始位置;
(2.2)、自起始位置读取文本X中的一个字符C,以字符C为关键字符Key在一级词库中查找,若不存在该字符C则重新读取字符C的下一个字符再在一级词库中查找直至找到一级词库中存在对应的字符后,进入步骤(2.3);
(2.3)、取一词级库中Key对应的长度L和尾字符T,依据长度L和尾字符T,判断文本X剩余长度是否大于等于L,并且当前位置+L处的字符是否等于T,如不匹配则回到步骤(2.2),如匹配则进入步骤(2.4);
(2.4)、从文本X当前位置取L长度子串S,到二级词库中进行完整匹配;若在二级词库中未找到匹配则回到步骤(2.2),如在二级词库中找到匹配则进入步骤(2.5);
(2.5)、记录匹配结果,并直接跳过L长度。
进一步的,所述步骤(2.2)中,若字符C的位置已经到文本X中的结尾,则结束匹配和识别并输出匹配和识别结果。
进一步的,步骤(1)中,取关键字词条的首、尾字符和总长度,生成对应一级词库条目。
进一步的,采用字库并行化处理:
步骤(1)中,将原始关键词库物理分割为多个二级词库;
在步骤(2)中,由主线程将待处理的文本复制为多份,依据二级库的个数,启动多个线程同时进行处理,每个线程扫描独立的文本副本,使用不同的二级关键词库,互不干扰,主线程等待每个处理线程完成后,获取结果并统一合并处理结果。
进一步的,二级词库在计算机内存中采用LevelDB的K-V型存储机制关键词库存储方式。
有益效果:本发明提出的方法,通过优化关键词库,建立两级词库,采用预匹配算法、并行算法等手段,有效解决了在任意的一段文本数据中,快速、精确地识别和匹配关键词的难题,本方法适用于关键词的数量非常庞大(千万到亿数量级)的场景,在测试环境下,3千万条关键词(真实业务数据),对1K随机文本的处理可以在1秒之内完成,并且结果中可以给出识别的关键词、在文本中的位置、以及匹配到的次数。
附图说明
图1为本发明中设置一级词库和二级词库的示意图。
图2为本发明中关键词的匹配和识别的流程图。
具体实施方式
术语解释:
关键词:指系统中已知的词汇表,比如:企业/单位的名称、组织机构代码,人的姓名、身份证号等代表某个主体的标识符等等。也可以是其他任意的通用词汇。关键词条目相对固定不变,长度一般为10~50字符之间。
匹配/识别:对任意的文本进行算法分析处理,分析处理的结果可以精确的确定某个关键词在文本中存在、或不存在、出现的位置、出现的次数等信息。
本发明公开一种在任意文本中匹配识别海量关键词的方法,包括以下步骤,
(1)、关键词库设立:
如图1所示,建立一级词库,把原始词库作为二级词库,用以减少一级词库中的词条数量,使一级词库能直接装载到计算机内存中;同时,一级词库的条目应表征二级词库条目的某些特征,例如:原始词库的某个条目为:“南京精益求精工程无限责任公司”,取词条的首、尾字符和总长度,生成对应一级词库条目“[南]:14,司”,因为在征信/信用的计算机数据库领域中,原始词库中基本都是企业的名称,所以取首尾字符和总长度后,会有很多是重复的,因此一级词库中条目数量就不会很多了。一级词库的处理可以根据具体场景需要,采用不同的策略灵活实现。
(2)、关键词的匹配和识别,
关键词的匹配和识别,是通过对输入文本的扫描完成的,要想达到快速高效的目地,就只能做单趟扫描,不能多趟,也不能回溯。单趟扫描的算法过程如图2所示:包括以下步骤:
(2.1)、输入文本X,并定位到文本X的起始位置;
(2.2)、自起始位置读取文本X中的一个字符C,以字符C为关键字符Key在一级词库中查找,若不存在该字符C则重新读取字符C的下一个字符再在一级词库中查找直至找到一级词库中存在对应的字符后,进入步骤(2.3);若字符C的位置已经到文本X中的结尾,则结束匹配和识别并输出匹配和识别结果;
(2.3)、取一词级库中Key对应的长度L和尾字符T,依据长度L和尾字符T,判断文本X剩余长度是否大于等于L,并且当前位置+L处的字符是否等于T,如不匹配则回到步骤(2.2),如匹配则进入步骤(2.4);
(2.4)、从文本X当前位置取L长度子串S,到二级词库中进行完整匹配;若在二级词库中未找到匹配则回到步骤(2.2),如在二级词库中找到匹配则进入步骤(2.5);
(2.5)、记录匹配结果,并直接跳过L长度。
本方法适用于关键词的数量非常庞大(千万到亿数量级)的场景,在测试环境下,3千万条关键词(真实业务数据),对1K随机文本的处理可以在1秒之内完成,并且结果中可以给出识别的关键词、在文本中的位置、以及匹配到的次数。
另外,对于亿级/十亿级别的关键词库,为了进一步提高处理速度,可以采用并行化处理算法,即步骤(1)中,在优化原始词库的时候,根据某种规则(比如按首字符)将原始关键词库物理分割为多个二级词库,每个二级词库规模比较小,更重要的是,在步骤(2)中可以基于多个库,采用多线程技术进行并行处理。具体处理过程为:由主线程将待处理的文本复制为多份,依据二级库的个数,启动多个线程同时进行处理(每个线程扫描独立的文本副本,使用不同的二级关键词库,互不干扰),主线程等待每个处理线程完成后,获取结果并统一合并处理结果。
进一步的改良是,由步骤(2)的匹配和识别方法可知,扫描处理过程中,如果一级词库可以匹配成功,最终还是需要到二级词库中进行精确匹配,如果二级词库采用一般的关系数据库保存,查询效率也会是很大的瓶颈,最重要的是,单趟扫描的处理方式,会产生很多次的查询(虽然通过一级词库预匹配可以大大减少),关系型数据库不能达到预定的目标。经过实践,我们采用了LevelDB这种K-V型存储机制,很好的解决了这个问题(LevelDB的原理在此不做详细介绍),对于3千万的数据,LevelDB的单次随机查询速度基本在毫秒级,甚至零点几毫秒。
Claims (3)
1.一种在任意文本中匹配识别海量关键词的方法,其特征在于,包括以下步骤,
(1)、关键词库设立:
建立一级词库,把原始词库作为二级词库,用以减少一级词库中的词条数量,使一级词库能直接装载到计算机内存中;
(2)、关键词的匹配和识别,包括:
(2.1)、输入文本X,并定位到文本X的起始位置;
(2.2)、自起始位置读取文本X中的一个字符C,以字符C为关键字符Key在一级词库中查找,若不存在该字符C则重新读取字符C的下一个字符再在一级词库中查找直至找到一级词库中存在对应的字符后,进入步骤(2.3);
(2.3)、取一词级库中Key对应的长度L和尾字符T,依据长度L和尾字符T,判断文本X剩余长度是否大于等于L,并且当前位置+L处的字符是否等于T,如不匹配则回到步骤(2.2),如匹配则进入步骤(2.4);
(2.4)、从文本X当前位置取L长度子串S,到二级词库中进行完整匹配;若在二级词库中未找到匹配则回到步骤(2.2),如在二级词库中找到匹配则进入步骤(2.5);
(2.5)、记录匹配结果,并直接跳过L长度;
采用字库并行化处理:
步骤(1)中,将原始关键词库物理分割为多个二级词库;
在步骤(2)中,由主线程将待处理的文本复制为多份,依据二级库的个数,启动多个线程同时进行处理,每个线程扫描独立的文本副本,使用不同的二级关键词库,互不干扰,主线程等待每个处理线程完成后,获取结果并统一合并处理结果;
二级词库在计算机内存中采用LevelDB的K-V型存储机制关键词库存储方式。
2.根据权利要求1所述的在任意文本中匹配识别海量关键词的方法,其特征在于,所述步骤(2.2)中,若字符C的位置已经到文本X中的结尾,则结束匹配和识别并输出匹配和识别结果。
3.根据权利要求1或2所述的在任意文本中匹配识别海量关键词的方法,其特征在于,步骤(1)中,取关键字词条的首、尾字符和总长度,生成对应一级词库条目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811558241.2A CN109783607B (zh) | 2018-12-19 | 2018-12-19 | 一种在任意文本中匹配识别海量关键词的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811558241.2A CN109783607B (zh) | 2018-12-19 | 2018-12-19 | 一种在任意文本中匹配识别海量关键词的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783607A CN109783607A (zh) | 2019-05-21 |
CN109783607B true CN109783607B (zh) | 2023-04-25 |
Family
ID=66497350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811558241.2A Active CN109783607B (zh) | 2018-12-19 | 2018-12-19 | 一种在任意文本中匹配识别海量关键词的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783607B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015884A (zh) * | 2020-08-28 | 2020-12-01 | 欧冶云商股份有限公司 | 一种用户走访数据关键词提取方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018041036A1 (zh) * | 2016-08-29 | 2018-03-08 | 中兴通讯股份有限公司 | 关键词的查找方法、装置及终端 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186669B (zh) * | 2013-03-21 | 2018-07-06 | 厦门雅迅网络股份有限公司 | 关键词快速过滤方法 |
CN105550298B (zh) * | 2015-12-11 | 2019-12-10 | 北京搜狗科技发展有限公司 | 一种关键词模糊匹配的方法及装置 |
CN108304484A (zh) * | 2017-12-29 | 2018-07-20 | 北京城市网邻信息技术有限公司 | 关键词匹配方法及装置、电子设备和可读存储介质 |
CN108509547B (zh) * | 2018-03-20 | 2020-12-11 | 中国长城科技集团股份有限公司 | 一种信息管理方法、信息管理系统及电子设备 |
CN108830670B (zh) * | 2018-04-29 | 2021-11-19 | 杭州画客信息工程有限公司 | 一种业务交互订单平台的用户管理方法 |
CN108899030A (zh) * | 2018-07-10 | 2018-11-27 | 深圳市茁壮网络股份有限公司 | 一种语音识别方法及装置 |
-
2018
- 2018-12-19 CN CN201811558241.2A patent/CN109783607B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018041036A1 (zh) * | 2016-08-29 | 2018-03-08 | 中兴通讯股份有限公司 | 关键词的查找方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN109783607A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6574624B1 (en) | Automatic topic identification and switch for natural language search of textual document collections | |
KR100721406B1 (ko) | 카테고리별 검색 로직을 이용한 상품 검색 시스템 및 방법 | |
CN112035599B (zh) | 基于垂直搜索的查询方法、装置、计算机设备及存储介质 | |
US20180018564A1 (en) | Artificial intelligence-based prior art document identification system | |
CN111160017A (zh) | 关键词抽取方法、话术评分方法以及话术推荐方法 | |
CN112487140A (zh) | 问答对话评测方法、装置、设备及存储介质 | |
CN111444330A (zh) | 提取短文本关键词的方法、装置、设备及存储介质 | |
CN111159363A (zh) | 一种基于知识库的问题答案确定方法及装置 | |
CN110597844B (zh) | 异构数据库数据统一访问方法及相关设备 | |
CN102479191A (zh) | 提供多粒度分词结果的方法及其装置 | |
CN110134777B (zh) | 问题去重方法、装置、电子设备和计算机可读存储介质 | |
CN110413972B (zh) | 一种基于nlp技术的表名字段名智能补全方法 | |
CN112100377B (zh) | 文本分类方法、装置、计算机设备和存储介质 | |
CN107590124B (zh) | 按场景对同义词替换并根据按场景归类的标准词组比对的方法 | |
CN111930933A (zh) | 一种基于人工智能的检务案件处理方法及装置 | |
CN109885641B (zh) | 一种数据库中文全文检索的方法及系统 | |
CN112380848B (zh) | 文本生成方法、装置、设备及存储介质 | |
CN109977397B (zh) | 基于词性组合的新闻热点提取方法、系统及存储介质 | |
CN109783607B (zh) | 一种在任意文本中匹配识别海量关键词的方法 | |
Boland et al. | Distant Supervision for Silver Label Generation of Software Mentions in Social Scientific Publications. | |
US20040186833A1 (en) | Requirements -based knowledge discovery for technology management | |
Bruno et al. | Natural language processing and classification methods for the maintenance and optimization of US weapon systems | |
KR20130045054A (ko) | 키워드 추출 및 정련 시스템과 그 방법 | |
Marujo et al. | Textual event detection using fuzzy fingerprints | |
CN112380445B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |