FlashText是GitHub上的另一个开源系统Python库,如同以前提到的,他在获得关键字和更换关键字每日任务上具有非常高的特性。本文详细说明一下下flashtext的应用,所需要的可以了解一下
在平时的些的较小规模的信息的过虑、清理环节中应用比较多的是正则匹配,但随着数据量级的扩大,正则匹配也显得有一些力不从心了。
正则匹配在这个10k的词库文件中检索15k个关键字的时长大概是0.165秒。但对于Flashtext来讲只需0.002秒。因而,在这件事情上Flashtext的速率大概比正则匹配快82倍。
从上述的示例图的性能评测中,不难发现伴随着我们应该处理标识符愈来愈多,正则匹配的响应速度大部分都是线形增大的。但是,Flashtext基本上是个变量定义。
1、提前准备flashtext环境
根据pip的方法来组装flashtext,或是其他的方式也可以的,这儿默认设置采用的是清华大学的镜像站。
pipinstallflashtext-ihttps://pypi.tuna.tsinghua.edu.cn/simple
2、加词
这儿加词时是由多带带关键字的来导入到关键词词库中,使用add_keyword函数公式来加上。初次主要参数表明必须加上核心关键词,下一个主要参数也表示为第一位关键字的别称,如果关键词被找到则显示的是别称的方式,要是没有应用下一个主要参数做为别称则或者表明原先的名字。
fromflashtextimportKeywordProcessor #复位关键词词库Cpu processor=KeywordProcessor() #基本方法加词 processor.add_keyword('Python') #别称方法加词 processor.add_keyword('Scala','Java')
那样各自应用两种形式已将必须核心关键词导入到词库文件Cpu中奖了。
3、提取关键词
根据上一层楼加词,如今词库文件Cpu里已经存有有关键字的内容了,再使用extract_keywords将关键词提取出去就可以。
#在这个字符串数组中获取出关键字信息内容 found=processor.extract_keywords('IlikePythonandScala.') #结论 print(found) #['Python','Java']
结果公示,和我们预料的都是一样的,并Scala也表明为了能Java。
4、更换关键字
更换关键字所使用的是replace_keywords函数,基础是词库文件中具有别称的词汇才会被更换,如同上边的Scala被表明变成的Java相同。
更换1个字符串数组里的Scala关键字,因为Scala对相对应的别称是Java,而一个字符串数组里的Scala需要被更换为Java。
replaced=processor.replace_keywords('IlikeScala.') #结论 print(replaced) #IlikeJava. #Scala果然便被更换为了能Java。
5、获得所有关键字
有的时候,在KeywordProcessor词库文件Cpu中加了什么关键字可能他都记不清楚了,这时候能使用get_all_keywords函数来获得现阶段的所有关键字。
all_keywords=processor.get_all_keywords() #结论 print(all_keywords) #{'python':'Python','scala':'Java'}
6、大批量加词
当关键词词库需要更多关键字的情况下,能通过目录或者词典的形式进行大批量加上。相对应的函数公式各自是add_keywords_from_list、add_keywords_from_dict函数。
#复位1个词典根据用来做批量添加 dict_={ 'java':['java_ee','java_se','java_me'], 'python':['pandas','all'] } #根据词典的方式去大批量加词 processor.add_keywords_from_dict(dict_) #从批量添加核心关键词中搭配关键字 result=processor.extract_keywords('lookingforjava_eeandpandas.') #结论 print(result) #['java','python'] #根据目录的方式大批量加词 processor.add_keywords_from_list(['scala','python','scala','go']) #根据get_all_keywords查询一下所有关键字 all_keywords=processor.get_all_keywords() #结论 print(all_keywords) #{'python':'python','pandas':'python','scala':'scala','java_ee':'java','java_se':'java','java_me':'java','all':'python','go':'go'}
发觉所有核心关键词早已导入到词库文件Cpu中,而且重复不容易再度加上。
7、批量删除关键字
批量删除词库文件Cpu中核心关键词同是主要有两种方式,有一个是目录、另一个就是词典。相对应的函数公式各自是remove_keywords_from_list、remove_keywords_from_dict函数。
#大批量移出页面上核心关键词 processor.remove_keywords_from_list(['python','java_ee','java_me']) #大批量移出词典中核心关键词 processor.remove_keywords_from_dict({'python':['pandas','all']}) #根据get_all_keywords查询一下所有关键字 all_keywords=processor.get_all_keywords() #结论 print(all_keywords) #{'scala':'scala','java_se':'java','go':'go'}
发觉必须移出核心关键词早已被所有移除开。
8、开发效率比照
能够更丰厚的视觉效果,找了一个两个flashtext在检索和更换关键字过程的高效率前后对比能够简单明了。
flashtext、正则匹配检索高效率比照
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129079.html
FlashText是GitHub上的另一个开源系统Python库,如同以前提到的,他在获得关键字和更换关键字每日任务上具有非常高的特性。本文详细说明一下下flashtext的应用,所需要的可以了解一下 在平时的些的较小规模的信息的过虑、清理环节中应用最多的是正则匹配,但随着数据量级的扩大,正则匹配也显得有一些力不从心了。 正则匹配在这个10k的词典中查寻15k个关键字的时长大概是0.165...
摘要:如果语句中使用了子查询集合操作临时表等情况,会给列带来很大的复杂性。会递归执行这些子查询,把结果放在临时表里。查询优化器从中所选择使用的索引。该字段显示了查询优化器通过系统收集的统计信息估算出来的结果集记录条数。 引言 优化SQL,是DBA常见的工作之一。如何高效、快速地优化一条语句,是每个DBA经常要面对的一个问题。在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤。然...
摘要:可能有的老手觉得我写得很啰嗦,但其实很多新手可能都不知道这些细节,所以我把我在分析新浪微博模拟登陆的过程全写了出来。 这篇文章于去年4月发布在我的简书,现在把它放到这里,主要是为了宣传自己的分布式微博爬虫。下面是主要内容,希望能帮到有这个需求的朋友 最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少...
阅读 889·2023-01-14 11:38
阅读 833·2023-01-14 11:04
阅读 684·2023-01-14 10:48
阅读 1887·2023-01-14 10:34
阅读 891·2023-01-14 10:24
阅读 750·2023-01-14 10:18
阅读 479·2023-01-14 10:09
阅读 519·2023-01-14 10:02