跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 中使用 flashtext 模块进行关键词提取与替换

Python 使用 flashtext 库实现高效的关键词提取与替换。通过初始化 KeywordProcessor 对象,可添加单个或批量关键词,支持别名映射及大小写敏感设置。利用 extract_keywords 获取匹配项及位置信息,replace_keywords 执行替换操作。高级功能包括附加额外信息及自定义单词边界符。该库基于 Aho-Corasick 算法优化,适用于大规模文本处理场景。

晚风告白发布于 2025/2/7更新于 2026/5/3121 浏览
Python 中使用 flashtext 模块进行关键词提取与替换

前言

下面介绍如何在 Python 中基于 flashtext 模块使用 FlashText 算法进行字符串查找和替换。

1. 准备

开始之前,你需要确保 Python 和 pip 已经成功安装在电脑上。

请选择以下任一种方式输入命令安装依赖:

  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.'))
# []

目录

  1. 前言
  2. 1. 准备
  3. 2. 基本使用
  4. 1. 初始化关键字处理器
  5. 2. 添加关键词
  6. 3. 处理目标句子并提取相应关键词
  7. 4. 结果
  8. ['New York', 'Bay Area']
  9. 1. 初始化关键字处理器
  10. 2. 添加关键词
  11. 3. 替换关键词
  12. 4. 结果
  13. 'I love New York and NCR region.'
  14. 1. 初始化关键字处理器,注意设置大小写敏感 (case_sensitive) 为 TRUE
  15. 2. 添加关键词
  16. 3. 处理目标句子并提取相应关键词
  17. 4. 结果
  18. ['Bay Area']
  19. 1. 初始化关键字处理器
  20. 2. 添加关键词
  21. 3. 处理目标句子并提取相应关键词,并标记关键词的起始、终止位置
  22. 4. 结果
  23. [('New York', 7, 16), ('Bay Area', 21, 29)]
  24. 1. 初始化关键字处理器
  25. 2. 添加关键词
  26. 3. 获取所有关键词
  27. output: {'colour': 'color', 'j2ee': 'Java'}
  28. 1. 初始化关键字处理器
  29. 2. (第一种)通过字典批量添加关键词
  30. 2. (第二种)通过数组批量添加关键词
  31. 3. 第一种的提取效果如下
  32. output ['product management', 'java']
  33. 1. 初始化关键字处理器
  34. 2. 通过字典批量添加关键词
  35. 3. 提取效果如下
  36. ['product management', 'java']
  37. 4. 单个删除关键词
  38. 5. 批量删除关键词,也是可以通过词典或者数组的形式
  39. 6. 删除了 java programing 关键词后的效果如下
  40. ['product management']
  41. 3. 高级使用
  42. 1. 初始化关键字处理器
  43. 2. 添加关键词并附带额外信息
  44. 3. 效果如下
  45. [('Monument', 'Taj Mahal'), ('Location', 'Delhi')]
  46. 1. 初始化关键字处理器
  47. 2. 添加关键词
  48. 3. 正常效果
  49. ['Big Apple']
  50. 4. 将 '/' 作为单词一部分
  51. 5. 优化后的效果
  52. []
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Layui 框架中 Unity WebGL Tab 切换黑屏问题的解决方案
  • Java 自动装箱与拆箱详解
  • AgentScope-Java 框架特性及快速入门
  • JavaScript 流程控制与数组基础实战
  • Windows 系统 Docker Desktop 下载、安装及启动故障解决方案
  • Coze 工作流实战:零门槛生成 AI 漫剧全流程解析
  • 1Panel 部署 Ollama 与 Open WebUI 构建私有化 AI 平台
  • OpenAI o1 模型的核心价值与行业意义分析
  • Android WebView 版本升级方案详解
  • 使用码云 Gitee 登录 Ruoyi-Vue-Pro 配置指南
  • LazyLLM 多 Agent 应用全流程实践:从源码部署到可视化 Web 调试的低代码方案
  • DFT 中的 OCC 架构设计与应用
  • LangChain 模型调用详解:OpenAI、Google 与 HuggingFace 集成
  • Ubuntu 22.04 安装 NVIDIA RTX PRO 6000 Blackwell 驱动指南
  • 多模态动态融合模型 PDF:理论解读、代码修复与参数详解
  • AI + 鸿蒙游戏:会是下一个爆点吗?
  • OpenClaw 飞书机器人从 0 到 1 配置指南
  • OpenClaw 接入飞书:机器人配置与文档表格操作指南
  • Dubbo 服务降级与 Mock 机制实战解析
  • 前端关系图组件 relation-graph 推荐与使用

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online