范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

告别正则表达式,这个Python库可以快M倍

  FlashText 算法是由 Vikash Singh 于2017年发表的大规模关键词替换算法,这个算法的时间复杂度仅由文本长度(N)决定,算法时间复杂度为O(N)。
  而对于正则表达式的替换,算法时间复杂度还需要考虑被替换的关键词数量(M),因此时间复杂度为O(MxN)。
  简而言之, 基于FlashText算法的字符串替换比正则表达式替换快M倍以上,这个M是需要替换的关键词数量,关键词越多,FlashText算法的优势就越明显 。
  下面就给大家介绍如何在 Python 中基于  flashtext  模块使用  FlashText  算法进行字符串查找和替换,如果觉得对你的项目团队很有帮助,请记得帮作者转发一下哦。
  1.准备
  开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
  (可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
  (可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
  请选择以下任一种方式输入命令安装依赖 :
  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
  pip install flashtext
  2.基本使用
  提取关键词
  一个最基本的提取关键词的例子如下:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. 添加关键词
  keyword_processor.add_keyword("Big Apple"  , "New York"  )
  keyword_processor.add_keyword("Bay Area"  )
  # 3. 处理目标句子并提取相应关键词
  keywords_found = keyword_processor.extract_keywords("I love Big Apple and Bay Area."  )
  # 4. 结果
  print(keywords_found)
  # ["New York", "Bay Area"]
  其中    add_keyword    的第一个参数代表需要被查找的关键词,第二个参数是给这个关键词一个别名,如果找到了则以别名显示。
  替换关键词
  如果你想要替换关键词,只需要调用处理器的    replace_keywords    函数:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. 添加关键词
  keyword_processor.add_keyword("New Delhi"  , "NCR region"  )
  # 3. 替换关键词
  new_sentence = keyword_processor.replace_keywords("I love Big Apple and new delhi."  )
  # 4. 结果
  print(new_sentence)
  # "I love New York and NCR region."
  关键词大小写敏感
  如果你需要精确提取,识别大小写字母,那么你可以在处理器初始化的时候设定    sensitive    参数:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器, 注意设置大小写敏感(case_sensitive)为TRUE
  keyword_processor = KeywordProcessor(case_sensitive=True  )
  # 2. 添加关键词
  keyword_processor.add_keyword("Big Apple"  , "New York"  )
  keyword_processor.add_keyword("Bay Area"  )
  # 3. 处理目标句子并提取相应关键词
  keywords_found = keyword_processor.extract_keywords("I love big Apple and Bay Area."  )
  # 4. 结果
  print(keywords_found)
  # ["Bay Area"]
  标记关键词位置
  如果你需要获取关键词在句子中的位置,在    extract_keywords    的时候添加   span_info=True    参数即可:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. 添加关键词
  keyword_processor.add_keyword("Big Apple"  , "New York"  )
  keyword_processor.add_keyword("Bay Area"  )
  # 3. 处理目标句子并提取相应关键词, 并标记关键词的起始、终止位置
  keywords_found = keyword_processor.extract_keywords("I love big Apple and Bay Area."  , span_info=True  )
  # 4. 结果
  print(keywords_found)
  # [("New York", 7, 16), ("Bay Area", 21, 29)]
  获取目前所有的关键词
  如果你需要获取当前已经添加的所有关键词,只需要调用处理器的    get_all_keywords    函数:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. 添加关键词
  keyword_processor.add_keyword("j2ee"  , "Java"  )
  keyword_processor.add_keyword("colour"  , "color"  )
  # 3. 获取所有关键词
  keyword_processor.get_all_keywords()
  # output: {"colour": "color", "j2ee": "Java"}
  批量添加关键词
  批量添加关键词有两种方法,一种是通过词典,一种是通过数组:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. (第一种)通过字典批量添加关键词
  keyword_dict = {
  "java"  : ["java_2e"  , "java programing"  ],
  "product management"  : ["PM"  , "product manager"  ]
  }
  keyword_processor.add_keywords_from_dict(keyword_dict)
  # 2. (第二种)通过数组批量添加关键词
  keyword_processor.add_keywords_from_list(["java"  , "python"  ])
  # 3. 第一种的提取效果如下
  keyword_processor.extract_keywords("I am a product manager for a java_2e platform"  )
  # output ["product management", "java"]
  单一或批量删除关键词
  删除关键词也非常简单,和添加类似:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. 通过字典批量添加关键词
  keyword_dict = {
  "java"  : ["java_2e"  , "java programing"  ],
  "product management"  : ["PM"  , "product manager"  ]
  }
  keyword_processor.add_keywords_from_dict(keyword_dict)
  # 3. 提取效果如下
  print(keyword_processor.extract_keywords("I am a product manager for a java_2e platform"  ))
  # ["product management", "java"]
  # 4. 单个删除关键词
  keyword_processor.remove_keyword("java_2e"  )
  # 5. 批量删除关键词,也是可以通过词典或者数组的形式
  keyword_processor.remove_keywords_from_dict({"product management"  : ["PM"  ]})
  keyword_processor.remove_keywords_from_list(["java programing"  ])
  # 6. 删除了java programing关键词后的效果如下
  keyword_processor.extract_keywords("I am a product manager for a java_2e platform"  )
  # ["product management"]
  3.高级使用
  支持额外信息
  前面提到在添加关键词的时候第二个参数为其别名,其实你不仅可以指示别名,还可以将额外信息放到第二个参数中:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  kp = KeywordProcessor()
  # 2. 添加关键词并附带额外信息
  kp.add_keyword("Taj Mahal"  , ("Monument"  , "Taj Mahal"  ))
  kp.add_keyword("Delhi"  , ("Location"  , "Delhi"  ))
  # 3. 效果如下
  kp.extract_keywords("Taj Mahal is in Delhi."  )
  # [("Monument", "Taj Mahal"), ("Location", "Delhi")]
  这样,在提取关键词的时候,你还能拿到其他一些你想要在得到此关键词时输出的信息。
  支持特殊单词边界
  Flashtext 检测的单词边界一般局限于 w [A-Za-z0-9_] 外的任意字符,但是如果你想添加某些特殊字符作为单词的一部分也是可以实现的:
  from   flashtext import   KeywordProcessor
  # 1. 初始化关键字处理器
  keyword_processor = KeywordProcessor()
  # 2. 添加关键词
  keyword_processor.add_keyword("Big Apple"  )
  # 3. 正常效果
  print(keyword_processor.extract_keywords("I love Big Apple/Bay Area."  ))
  # ["Big Apple"]
  # 4. 将 "/" 作为单词一部分
  keyword_processor.add_non_word_boundary("/"  )
  # 5. 优化后的效果
  print(keyword_processor.extract_keywords("I love Big Apple/Bay Area."  ))
  # []
  4.结尾
  个人认为这个模块已经满足我们的基本使用了,如果你有一些该模块提供的功能之外的使用需求,可以给 flashtext 贡献代码:
  https://github.com/vi3k6i5/flashtext
  附 FlashText 与正则相比  查询关键词  所花费的时间之比:
  附 FlashText 与正则相比  替换关键词  所花费的时间之比:
  这篇文章如果对你有帮助的话,记得转发一下哦。

凤凰山凤岩古庙,建筑风采登上了深圳的另一座山峰凤凰山,不过只上到了次峰,没上到主峰。来一组华为Mate40Pro拍摄的片子,记录凤凰山上的风光,凤岩古庙的建筑很不错,庙前五星红旗迎风飘扬!凤凰山凤岩古庙,西岸美术馆与蓬皮杜中心重磅呈献蓬皮杜中心典藏展继2019年开馆大展时间的形态后,西岸美术馆与蓬皮杜中心五年展陈合作将于2021年7月28日至2023年2月5日倾力呈现第二个常设大展万物的声音,以物贯穿叙事,溯源现当代主义史的发五倍潜望式超长焦记录广州长隆野生动物的风采在穗多年,第一次去广州长隆野生动物世界,大熊猫,狮子,斑马,老虎,骆驼,大象,长颈鹿,獴哥,它的视场融合技术大大提升了3。04。6倍变焦的画质,爽!来自华为Mate40Pro五倍潜信息可视化应用是提升使用体验的有效方式之一根据美国哈佛商学院有关研究人员的分析资料表明,人的大脑每天通过五种感官在接受外部信息的比例分别为味觉1触觉1。5嗅觉3。5听觉11以及视觉83。显然,通过产品信息可视化应用是能够有飞利浦平板M9X夏日出新,去开启你的掌上世界近期,飞利浦平板系列产品正式推出M9X高性能兼优大屏的现代高性价安卓系平板。新品采用行业各高新技术及用材打造,搭载主流10。1英寸大屏,拥有超稳定高速虎贲T610引擎实力,能够高度被称为非洲美国的利比里亚为何经济萧条战乱不断?说到利比里亚,大家有个说法,喜欢说它是非洲的美国。这个国家几乎照搬了美国的制度,并且在1959年就和美国人签了共同防御条约,可以说受到老大哥美利坚的贴心关注。并且这地方的环境也很棒看这里,了解飞利浦PSE0550更多一些Q拍摄效果是否清晰?画质如何?答飞利浦PSE0550采用先进12。8英寸CMOS传感器以及高品质镜头,能够顺畅进行4K级超高清视频像素输出处理,同时设备具备灵敏的感光性及处理能力,飞利浦PSE0540高质量线上会议,突破声音界限数字虚拟与现实世界无缝交接,视听感官界限被无限放大,在当代被千万高速网丝覆盖的信息空间里,每一个人都拥有着随时开展隔空对话的能力,而专为现代商务会议量身打造的高保真会议麦克风飞利浦拉丁裔正在成为美国人的第二族群?一说起美国的少数族裔,大家可能首先想到的是非洲裔,毕竟年初BLM运动席卷全美,闹得沸沸扬扬。但是真正说的上美国最多的少数族裔的却不是非洲裔,而是拉丁裔。拉丁裔又叫做西班牙语裔,一般PLC云网关,PLCHMI联网优选在工业控制领域,客户的行业和需求千差万别,对PLC网关要求也不尽相同。总体来说客户需求分为两类一类是需要远程调试和更新PLCHMI的程序一类是需要实时监控设备数据,用户需要PLC网是正义还是生意?两伊战争沦为了美国人挣钱的戏码?两伊战争是中东世界两大产油国的一次激烈对抗,可以说打到几乎是家家带孝的悲惨局面。根据柯南道尔的石油大棋局下一个目标中国中的描述,战争造成超过150万人伤亡,数百万人流离失所。以死亡
暴跌1600元,6400万四摄无线充电128GB,友商高素质旗舰大降价现在手机圈的竞争非常激烈,纵观整个手机市场,哪怕就是2021年上半年发布的新款5G手机,许多都出现了明显的价格跳水。随着新品的不断涌现,许多老款高素质手机也开启了大降价清仓模式。其荣耀Magic系列旗舰机最新爆料这次是直面屏,性能不比上一代弱朋友们,大家好!欢迎您点开笑呵呵的小丑的文章,您的每一次浏览都是对小编最大的鼓励!事不宜迟,咱们进入本篇的正题。一说到荣耀,想必大家都知道它之前是华为老大哥的子品牌,现如今已经是孤国家电网到底有多强大?国家电网到底有多强大?大家可不要小看国家电网,它的技术实力可以碾压全球。国家电网成立于2002年,国家电网(StaeGrid)是国家控股公司,它是国家能源安全和国民经济命脉国企。国6。98万的纯电动小车,长得很可爱,上下班开会很拉风很多人对于汽车的花费没有太多概念,其实燃油车每年都要花费车主很多钱,就以一辆10万家用小车为例子,一年保险费用按照4千来算,每年要两次保养,一次要500元,也就是1千元,一年按照两iphone会步诺基亚的后尘吗?你认为它距离衰落还有多远?作为一名果粉,尽量持着客观的态度来回答这个问题!首先苹果与诺基亚的情况很有可能是不同的,但是任何一个企业都不能保证它一定可以屹立不倒,而苹果虽然已经破万亿,但是它依然可以衰落,但是当虹科技专题研究智能视频算法领先,5G时代开启新篇章(报告出品方作者东方证券,浦俊懿)一公司深耕智能视频领域,聚焦传媒及公共安全两大赛道1。1公司持续深化智能视频业务布局,核心算法行业领先公司一直专注于智能视频技术的算法研究,主要产东芝电视再发OLED旗舰X8900KF系列,或将重新定义电视音画8月26日,东芝电视举办线上发布会,正式推出全新OLED旗舰X8900KF系列。作为东芝电视在OLED领域的又一明星产品,火箭炮电视X8900KF早在发布之前就已经引发业内热议,这疑似小米CC系列相关参数曝光,一亿像素加持,支持120Hz高刷其实小米CC系列新机的相关爆料已经出现了很长一段时间了,不过一直都是比较零碎的消息,而且非常的模糊,很难确定新机的相关消息。不过根据之前的相关爆料可以确定小米CC系列的新机将会主打华为智慧屏如何免费实现看电视频道直播现在的智能电视都可以通过软件实现看电视免费的功能,别在傻傻交有线电视费用了!首先机顶盒既浪费了电视柜空间还不美观,到处都是数据线,积灰不说,还存在安全隐患,对于有孩子的家庭来说极不腾讯视频超前点播再起争议腾讯视频因为超前点播被点名这个事相信大家都看过了吧!腾讯不是挺有钱的吗,这个真不至于。最近腾讯视频上面的扫黑风暴不是在热播吗,大家都挺爱看对吧,小编也是一直追着呢。结果呢,人一看这不再是放大版手机OPPO苹果真我vivo平板曝光此前手机一直挤压着平板电脑的销售份额,很多人一度认为平板电脑就是放大的手机,压根没有必要买。不过在疫情之下,平板电脑却销售火爆,从2020年第二季度到年末,整个平板电脑销量增长11